如何让 mod_security 记录所有 POST 数据?

如何让 mod_security 记录所有 POST 数据?

我目前有一个 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

相关内容