mod_security:什么是行动审计日志?

我正在摆弄mod_security来为特定的URIloggingPOST请求的有效载荷。

正如在这个回应https://serverfault.com/a/729079/292993中提到的一个类似的问题mod_security的AuditEngine的工作原理是这样的:

它也将login到AuditEngine,具体取决于您的SecAuditEngine值设置为:

  1. 如果将SecAuditEngine设置为On,则将所有内容都logging到审计日志中,而不需要上述规则。 这会快速填充日志文件,因此不推荐使用。
  2. 如果您将SecAuditEngine设置为RelevantOnly,那么只会将日志logging到审计引擎以获取某些返回码(由您的SecAuditLogRelevantStatus定义)。 这通常只对错误(5xx)或访问被拒绝(4xx – 尽pipe通常没有404)来完成。 由于您不拒绝访问(大概不会希望!),这不会被logging到审计日志。
  3. 如果SecAuditEngine设置为Off,则永远不会将其logging到审计日志中。

通常最好将SecAuditEngine设置为RelevantOnly(我怀疑这是你已经拥有的)。 正确的方法是使用ctl action给出的其他规则:

SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,log,pass" 

这会强制AuditEngine处于发送请求的状态 – 即使请求成功,通常不会被logging。

记住这一点,如果我必须使用ctl来根据请求级别打开AuditEngine以将某些内容logging到审计日志,那么操作auditlog有什么意义?

我写了你引用的答案,在阅读完你的问题之后进行了一些testing,我意识到这是不准确的。 将更新它。

经过一番实验后,我发现了以下几点:

  • 如果SecAuditEngine设置为On ,那么审计日志将无效,因为请求将被logging。

  • 如果SecAuditEngine设置为Off ,则审计日志将不起作用,因为请求不会被logging。

  • 如果SecAuditEngine设置为RelevantOnly ,则审计日志将导致规则的触发被logging。 即使你不拒绝访问(这是你引用的上述答案中的错误)。

那么auditlogctl:auditEngine=On什么区别ctl:auditEngine=On ? 不多,但我可以看到两个主要的区别:

  1. 当SecAuditEngine设置为off时,审计日志将不起作用。 而ctl:auditEngine=On将起作用。

  2. ctl:auditEngine=On可用于打开审计而不显示实际的规则。 例如,如果您有以下情况:

     SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,nolog,pass" 

    然后请求将被logging在审计日志中,但是将不会提及规则22222224(因为它被设置为nolog )。 这可能是有用的或不是:规则22222224的存在可能会添加混淆,因为这个规则没有实际的安全问题(它只是用来打开AuditEngine),也许你只想要真正的安全规则logging在审计和错误日志。 另一方面,可能会让人们为什么审计日志里有什么东西会被混淆,而没有明显的规则引发它们被放置在那里。

最终,没有什么太大的区别,而且更多的是你想要使用的味道。