You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 16.04下为apt-get安装的Nginx配置ModSecurity方法

适配Ubuntu 16.04 apt安装版Nginx的ModSecurity部署步骤

没问题,我刚好有适配你这种场景的方案——不用重新编译Nginx,全程用apt包管理器就能搞定,步骤如下:

1. 安装带ModSecurity模块的Nginx扩展包

Ubuntu 16.04官方源里的标准nginx包不带ModSecurity,但nginx-extras集成了这个模块。如果你已经装了标准Nginx,安装这个包会平滑替换原有版本,而且不会丢失你的现有配置:

sudo apt-get update
sudo apt-get install nginx-extras

顺便装上ModSecurity的核心工具包:

sudo apt-get install modsecurity

2. 初始化ModSecurity基础配置

先把官方推荐的配置模板复制成正式配置文件:

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

然后编辑这个配置,把默认的“仅检测”模式改成“拦截”模式——毕竟我们要实际防护:

sudo nano /etc/modsecurity/modsecurity.conf

找到SecRuleEngine DetectionOnly这一行,改成:

SecRuleEngine On

保存退出就行(按Ctrl+O回车,再Ctrl+X)。

3. 部署OWASP核心规则集(CRS)

光有ModSecurity引擎还不够,得配上成熟的防护规则。OWASP CRS是业界常用的免费规则集,直接用apt装:

sudo apt-get install modsecurity-crs

同样复制规则集的配置模板:

sudo cp /usr/share/modsecurity-crs/crs-setup.conf.example /usr/share/modsecurity-crs/crs-setup.conf

4. 在Nginx里启用ModSecurity

你可以选择全局启用(所有站点都生效)或者只给特定站点开防护:

全局启用(所有站点)

编辑Nginx的全局配置文件:

sudo nano /etc/nginx/nginx.conf

在http大括号里加上这些配置:

modsecurity on;
modsecurity_rules_file /etc/modsecurity/modsecurity.conf;
modsecurity_rules_file /usr/share/modsecurity-crs/crs-setup.conf;
modsecurity_rules_file /usr/share/modsecurity-crs/rules/*.conf;

仅给特定站点启用

找到你要防护的站点配置文件(比如/etc/nginx/sites-available/your-site.conf),在server大括号里加上面那几行就行。

5. 验证配置并重启Nginx

先检查配置有没有语法错误:

sudo nginx -t

如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful,就没问题,重启Nginx让配置生效:

sudo systemctl restart nginx

6. 测试防护是否生效

可以用curl发个带恶意参数的请求试试,比如:

curl http://你的域名或IP/?id='<script>alert(1)</script>'

如果收到403 Forbidden的响应,说明ModSecurity已经在拦截恶意请求了。也可以看日志确认:

tail -f /var/log/modsecurity/modsecurity.log

日志里会出现对应的拦截记录,证明规则在正常工作。


内容的提问来源于stack exchange,提问作者TrickyExplorer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:21:58