我目前在 Debian 9.8 上运行 Apache 2.4.25。我正在尝试设置 mod_security 以记录特定 URI 的 POST 请求负载。我在 Debian 服务器上有几个 API,我必须记录除 2 个之外的所有 API。我尝试只记录一个 URI 进行测试,但似乎我尝试的规则不起作用。
我开始关注这个问题但似乎不起作用。每次通话都会被记录下来。即使我注释了两行 SecRule,它仍然会记录每次通话。
我的配置:
# On active le module.
SecRuleEngine On
SecAuditEngine On
# On lui donne un fichier de log.
SecAuditLog /var/log/httpd/website-audit.log
# On l'autorise à accéder au corps des requêtes.
SecRequestBodyAccess on
SecAuditLogParts ABCDEFGHIJZ
# On configure une action par défaut.
SecDefaultAction "nolog,noauditlog,allow,phase:2"
# On définit une règle qui nous permet de logger le contenu des requêtes POST
SecRule REQUEST_METHOD "^POST$" "chain,allow,phase:2,id:13"
SecRule REQUEST_URI "@streq /api/ICM/SendMessage" "auditlog"
我做错了什么?
多谢。
答案1
我想这就是你要找的东西:
SecRule REQUEST_METHOD "!@streq POST" "allow,phase:1,id:13,ctl:auditEngine=Off"
请注意参考:
如果 SecAuditEngine 设置为 On,所有交易都将被记录。 如果是设置为 RelevantOnly,那么您可以使用 noauditlog 操作控制日志记录。
所以,这将是另一个解决方案。
noauditlog 操作仅影响当前规则。如果您仅在一条规则中阻止审计日志记录,则另一条规则中的匹配仍会导致审计日志记录发生。如果您想阻止审计日志记录发生,无论是否有任何规则匹配,请使用 ctl:auditEngine=Off。
但恕我直言,ctl
上面的操作更加清晰。