mod_security:如何仅记录特定 URI 的 POST 请求?

mod_security:如何仅记录特定 URI 的 POST 请求?

我目前在 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上面的操作更加清晰。

相关内容