mod_security:操作审计日志的意义是什么?

mod_security:操作审计日志的意义是什么?

我正在摆弄 mod_security 来记录特定 URI 的 POST 请求负载。

正如这个回复中所述https://serverfault.com/a/729079/292993对于类似的问题,mod_security 的 AuditEngine 的工作原理如下:

它还将根据您的 SecAuditEngine 值设置记录到 AuditEngine:

  1. 如果您将 SecAuditEngine 设置为 On,则所有内容都会记录到审计日志中,并且不需要上述规则。这会很快填满日志文件,因此不建议这样做。
  2. 如果您将 SecAuditEngine 设置为 RelevantOnly,则它只会将某些返回代码(由您的 SecAuditLogRelevantStatus 定义)记录到审计引擎。这通常只针对错误 (5xx) 或访问被拒绝 (4xx - 虽然通常没有 404) 执行。由于您没有拒绝访问(并且可能不想这样做!),因此这不会记录到审计日志中。
  3. 如果 SecAuditEngine 设置为关闭,那么它将永远不会被记录到审计日志中。

通常最好将 SecAuditEngine 设置为 RelevantOnly(我怀疑您已经这样做了)。正确的方法是使用 ctl 操作给出的其他规则:

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

这会强制 AuditEngine 开启发布请求 - 即使请求成功(通常不会被记录)。

记住这一点,auditlog如果我必须ctl在请求级别打开 AuditEngine 以将某些内容记录到审计日志中,那么这个操作有什么意义呢?

答案1

我写了你引用的那个答案,在阅读你的问题后进行了一些测试,我意识到它并不准确。我会更新它。

经过一些实验,我发现了以下情况:

  • 如果 SecAuditEngine 设置为,那么 auditlog 将不会产生实际效果,因为无论如何请求都会被记录。

  • 如果 SecAuditEngine 设置为离开,则 auditlog 将不起作用,因为无论如何都不会记录该请求。

  • 如果 SecAuditEngine 设置为仅相关,则 auditlog 将导致规则的触发被记录。即使您不拒绝访问(这是您引用的上述答案中的错误)。

auditlog那么和之间有什么区别ctl:auditEngine=On?其实区别不大,但我能看到两个主要区别:

  1. Auditlog当 SecAuditEngine 设置为关闭时将不起作用。而 ctl:auditEngine=On将起作用。

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

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

    然后请求将被记录在审计日志中,但不会提及规则 22222224(因为它被设置为nolog)。这可能有用也可能没用:规则 22222224 的存在可能会增加混乱,因为此规则没有实际的安全问题(它只是用于打开 AuditEngine),也许您只希望在审计和错误日志中记录真正的安全规则。另一方面,它可能会让人们感到困惑,为什么某些东西会出现在审计日志中,而没有明显的规则触发导致它被放在那里。

最终并没有太大的差异,更多的是一个您想使用哪一种的品味问题。

相关内容