0

我在网上找到的几乎所有关于 modsecurity 白名单的 SecRule 示例都包括关闭规则引擎,例如:

阶段:1,nolog,allow,ctl:ruleEngine=Off,id:23023

但是,据我从文档中得到的,“nolog”与“allow”结合起来应该已经具有完全相同的效果——即中断规则处理并阻止任何日志条目。因此,以下配置不是绝对等效的吗?

阶段:1,nolog,允许,id:23023

如果我错了,两者之间的区别在哪里?

我正在使用 modsecurity 2.9.3。

4

1 回答 1

0

我以前没见过,但我可以猜到它为什么在那里。

allow动作是破坏性动作。当 ModSecurity 在模式下工作时,实际上不会DetectionOnly执行破坏性操作(包括)。这意味着任何后续规则仍在运行 - 即使它们在正常模式下allow运行时不会运行。On这会使日志变得非常嘈杂,并且还会让您认为您必须调整更多实际上不必调整的规则。

ctl操作没有破坏性,即使在DetectionOnly模式下也会执行。因此,通过添加ctl:ruleEngine=Off到任何allow规则,您只能在仅检测模式下记录真正的错误。

我实际上做了相反的事情,并且习惯于ctl:ruleEngine=On使动作即使在模式下也能allow生效。DetectionOnly例如,我有一条规则,在我所有规则的开头附近,查看没有参数的 GET 调用 index.html 页面并说它们相当安全,因此无需对它们运行其余规则。这节省了处理时间和错误标志。

于 2019-10-18T19:30:15.523 回答