我目前有一个 CentOS 系统,该系统已成功将相关的 mod_security 操作记录到审计日志文件。以下是我的配置:
<IfModule mod_security2.c>
SecRuleEngine On
SecAuditEngine RelevantOnly
SecAuditLog /var/log/httpd/modsec_audit.log
SecDebugLog /var/log/httpd/modsec_debug.log
SecDebugLogLevel 0
SecRequestBodyAccess On
SecDataDir /tmp
SecTmpDir /tmp
SecPcreMatchLimit 250000
SecPcreMatchLimitRecursion 250000
</IfModule>
这将记录 mod_security 由于该SecAuditEngine RelevantOnly
设置而拦截/阻止请求的所有操作。
但是,我希望它另外记录提交到服务器的所有 POST 数据(无论状态如何)。我可以通过设置来实现这一点,SecAuditEngine On
但这会记录所有 GET 和 POST 数据,这有点过头了。我基本上想忽略所有 GET 数据,除非请求被拦截。
有人可以建议如何做到这一点吗?
答案1
制定一个可打开AuditEngine
请求的规则POST
。
类似这样的(未经测试):
SecRule REQUEST_METHOD "POST" "id:1000,phase:2,ctl:auditEngine=On,nolog,pass"
Ctl 操作仅影响当前请求,因此之后它将重置回 RelevantOnly 以供下一个请求。
您还可以创建Sanitise
规则,以确保在登录之前屏蔽密码和信用卡数据等敏感数据。请参见此处:https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#sanitiseArg