fail2ban: повторный бан

Fail2ban позволяет блокировать пользователей в результате каких-либо ошибочных действий. Например при получении HTTP ошибки 404 или некорректной ssh авторизации. Но что делать, если попытки подбора повторяются, как забанить снова, но на больший интервал?

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

Для этого мы можем использовать фильтр recidive.conf из поставки.

Создаем соответствующий jail-файл: /etc/fail2ban/jail.d/recidive.conf :

[recidive]
enabled = true
logpath = /var/log/fail2ban.log
filter = recidive
# find how many times it was banned today
findtime = 86400 ; 1 day
# if it banned 4 times
maxretry = 4
# ban this user for 3 hours
bantime = 10800 ; 3 hours

Данное решение забанит на более длительный срок. Но мы хотим сделать несколько уровней. То есть увеличивать срок бана каждый раз. Мы должны измени recidive.conf и добавить туда ignoreregex чтобы исключить баны от нашего recidive правила.

Я нашел это решение по данной ссылке: https://blog.shanock.com/fail2ban-increased-ban-times-for-repeat-offenders/

Итак, изменяем

ignoreregex =

в /etc/fail2ban/filter.d/recidive.conf на:

ignoreregex = \[recidive.*\]\s+Ban\s+<HOST>

и создаем такой /etc/fail2ban/jail.d/recidive.conf  с повторными банами, каждый раз на все более длительный интервал:

[recidive1]
enabled = true
filter = recidive
bantime = 10800 ; 3 hours
findtime = 86400 ; 1 day
logpath = /var/log/fail2ban.log
maxretry = 4

[recidive2]
enabled = true
filter = recidive
bantime = 86400 ;1 day
findtime = 604800 ;1 week
logpath = /var/log/fail2ban.log
maxretry = 7

[recidive3]
enabled = true
filter = recidive
bantime = 604800 ;1 week
findtime = 2592000 ;1 month
logpath = /var/log/fail2ban.log
maxretry = 10

[recidive4]
enabled = true
filter =recidive
bantime = 2592000 ;1 month
findtime = 15552000 ;6 months
logpath = /var/log/fail2ban.log
maxretry = 20
Tagged with:

Добавить комментарий

Ваш e-mail не будет опубликован.