modsecurity:在实施白名单规则时是否真的需要关闭规则引擎?
modsecurity: Is turning off the rule engine really necessary when implementing a whitelisting rule?
我在网上找到的几乎所有用于 modsecurity 白名单的 SecRule 示例都包括关闭规则引擎,示例:
phase:1,nolog,allow,ctl:ruleEngine=Off,id:23023
然而,就我从文档中得到的信息而言,"nolog" 与 "allow" 相结合应该已经具有完全相同的效果 - 即中断规则处理并阻止任何日志条目。因此,下面的配置不是绝对等价的吗?
phase:1,nolog,allow,id:23023
如果我说错了,两者有什么区别?
我正在使用 modsecurity 2.9.3。
我以前没见过,但我可以猜猜它为什么在那里。
allow
操作是破坏性操作。当 ModSecurity 在 DetectionOnly
模式下工作时,破坏性操作(包括 allow
)实际上不会被执行。这意味着任何后续规则仍然是 运行 - 即使在正常 On
模式下 运行ning 时它们不会是 运行。这会使日志变得非常嘈杂,并且会让您认为您必须调整更多实际上不需要调整的规则。
ctl
操作不会中断,即使在 DetectionOnly
模式下也不会执行。因此,通过将 ctl:ruleEngine=Off
添加到任何 allow
规则中,您只能在仅检测模式下记录真正的错误。
其实我反其道而行之,用ctl:ruleEngine=On
让allow
动作即使在DetectionOnly
模式下也能生效。例如,我有一个规则,靠近我所有规则的开头,查看对 index.html 页面没有参数的 GET 调用,并说它们相当安全,因此不需要 运行 其余规则.这样可以节省处理时间和错误标志。
我在网上找到的几乎所有用于 modsecurity 白名单的 SecRule 示例都包括关闭规则引擎,示例:
phase:1,nolog,allow,ctl:ruleEngine=Off,id:23023
然而,就我从文档中得到的信息而言,"nolog" 与 "allow" 相结合应该已经具有完全相同的效果 - 即中断规则处理并阻止任何日志条目。因此,下面的配置不是绝对等价的吗?
phase:1,nolog,allow,id:23023
如果我说错了,两者有什么区别?
我正在使用 modsecurity 2.9.3。
我以前没见过,但我可以猜猜它为什么在那里。
allow
操作是破坏性操作。当 ModSecurity 在 DetectionOnly
模式下工作时,破坏性操作(包括 allow
)实际上不会被执行。这意味着任何后续规则仍然是 运行 - 即使在正常 On
模式下 运行ning 时它们不会是 运行。这会使日志变得非常嘈杂,并且会让您认为您必须调整更多实际上不需要调整的规则。
ctl
操作不会中断,即使在 DetectionOnly
模式下也不会执行。因此,通过将 ctl:ruleEngine=Off
添加到任何 allow
规则中,您只能在仅检测模式下记录真正的错误。
其实我反其道而行之,用ctl:ruleEngine=On
让allow
动作即使在DetectionOnly
模式下也能生效。例如,我有一个规则,靠近我所有规则的开头,查看对 index.html 页面没有参数的 GET 调用,并说它们相当安全,因此不需要 运行 其余规则.这样可以节省处理时间和错误标志。