Введение

Fail2ban — демон для защиты сервера от брутфорса. Анализирует логи (SSH, веб-сервер, почта и др.), при превышении порога неудачных попыток добавляет IP в firewall (iptables/ufw) на заданное время.

Установка

Debian / Ubuntu:

apt update apt install -y fail2ban

Запуск и автозагрузка:

systemctl enable --now fail2ban

Базовая настройка

Создайте локальный конфиг (не редактируйте jail.conf — он перезаписывается при обновлении):

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

В секции [DEFAULT] задайте:

[DEFAULT] ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 bantime = 1h findtime = 10m maxretry = 5

ignoreip — IP и подсети, которые не банить (локальная сеть, свой офис). bantime — время бана. findtime — окно, в котором считаются попытки. maxretry — число неудачных попыток до бана.

Jail для SSH

Обычно [sshd] уже включён. Проверьте:

[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 3600

После изменений:

systemctl restart fail2ban

Проверка и мониторинг

Статус jail:

fail2ban-client status fail2ban-client status sshd

Разбан IP вручную:

fail2ban-client set sshd unbanip 1.2.3.4

Логи:

tail -f /var/log/fail2ban.log

Дополнительные jail

Fail2ban поддерживает nginx, apache, postfix, dovecot и др. Список:

ls /etc/fail2ban/filter.d/ ls /etc/fail2ban/jail.d/

Включение jail — в jail.local или в файле /etc/fail2ban/jail.d/*.conf.

Итог

Fail2ban защищает SSH и другие сервисы от перебора паролей. Настройте ignoreip под свою сеть, задайте bantime и maxretry, перезапустите сервис.