цены сверены 18 октября 2026 года

Fail2ban на VPS: защита SSH от перебора паролей

Fail2ban читает журнал входов и блокирует IP-адреса, которые много раз ошиблись при входе по SSH. Ставится командой sudo apt install fail2ban, настройки пишутся в jail.local, а не в jail.conf.

Fail2ban на VPS: защита SSH от перебора паролей
Содержание
  1. Что делает fail2ban
  2. Установка
  3. Не правьте jail.conf
  4. Откуда fail2ban берёт журнал
  5. Примените настройки
  6. Статус и заблокированные адреса
  7. Как разблокировать IP
  8. Как не заблокировать себя
  9. Связь с ufw
  10. Если не работает
  11. Что делать дальше
Команды проверены 12 октября 2026 годачистая Ubuntu 24.04 · fail2ban 1.0.2Как мы проверяем

Что делает fail2ban

Любой сервер с открытым SSH сканируют боты: они подбирают пароли к root и другим пользователям. Fail2ban следит за журналом входов, считает неудачные попытки и на время блокирует адрес, с которого они идут. Это замедляет перебор и разгружает журнал.

Fail2ban дополняет, но не заменяет вход по ключу. Если вход по паролю отключён, перебор паролей бесполезен. О ключах и первой настройке читайте в статье первая настройка VPS на Ubuntu.

Установка

sudo apt update
sudo apt install fail2ban
sudo systemctl status fail2ban

Первая команда обновляет список пакетов. Вторая ставит fail2ban и запускает службу. Третья показывает, что она работает, нужна строка active (running).

Защита SSH в Ubuntu 24.04 включается сразу после установки. Пакет кладёт файл /etc/fail2ban/jail.d/defaults-debian.conf, а в нём уже включено правило [sshd], журнал читается из systemd (backend = systemd), блокировки ставятся через nftables. Посмотреть файл можно командой cat /etc/fail2ban/jail.d/defaults-debian.conf. Ниже мы задаём свои сроки блокировки и список адресов-исключений.

Не правьте jail.conf

Основной файл настроек /etc/fail2ban/jail.conf при обновлении пакета может быть перезаписан. Документация fail2ban советует свои настройки писать в отдельный файл jail.local или в файлы каталога jail.d/. Значения из jail.local перекрывают значения из jail.conf.

sudo nano /etc/fail2ban/jail.local

Команда открывает новый файл jail.local в редакторе nano. Вставьте:

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

[sshd]
enabled = true
backend = systemd

Раздел [DEFAULT] задаёт общие значения. maxretry = 5 значит: пять неудачных попыток за findtime (10 минут) приводят к блокировке на bantime (1 час). ignoreip это список адресов, которые не блокируются никогда. Раздел [sshd] включает защиту SSH.

Откуда fail2ban берёт журнал

Параметр backend говорит fail2ban, где искать записи о входах. Значение systemd означает чтение журнала systemd (journald). Текстовый файл /var/log/auth.log ведёт служба rsyslog, а в некоторых образах Ubuntu 24.04 её нет. С backend = systemd fail2ban от этого файла не зависит. В jail.local мы повторили эту строку, чтобы настройка не пропала, если файл из пакета изменится. Проверить, есть ли файл у вас:

ls -l /var/log/auth.log
sudo journalctl -u ssh --since "1 hour ago" | tail

Первая команда покажет файл или ответ No such file or directory. Вторая выводит записи службы ssh за последний час, tail оставляет последние десять строк. Неудачная попытка входа выглядит так: Failed password for alex from 203.0.113.5. Имя службы в Ubuntu 24.04 ssh, а не sshd.

Примените настройки

sudo systemctl restart fail2ban
sudo fail2ban-client status

restart перечитывает конфиг. fail2ban-client status выводит список работающих «jail», то есть правил наблюдения. В списке должен быть sshd. Ошибки конфигурации смотрите командой sudo journalctl -u fail2ban -n 30: она выводит последние 30 строк журнала службы.

Статус и заблокированные адреса

sudo fail2ban-client status sshd

Команда показывает для sshd число неудачных попыток, число блокировок и список заблокированных адресов (Banned IP list). Заблокированный адрес при попытке подключения получает ответ Connection refused.

Как разблокировать IP

Если заблокировали вас или клиента, например после нескольких опечаток в пароле:

sudo fail2ban-client set sshd unbanip 203.0.113.5

Команда снимает блокировку с адреса 203.0.113.5 в jail sshd. Подставьте нужный адрес. Если вы сами заблокированы и не можете зайти по SSH, зайдите через консоль в панели хостера и выполните эту команду там.

Как не заблокировать себя

Добавьте свой постоянный адрес в ignoreip, через пробел:

ignoreip = 127.0.0.1/8 ::1 203.0.113.5

Правьте строку в jail.local, затем снова sudo systemctl restart fail2ban. Это удобно, если у вас статический адрес. При динамическом адресе запись устареет, а чужой человек получит иммунитет к блокировкам. Тогда лучше оставить ignoreip по умолчанию и входить по ключу: при вводе верного ключа неудачных попыток не будет.

Связь с ufw

Fail2ban и ufw работают независимо. Ufw разрешает или закрывает порты по правилам, которые вы задали. Fail2ban добавляет временные правила блокировки для конкретных адресов через собственное действие (banaction). В Ubuntu 24.04 это nftables: проверить можно командой sudo fail2ban-client get sshd actions, а сами блокировки показывает sudo nft list table inet f2b-table.

Значит, блокировки fail2ban не появятся в выводе ufw status, это нормально. Правила ufw при этом остаются на месте, порты по-прежнему открыты по вашим настройкам. Если вы хотите, чтобы fail2ban блокировал через ufw, в документации fail2ban есть действие ufw, его указывают параметром banaction = ufw в jail.local. Перед этим убедитесь, что ufw уже включён и правило для SSH добавлено. Порядок включения описан в статье настройка файрвола ufw.

Если вы поменяли порт SSH, укажите его в разделе [sshd] строкой port = 2222 (с вашим номером). Иначе fail2ban будет блокировать не тот порт.

Если не работает

  • Службы нет в списке: проверьте опечатки в jail.local, особенно квадратные скобки и знаки =.
  • Блокировок нет, а попытки идут: проверьте backend и имя службы командой journalctl -u ssh.
  • Нужно увидеть историю блокировок: sudo grep Ban /var/log/fail2ban.log. Fail2ban пишет свой журнал в этот файл, каждая блокировка и разблокировка там отдельной строкой.

Общий разбор журналов и служб есть в статье журналы и службы systemd.

Что делать дальше

Включите вход по ключам, отключите вход по паролю и оставьте fail2ban как дополнительную защиту. Если сервера ещё нет, сравните тарифы на странице подбора VPS: в базе 269 тарифов у 20 хостеров, цены сверены 18 октября 2026 года.