WAF不是大站专利:ModSecurity加OWASP免费规则,老站也能上

来源:互联网 时间:2026-08-30

 

WAF这个词听着像金融级配置,其实开源方案零授权费。ModSecurity是老牌WAF引擎,OWASP CRS是一套社区维护的攻击特征规则,两个加起来能挡住绝大多数SQL注入、XSS、路径穿越扫描。你被WebShell和注入攻击折腾过的站,这套东西值得配一次。

Nginx上跑ModSecurity用v3版本(libmodsecurity),主流发行版有包可装。装完引擎只是个空壳,真正干活的是规则集。

# Ubuntu/Debian 安装
apt install libmodsecurity3 libnginx-mod-http-modsecurity

# 下载OWASP CRS规则集
cd /etc/nginx
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v4.5.0.tar.gz
tar zxf v4.5.0.tar.gz && mv coreruleset-4.5.0 crs
cp crs/crs-setup.conf.example crs/crs-setup.conf

# nginx.conf 启用
modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity.conf;
# /etc/nginx/modsecurity.conf
Include /etc/nginx/crs/crs-setup.conf
Include /etc/nginx/crs/rules/*.conf

# 上线初期务必用只检测模式,只记日志不拦截
SecRuleEngine DetectionOnly

DetectionOnly这个设置是整个流程里最关键的一步。CRS规则很激进,富文本编辑器的内容、搜索关键词里的特殊字符都可能被误判成攻击。直接开拦截等于给网站埋雷,先跑一两周只记录模式,看日志里有没有正常业务被标记,把误报规则加白名单。

# 误报处理:比如后台文章发布富文本总被拦
# crs-setup.conf 或单独规则文件
SecRuleUpdateTargetById 942100 "!ARGS:content"
# 意思是942100这条规则不再检查content参数

验证:日志在/var/log/modsec_audit.log,拿测试语句打一下自己的站,比如URL里加个单引号加union select,日志里应该出现对应规则ID和命中记录。误报清理得差不多后,把SecRuleEngine改成On,再观察几天错误日志。

我的建议:老站、有历史包袱的站用DetectionOnly跑一个月再说;新站可以直接开拦截,规则挑着用,SQL注入和文件上传相关的规则留着,爬虫和行为分析类的规则看情况。WAF不是装完就一劳永逸,CRS每月更新,记得跟着升级,规则过期对新攻击就没用了。

数据来源:OWASP Core Rule Set官网

相关文章

标签:

A5创业网 版权所有