我在网上查看过,看到很多关于此问题的常见答案,但是,没有一个能起到作用。
我试图用它来忽略早上开始的扫描。
SecRule REMOTE_HOST "@ipmatch 99.123.33.87" "id:90000009,phase:1,t:none,allow,nolog,ctl:ruleRemovebyID=.*;"
谁知道可能是什么问题?
答案1
几个问题:
REMOTE_HOST 是名称,不是 IP 地址。您需要的是 REMOTE_ADDR。
“ctl:ruleRemovebyID=.*” 不是有效语法,即使是,也不应该是必要的(但请参阅下面的第 4 点)。
最后不需要分号。
在 DetectionOnly 模式下,“Allow”会被忽略,我认为这违反直觉,如果您出于某种原因需要切换到此模式,则会导致大量错误检测。因此,我总是在我编写的任何“allow”规则中添加“ctl:ruleEngine=On”,以强制此规则在该模式下也能正常工作。
因此,最终正确的版本控制规则是:
SecRule REMOTE_ADDR "@ipmatch 99.123.33.87" "id:90000009,phase:1,t:none,allow,nolog,ctl:ruleEngine=On"
答案2
在 Barry Pollard 的回答中,虽然ctl:ruleEngine=On
应该Off
忽略所有规则,但正如问题所要求的那样。以下是另一个如何执行此操作的示例,来自工作配置:
SecRule REMOTE_ADDR "@contains 99.123.33.87" "id:1,phase:1,nolog,allow,ctl:ruleEngine=Off"