ModSecurity WAF规则:Linux下Apache/Nginx的SQL注入防护实践

193 阅读2分钟

huake_00193_.jpg在Linux环境下,Apache与Nginx作为主流Web服务器,常面临SQL注入等安全威胁。ModSecurity作为开源Web应用防火墙(WAF),可有效检测并阻断此类攻击。以下结合实际场景,阐述基于ModSecurity的SQL注入防护实践。

一、规则配置核心策略****

1. 

请求标准化处理
ModSecurity支持t:syntax转换函数链,可对请求数据进行多阶段解码。例如,通过t:lowercase将所有字符转为小写,配合t:urlDecodeUni处理Unicode编码的攻击载荷,避免攻击者通过编码绕过检测。

2. 

3. 

规则引擎部署
启用OWASP CRS核心规则集(如REQUEST-942-APPLICATION-ATTACK-SQLI.conf),其内置针对SQL注入的特征库(如union select、--注释等)。示例规则片段:

4. 

5. 

apache

6. 

7. 

|   | SecRule REQUEST_URI|ARGS "@rx (?i:(?:union\s+select|--\s*?$))" \ | | - | --------------------------------------------------------------------- | |   | "id:942100,phase:2,block,msg:'SQL Injection Attempt'" |

8. 

该规则匹配URI或参数中的union select或--注释,直接阻断请求并记录日志。

9. 

10. 

自定义白名单规则
针对特定业务场景,可构建白名单规则。例如,某PHP接口仅接受1-3位数字的statid参数:

11. 

12. 

apache

13. 

14. 

 SecRule ARGS:statid "!@rx ^\d{1,3}$" "id:1001,phase:2,deny,msg:'Invalid statid format'"

15. 

二、Nginx与Apache集成优化****

1. 

Nginx集成
通过ngx_http_modsecurity_module加载ModSecurity规则,并启用日志审计:

2. 

3. 

nginx

4. 

5. 

 location / {
 ModSecurityEnabled on;
 ModSecurityConfig modsecurity.conf;
 ModSecurityTransactionLogging on;
 }

6. 

7. 

Apache集成
在httpd.conf中启用mod_security2,并配置规则文件路径:

8. 

9. 

apache

10. 

11. 

 
 IncludeOptional /etc/modsecurity/*.conf
 

12. 

三、防御效果与优化****

1. 

误报处理
初期可设置规则动作为log而非deny,通过日志分析调整规则阈值。例如,某业务因参数含admin触发误报,可通过ctl:ruleRemoveById=942440临时排除。

2. 

3. 

性能调优
对高频API接口,可通过SecRuleRemoveById禁用部分规则,或使用SecAction设置规则组优先级。

4. 

5. 

持续监控
结合ELK日志分析系统,实时监测SQL注入攻击模式,动态更新规则库。

6. 

通过上述实践,ModSecurity可显著降低Linux环境下Web应用的SQL注入风险。实际应用中需结合业务特性,平衡安全与性能,实现精准防护。