数字化技能提升教程,数字化时代生存宝典

Nginx ModSecurity部署教程

浏览:143

ModSecurity是一套开源Web应用防火墙引擎,OWASP Core Rule Set简称CRS,提供针对SQL注入、跨站脚本和协议异常等常见攻击的检测规则。

ModSecurity不能代替程序漏洞修复。规则启用不当还可能拦截正常请求,因此应先在测试环境或检测模式运行。

一、安装ModSecurity组件

Ubuntu或Debian的软件包名称可能为:

apt update
apt install libnginx-mod-http-modsecurity modsecurity-crs -y

不同系统仓库提供的Nginx模块和配置路径可能不同。安装后检查模块是否加载:

nginx -V 2>&1 | grep -i modsecurity

如果系统仓库没有兼容模块,应使用发行版支持的动态模块或重新编译方案,不要混装不同版本的Nginx组件。

二、创建主规则配置

常见做法是复制推荐配置:

mkdir -p /etc/nginx/modsec
cp /etc/modsecurity/modsecurity.conf-recommended \
   /etc/nginx/modsec/modsecurity.conf

先使用检测模式:

SecRuleEngine DetectionOnly

然后创建:

vim /etc/nginx/modsec/main.conf

根据实际安装路径加入:

Include /etc/nginx/modsec/modsecurity.conf
Include /usr/share/modsecurity-crs/crs-setup.conf
Include /usr/share/modsecurity-crs/rules/*.conf

CRS目录会因发行版而不同,应先使用软件包文件列表确认真实路径。

三、在Nginx站点启用

在对应的server或location区域中加入:

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;

检查并重新加载:

nginx -t
systemctl reload nginx

四、观察误报后再拦截

先查看检测日志,重点测试:

  • 登录和注册
  • 搜索及评论
  • 文件上传
  • API接口
  • WordPress后台
  • WooCommerce结账
  • 支付及回调接口

确认必要请求未被错误匹配后,再考虑将:

SecRuleEngine DetectionOnly

改为:

SecRuleEngine On

不要为了消除误报直接关闭整套规则。应针对具体规则编号、URL和参数设置最小范围例外。

常见问题

ModSecurity开启后网站返回403怎么办?

先恢复DetectionOnly,查看审计日志中的规则编号和触发参数,再针对实际误报调整规则。

OWASP CRS能阻止所有网站攻击吗?

不能。它主要检测常见攻击模式,网站仍需及时更新程序、限制权限、保护账号并修复代码漏洞。

相关文章
猜你喜欢