Skip to content

This article is available in Russian. An English version is on the way.Open the Russian page

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

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

Level
Intermediate
Reading time
2 min read
Updated
Tested on
Ubuntu 22.04, Ubuntu 24.04, Debian 12
Contents
  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 и не мешает перебору.

Read to the end and the article counts toward your learning progress.

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

Was this article helpful?