分享

ngx_waf开启 ModSecurity | 最佳实践

ngx_waf提供的默认规则十分容易被绕过,而且许多用户并没有足够的能力和时间去维护一套可靠的规则。

这种情况下你可以选择启用 ModSecurity (opens new window)并启用 OWSAP(Open Web Application Security Project) 核心规则集 (opens new window)来增强防护能力。

1、第一步:下载规则集

cd /usr/local/src
git clone https://github.com/SpiderLabs/ModSecurity.git
git clone https://github.com/coreruleset/coreruleset.git

第二步:拷贝规则文件

mkdir -p /etc/nginx/rules/modsecurity
cp coreruleset/crs-setup.conf.example /etc/nginx/rules/modsecurity/crs-setup.conf
cp ModSecurity/modsecurity.conf-recommended /etc/nginx/rules/modsecurity/modsecurity.conf
cp ModSecurity/unicode.mapping /etc/nginx/rules/modsecurity/unicode.mapping
cp -r coreruleset/rules /etc/nginx/rules/modsecurity/owasp

第三步:修改规则文件

  1. 编辑 /etc/nginx/rules/modsecurity/modsecurity.conf,将 SecRuleEngine DetectionOnly 修改为 SecRuleEngine on
  2. 编辑 /etc/nginx/rules/modsecurity/modsecurity.conf,在文件末尾追加下列内容。
Include /usr/local/src/ngx_waf/assets/rules/crs-setup.conf
Include /etc/nginx/rules/modsecurity/owasp/*.conf

第四步:加载规则

编辑 nginx 的配置文件:

waf_modsecurity on file=/etc/nginx/rules/modsecurity/modsecurity.conf;

第五步:优化性能

启用规则后会导致性能大幅度降低,这是因为 ModSecurity 的规则引擎十分复杂,但这也为其带来了强大的功能。

一般来说我们无需对一些静态文件进行检查,因此可以根据这一点来优化性能。

编辑 nginx 的配置文件:

location ~* \.(gif|jpg|png|jpeg|webp|bmp|swf)$ {
    waf_modsecurity off;
}

location ~* \.(html|htm|js|css)$ {
    waf_modsecurity off;
}

第六步:重启 nginx

留言