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
第三步:修改规则文件
- 编辑
/etc/nginx/rules/modsecurity/modsecurity.conf
,将SecRuleEngine DetectionOnly
修改为SecRuleEngine on
。 - 编辑
/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
