Ознакомьтесь с обновлениями продуктов, которые мы анонсировали! Смотрите, что нового.

/

fail2ban на примере semena.ru (rest)

Создано две конфигурации:

  1. фильтр /etc/fail2ban/filter.d/resetpassword-abuse.conf

  2. конфигурация jail /etc/fail2ban/jail.d/rest.conf

смотрим логи tail -F /var/www/httpd-logs/semena.ru.access.log | grep "GET /rest"

Фильтрация:

Видим как на рест идут запросы и исходя из этих данных делаем фильтр, по которому будет f2ban блочить хосты. Делаем правило фильтрации в /etc/fail2ban/filter.d/resetpassword-abuse.conf

[Definition] failregex = ^<HOST> - - [.

?] "GET /rest/RestorePassword/resetPassword/?login=[^ ]+ HTTP/1.1" 403

^<HOST> - - [.

?] "GET /rest/Registration/regUser/?name=[^&]+&phone=[^&]+&email=[^ ]+ HTTP/1.1" 404

Переносы очень важны для фильра, приводим к виду


Конфигурация fail2ban

[resetpassword-abuse]

enabled = true

filter = resetpassword-abuse

logpath = /var/www/httpd-logs/semena.ru.access.log

bantime = 14400

findtime = 1800

maxretry = 5

action = iptables[name=resetpassword-abuse, port=http, protocol=tcp] ignoreip = 78.29.35.137 87.237.235.121 82.147.126.5 37.27.2.26 135.181.150.51 83.220.168.197 2.57.96.253


filter, который определяет, какие записи логов считаются "подозрительными".
Имя фильтра соответствует файлу resetpassword-abuse.conf в каталоге /etc/fail2ban/filter.d/

bantime, время блокировки IP-адреса, если он попал под правило. Значение указано в секундах

findtime, интервал поиска попыток нарушений — 1800 секунд = 30 минут. Если в течение этих 30 минут зафиксировано maxretry или более попыток — IP будет заблокирован.

maxretry, максимально допустимое количество "плохих" попыток.

action, действие, выполняемое при срабатывании правила.
В данном случае — использовать iptables для блокировки IP-адреса на уровне фаервола.

name=resetpassword-abuse — используется как метка в логах и iptables.

port=http — блокируется порт 80 (HTTP).

protocol=tcp — блокируется по TCP-протоколу.

ignoreip - вайт-лист

Просмотр заблокированных адресов реста - fail2ban-client status resetpassword-abuse

Просмотр заблокированных адресов semena https - fail2ban-client status semena