我正试图添加一个mod安全规则,以对由apache服务的Web应用程序上某个uri实施速率限制。
尝试重新启动apache时出现以下错误:
ModSecurity: No action id present within the rule
Action 'configtest' failed.
The Apache error log may have more information
具体地说-这是我要实现的目标:https://johnleach.co.uk/words/2012/05/15/rate-limiting-with-apache-and-mod-security/
似乎该文章是针对mod_security的先前版本编写的,不需要ID。
但是,我已经更改了包含ID的规则(如您所见,我添加了ID:1234)。因此,我不确定为什么仍然出现错误。
<LocationMatch "^/login_check">
SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog
SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog"
SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,id:1234,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
Header always set Retry-After "10" env=RATELIMITED
</LocationMatch>
不太确定该如何调试。欢迎任何输入。
答案 0 :(得分:1)
SecAction指令还需要一个ID:https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-%28v2.x%29#id
注意:从v2.7.0开始,所有SecRule / SecAction指令都需要id操作
也向您的SecAction行添加一个唯一的ID,它应该可以工作。