apache mod_security不记录某些POST数据

时间:2019-07-16 04:59:00

标签: brute-force owasp mod-security

在Apache访问日志中,我看到太多条目,其中包含:

POST /wp-login.php HTTP/1.1" 302

指示成功登录(因为状态为302)-太快了,以至于无法进行真正的(人类)登录。

我想查看其POST数据中的内容,因此我安装了mod_security 2.x,以及OWASP 3.1.0。

但是我在modsec_audit.log中看不到任何这些条目都被mod_security捕获

我确实在modsec_audit.log中看到了其他POST事务,所以我认为mod_security在起作用。

我想知道OWASP Wordpress排除规则是否在抑制它,如果是的话,如何更改这些规则,使其在不拒绝真正登录的情况下记录POST数据?

1 个答案:

答案 0 :(得分:0)

通常,ModSecurity仅为其阻止的请求添加审核日志。这是因为这些请求通常是您希望获得更多信息的请求,以了解其被阻止的原因。另外,您不希望审核日志记录每个请求,因为它们都是大条目,并且即使在使用不当的Web服务器上,日志也会变得很大。

在这种情况下,该请求未被ModSecurity阻止,并被传递回302请求,因此我不希望该请求出现在通常是ModSecurity设置中的审核日志中。

如评论中所述,您的SecAuditEngine配置设置被设置为RelevantOnly,这是遵循上述逻辑的典型设置。因此,您看到的其他POST条目必须是针对最终被ModSecurity阻止的POST请求。将SecAuditEngine的值更改为On以记录所有事务,您应该看到想要的内容。正如我所说的那样,这将记录大量数据,因此您可能只希望在短时间内打开它。或者,您可以编写一条规则以仅打开AuditEngine来减少这些交易

SecRule REQUEST_URI “@beginswith /wp-login.php” \
“phase:2,id:1234,nolog,ctl:auditEngine=On,pass”

还应注意,这将记录包括密码(在pwd参数中)的所有POST参数。这被认为是非常糟糕的形式(即使系统管理员也不应该知道密码,因为它们应作为一种哈希方式存储),因此您应清除此参数以防止通过首先设置以下规则将其记录到审核日志中:

SecRule ARGS_NAMES "pwd" "phase:5,id:1233,nolog,pass,sanitiseMatched,t:lowercase"