启用Apache mod_security WAF防护必须完成加载、初始化、规则激活和运行验证四步闭环:先用apache2ctl -M | grep security确认security2_module (shared)已载入,再查错误日志排除APR版本不匹配;主配置中需设SecRuleEngine On、SecRequestBodyAccess On、SecResponseBodyAccess On及可写SecDataDir;必须加载OWASP CRS规则集,禁用DetectionOnly模式前先观察审计日志;最后以SQLi测试请求验证是否返回403并记录拦截。

启用 Apache mod_security WAF 防护不是装完模块就自动生效,必须完成加载、初始化、规则激活和运行验证四步闭环,缺一不可。
确认模块已正确加载并启用
仅执行 a2enmod security2 不代表模块已运行。需验证两件事:
- 运行
apache2ctl -M | grep security(Ubuntu/Debian)或httpd -M | grep security(RHEL/CentOS),输出应为security2_module (shared) - 检查 Apache 错误日志(如
/var/log/apache2/error.log),确认无ModSecurity: APR compiled version mismatch等报错;若有,说明 mod_security 编译所用 APR 版本与当前 Apache 不匹配,需重装适配包
配置基础运行参数
在主配置文件(如 /etc/modsecurity/modsecurity.conf)中确保以下关键项已设置:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
SecRuleEngine On:生产环境必须开启,DetectionOnly仅用于调试 -
SecRequestBodyAccess On:否则 POST 表单、JSON 等请求体无法检测 -
SecResponseBodyAccess On:若需防敏感信息泄露(如 phpinfo、数据库错误页),此项不可省略 -
SecDataDir指向可写目录(如/var/cache/modsecurity),否则规则初始化失败且无提示
加载有效规则集
mod_security 本身只是引擎,没有规则等于没有子弹:
- 推荐直接使用 OWASP CRS(Core Rule Set),下载后通过
Include加载crs-setup.conf和规则文件 - 避免只写几条
SecRule就认为防护已就绪——规则位置错、phase选错、变量名拼错(如写成ARG而非ARGS)、未关SecResponseBodyAccess导致性能陡增,都会让防护形同虚设 - 首次启用建议先设
SecRuleEngine DetectionOnly,配合SecAuditEngine RelevantOnly和审计日志,观察真实流量匹配情况再切On
验证防护是否真正生效
不能只看 Apache 启动成功,要实测验证:
- 发起典型攻击测试,例如访问
?id=1%27%20UNION%20SELECT%201,2,3--,检查是否返回 403 且审计日志(/var/log/apache2/modsec_audit.log)中有对应拦截记录 - 确认响应状态码是 403(或你设定的
status),而非 200 或 500 —— 后者往往意味着规则未触发或被其他模块提前拦截 - 修改配置后务必执行
systemctl reload apache2(非 restart),否则新规则不加载

















