Перейти к содержимому

fail2ban: блокировка перебора паролей

Автоматически банить адреса, которые подбирают пароли к SSH и другим сервисам.

Уровень
Средний
Время чтения
2 мин чтения
Обновлено
Проверено на
Ubuntu 22.04, Ubuntu 24.04, Debian 12
Содержание
  1. Установка
  2. Настройка
  3. Проверьте результат
  4. Разбанить адрес
  5. Повторные нарушители
  6. Частые ошибки

fail2ban читает журналы, находит повторяющиеся неудачные входы и на время блокирует адрес фаерволом. Если вход по паролю уже отключён, fail2ban не обязателен, но снижает шум и нагрузку. Для сервисов с паролями — панелей, почты, WordPress — он особенно полезен.

Установка

bash
$ apt install -y fail2ban python3-systemd

Пакет python3-systemd позволяет fail2ban читать журнал systemd напрямую. В Debian 12 это обязательно: там по умолчанию нет файла /var/log/auth.log, и без этого защита SSH не запустится.

Настройка

Не правьте jail.conf — он перезапишется при обновлении. Создайте свой файл:

bash
$ nano /etc/fail2ban/jail.local
/etc/fail2ban/jail.local
[DEFAULT]# Свои адреса — никогда не банитьignoreip = 127.0.0.1/8 ::1 198.51.100.7bantime = 1hfindtime = 10mmaxretry = 5[sshd]enabled = truebackend = systemd# port = 2222  — если SSH на другом порту
bash
$ systemctl enable --now fail2ban$ systemctl restart fail2ban

Проверьте результат

bash
$ fail2ban-client status$ fail2ban-client status sshd

Во втором выводе видно число неудачных попыток и список забаненных адресов. Через некоторое время после запуска он обычно уже не пустой.

Разбанить адрес

bash
$ fail2ban-client set sshd unbanip 198.51.100.7

Повторные нарушители

Встроенный jail recidive банит на долгий срок тех, кого уже банили несколько раз. Добавьте в jail.local:

ini
[recidive]enabled = truebantime = 1wfindtime = 1d

Частые ошибки

  • fail2ban не стартует с ошибкой про отсутствующий /var/log/auth.log — не указан backend = systemd или не установлен python3-systemd.
  • Забанили себя — зайдите с другого адреса или через VNC-консоль, разбаньте и добавьте свой IP в ignoreip.
  • Сменили порт SSH, но не указали его в jail — бан ставится на порт 22 и не мешает перебору.

Дочитайте до конца — статья засчитается в обучении автоматически.

  • fail2ban
  • перебор паролей
  • brute force
  • бан IP
  • SSH

Статья помогла?