我正在寻找有关modsecurity配置遇到的问题的一些帮助。 我们最近发现我们的modsecurity配置没有按照我们的想法行事, 特别是为所有呼叫生成modsecurity审计日志, 我们在SecRule条目中设置了nolog参数。
举个例子:
SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus ^5
SecDefaultAction log,auditlog,deny,status:403,phase:2,t:lowercase,t:replaceNulls,t:compressWhitespace
SecRule REQUEST_FILENAME "^/application(/.*)?$" phase:2,chain,t:none,allow,nolog
SecRule REQUEST_METHOD (?i)^(GET|POST|HEAD)$
SecAction block
对与此条目匹配的请求的期望是,不会对错误日志或审核日志进行日志条目。 实际结果是确实错误日志仍为空,但审计日志已填满。
在审核日志中,我们可以确认请求是(在B区块中):
GET /application/that/does/something?and=has&some=parameters
我们还可以确认引用的SecRule是匹配的,就像我们删除它一样,该请求被认为是禁止的。
我们想要实现的目标:审核日志中没有匹配规则的条目
提前感谢您提供的任何帮助
答案 0 :(得分:1)
注意:在下面的讨论后从原始答案进行编辑。
我原本以为这是因为nolog只引用错误日志,但事实并非如此,我自己的测试证明了这一点,并且文档也显示了这一点,正如您在下面的评论中正确指出的那样({{3 }})。
所以你正在做什么应该工作。我无法重复此问题,当我在ModSecurity 2.9上进行测试时,它正确无法记录到任一日志。
规则ID在ModSecurity 2.7中成为强制性的,而你没有使用它们的事实表明你使用的是旧版本,所以我想知道这是否是一个自那时起修复的错误?更改日志(https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#nolog)有一些可能与此相关的潜在修复:
2010年2月4日修复 - 2.5.12:
修复了nolog,auditlog / noauditlog / nolog对破坏性操作的控制。
2006年11月15日修订 - 2.0.4
Made" nolog"做它应该做的事情 - 导致规则匹配 不记录。还有" nolog"现在意味着" noauditlog"但是它 可以关注" nolog"用" auditlog"并有匹配 未记录到错误日志但已记录到auditlog。 (不 让我觉得有用的东西,但它是可能的。)
因此,如果您运行的是没有此版本的版本,这可能是您所看到的原因。