如何在Modsecurity DetectionOnly模式下识别将被拦截的可疑请求
解决ModSecurity DetectionOnly模式下识别潜在拦截请求的方法
检查审计日志的规则匹配记录
在DetectionOnly模式下,拦截类规则(比如OWASP CRS里的block规则)触发时,不会输出Access denied日志,但会保留规则的id、msg等核心信息。确保你的SecAuditLogParts配置包含E部分(记录规则匹配细节),示例配置:SecAuditLogParts ABCEFHJKZ之后在审计日志中搜索带有规则ID(如
[id "942100"])和拦截类描述(如SQL Injection Detected)的条目,这些就是实际拦截模式下会被阻止的请求。把ModSecurity规则信息写入Nginx访问日志
修改Nginx的日志格式,加入$modsecurity_rule_message变量,直接在访问日志中展示触发的规则内容。示例配置:log_format modsec_log '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$modsecurity_rule_message"'; server { # 其他配置... access_log /var/log/nginx/modsec_access.log modsec_log; }配置完成后,所有触发拦截类规则的请求,都会在Nginx访问日志中显示对应的规则描述,直接筛选这些日志条目即可。
利用异常分数标记潜在拦截请求(适用于OWASP CRS)
如果使用OWASP核心规则集,可通过异常分数(ANOMALY_SCORE)判断请求是否会被拦截。添加自定义规则标记这类请求:SecRule TX:ANOMALY_SCORE "@gt 5" "phase:5,t:none,nolog,pass,setvar:tx.potential_block=1"这里的
5是示例阈值(可根据你的CRS配置调整),之后在审计日志中检查是否存在[tx.potential_block "1"]的标记,即可识别会被拦截的请求。
内容的提问来源于stack exchange,提问作者sk2
相关产品推荐
相关产品推荐

