Я использую Fail2Ban и настроил его по мере необходимости. Он читает логи из nginx / error.log и действует в зависимости от настроек maxretry и таймингов. Вопрос в том, возможно ли иметь разные правила в зависимости от кодов статуса?
Например, я хочу заблокировать всех, кто получит 10 404 Status code
за 5 минут, но заблокировать получение 3 403 Status code
.
Любая помощь будет принята с благодарностью, заранее спасибо.
Вы должны добавить фильтр в /etc/fail2ban/filter.d/
с соответствующим именем - например, nginx-{403,404}.conf
.
Они должны содержать что-то вроде следующих строк:
nginx-403.conf:
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 403
ignoreregex =
nginx-404.conf:
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 404
ignoreregex =
Затем вы должны вызвать их из своего jail.conf или любого другого файла conf:
Для 403:
[nginx-403]
enabled = true
port = http,https
filter = nginx-403
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 300
А для 404:
[nginx-404]
enabled = true
port = http,https
filter = nginx-404
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 300