Ubuntu 18.04. Установка и настройка Fail2ban

Задача Fail2ban - бан IP при превышении заданного количества неудачных вводов пароля подряд (по умолчанию 5 раз) за заданное время (по умолчанию 10 минут). Время бана так же задаётся в конфигурации.

Установка fail2ban

apt install fail2ban

Включаем автозапуск

update-rc.d fail2ban defaults

Копирование файла конфигурации

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Для включение/отключение правил необходимо в файле /etc/fail2ban/jail.d/defaults-debian.conf добавить название jail в квадратных скобках и enabled = true.
Для включения sshd, mysqld-auth, recidive:

[sshd]
enabled = true
 
[mysqld-auth]
enabled = true
 
[recidive]
enabled = true

Перезагрузка службы fail2ban

service fail2ban restart

Проверка статуса загруженных правил

fail2ban-client status
# fail2ban-client status
Status
|- Number of jail:      3
`- Jail list:   mysqld-auth, recidive, sshd

Проверка статуса правил sshd

fail2ban-client status sshd
# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 7
|  |- Total failed:     63
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 5
   |- Total banned:     21
   `- Banned IP list:   *.*.*.*

Последние 10 записей лога

tail /var/log/fail2ban.log

Разблокировка ip

fail2ban-client set <jail> unbanip <ip>

Для разблокировки ip 127.0.0.1 для sshd jail

fail2ban-client set sshd unbanip 127.0.0.1

К сожалению после запуска у меня jail mysqld-auth так и не блокировал ip. Для решения необходимо в /etc/fail2ban/jail.local в переменную logpath прописать полный путь до лог файла:

logpath  = /var/log/mysql/error.log

После изменения конфигов, необходимо ещё раз перезагрузить сервис fail2ban.

Посмотреть список текущих правил iptables

iptables -nvL

https://help.ubuntu.ru/wiki/fail2ban
https://andew.ru/ru/pages/page/fail2ban-ubuntu