ModSecurity,expirevar 不起作用

ModSecurity,expirevar 不起作用

我已经在我的 nginx k8s ingress 中启用了 modsecurity,使用如下命令指导,然后我添加了以下自定义规则来阻止潜在的暴力攻击

# Block by ip

# Retrieve the username
SecAction "phase:2,log,pass,initcol:ip=%{REMOTE_ADDR}"

# Enforce an existing username block
SecRule ip:bf_block_flag "@gt 0" "id:900120,phase:2,msg:'Username [%{ARGS:json.username}] blocked because of suspected brute-force attack',block"

# Check that this is a POST
SecRule REQUEST_METHOD "^POST$" "id:900130,phase:5,chain,t:none,auditlog,log,pass"
# On a successful login, a 200 code is returned.
SecRule RESPONSE_STATUS "^200" "id:900131,t:none,setvar:ip.bf_counter=0"

# Check that this is a POST
SecRule REQUEST_METHOD "^POST$" "id:900140,phase:5,chain,t:none,auditlog,log,pass"
SecRule RESPONSE_STATUS "^401" "id:900141,chain,t:none,setvar:ip.bf_counter=+1,expirevar:ip.bf_counter=10,log,auditlog,msg:'Increment'"
SecRule ip:bf_counter "@gt 3" "id:900142,t:none,setvar:ip.bf_block_flag=1,expirevar:ip.bf_block_flag=10,setvar:ip.bf_counter=0,log,auditlog,msg:'Blocked'"

但我无法expirevar按预期完成工作,我希望某个 IP 的阻止在 10 秒内过期,但解除对该 IP 的阻止需要几分钟。

我究竟做错了什么?

答案1

您没有写,但我假设您正在使用 libModSecurity3 和 Nginx。

您使用哪种类型的集合,内存还是 LMDB?

对于 LMDB,有一个未解决的问题,那就是“知道错误“。

但恕我直言,它expirevar不适用于任何类型的集合......:(

(请注意,我已经对 libmodsecurity3 添加了一些修复,并且对里面的代码有一些了解。)

相关内容