Назад | Перейти на главную страницу

ModSecurity, expirevar не работает

Я включил modsecurity в моем входе nginx k8s, используя это руководство, то я добавил следующие специальные правила, чтобы заблокировать потенциальную атаку методом грубой силы

# 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-адреса требуется несколько минут.

Что я делаю не так?

Вы не писали, но я предполагаю, что вы используете libModSecurity3 с Nginx.

Какой тип коллекции вы используете: в памяти или LMDB?

В случае LMDB есть открытая проблема, и это "знаю ошибку".

Но ИМХО expirevar не работает ни в каких типах коллекций ... :(

(Обратите внимание, что я добавил некоторые исправления в libmodsecurity3 и кое-что знаю о коде внутри.)