未正确设置mod_security IP收集密钥

我在一个负载平衡的设置中使用一个IP集合,因此我希望mod_security在x-forwarded的头部而不是REMOTE_ADDR上执行。 这是我的规则:

SecAction "phase:1,nolog,pass,initcol:IP=%{REQUEST_HEADERS.x-forwarded-for}" SecAction "nolog,phase:1,setvar:IP.hitcount=+1,deprecatevar:IP.hitcount=100/15" SecRule IP:hitcount "@gt 600" "nolog,drop,phase:1,msg:'Possible DoS'" 

无论我在IP =后面设置密钥,我通过哪个负载均衡器IP都明显地禁止了每个人。 这是一个错误还是我donig错误? 我甚至硬编码到1.1.1.1的密钥,它仍然在ip.pag文件中设置负载均衡IP。 帮帮我! :]

我发现了这个问题。 我把这个规则放在本地规则文件中,这是最后要设置的东西。 IP收集已经由另一个优先的规则初始化了。

解决的办法是将最上面的一行( initcol中的initcol )移到mod_securityconfiguration的顶部,这样所有对IP集合的引用都使用我设置的x-forwarded-for键,而不是默认的REMOTE_ADDR

我希望这可以帮助别人早晨把头发拉出来! :]

我还研究了代理/负载均衡器背后的mod_security问题。 你可以尝试mod_rpafmod_extract_forwarded2,所以你不必调整你的规则。

请参阅http://blog.modsecurity.org/2007/09/index.html