Задача 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 setunbanip
Для разблокировки 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