Справочник

Как установить fail2ban на Ubuntu

fail2ban следит за попытками входа на сервер и на время блокирует адреса, с которых подбирают пароль. В Ubuntu он ставится одной командой и сразу защищает SSH: после 5 неудачных попыток за 10 минут адрес теряет доступ на 10 минут. Свои настройки пишут в файл /etc/fail2ban/jail.local.

≈ 7 мин чтения
Содержание 11

Что сделать прямо сейчас

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

  1. Обновите список пакетов: sudo apt update. Для Ubuntu 24.04 это важно — почему.
  2. Установите fail2ban: sudo apt install fail2ban. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. На вопрос Do you want to continue? [Y/n] нажмите Y и Enter.
  3. Проверьте службу: sudo systemctl status fail2ban. В ответе должно быть active (running). Выйти из ответа — клавиша Q. Если там inactive, включите службу: sudo systemctl enable --now fail2ban.
  4. Проверьте защиту SSH: sudo fail2ban-client status sshd. Ответ начинается со строки Status for the jail: sshd — правило для SSH работает.
  5. Если у вас постоянный IP-адрес, добавьте его в исключения — как изменить настройки.

Какая версия поставится

UbuntuВерсия fail2banПакет
24.04fail2ban 1.0.2fail2ban 1.0.2
26.04fail2ban 1.1.0fail2ban 1.1.0

Номера версий взяты со страниц пакетов Ubuntu на 14 октября 2026 года. Версию на сервере покажет sudo fail2ban-client version.

В Ubuntu 24.04 в первой версии пакета, 1.0.2-3, были ошибки при работе с Python 3.12 — а это и есть Python этой Ubuntu. Их исправило обновление 1.0.2-3ubuntu0.1. Оно приходит после sudo apt update, поэтому не пропускайте эту команду перед установкой.

Пакет лежит в разделе universe. Если apt его не находит — разбор ошибки.

Что защищено сразу

Сразу после установки работает одно правило — sshd: оно следит за входами по SSH. Его включает файл /etc/fail2ban/jail.d/defaults-debian.conf, который ставится вместе с пакетом. Там же задано, что fail2ban читает журнал systemd и блокирует адреса через nftables — механизм фильтрации в ядре Linux.

Значения по умолчанию:

НастройкаЗначениеЧто значит
maxretry5сколько неудачных попыток входа допускается
findtime10mза какой срок считаются попытки — 10 минут
bantime10mна сколько блокируется адрес — 10 минут
ignoreselftrueадреса самого сервера не блокируются

Итог: адрес, с которого за 10 минут 5 раз неудачно вошли по SSH, на 10 минут теряет доступ к порту SSH.

Как изменить настройки

Файл /etc/fail2ban/jail.conf не меняйте: при обновлении пакета его могут заменить. Свои настройки пишите в /etc/fail2ban/jail.local. fail2ban читает его после jail.conf и файлов из папки jail.d, поэтому значения из jail.local главнее. В jail.local указывайте только то, что меняете, — остальное возьмётся из jail.conf.

Откройте файл: sudo nano /etc/fail2ban/jail.local. Если файла нет, nano создаст его. Вставьте пример и поправьте под себя:

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 203.0.113.10
bantime = 1h
findtime = 10m
maxretry = 5
  • ignoreip — адреса, которые fail2ban не блокирует. 203.0.113.10 замените на свой постоянный IP-адрес. Через пробел можно перечислить несколько адресов и подсетей.
  • bantime = 1h — блокировка на час вместо 10 минут. Время пишут числом секунд или с буквой: m — минуты, h — часы, d — дни. 600 и 10m — одно и то же.
  • findtime и maxretry — как в таблице выше.

Сохраните файл: Ctrl+O, Enter, затем Ctrl+X — подробнее про nano. Проверьте настройки: sudo fail2ban-client -t — если в файлах ошибка, команда сообщит о ней. Примените: sudo systemctl restart fail2ban.

Если SSH на другом порту

Правило sshd блокирует адрес только на порту ssh — это 22. Если SSH на сервере перенесён на другой порт, заблокированный адрес сможет продолжать подбор. Добавьте в конец jail.local свой порт:

[sshd]
port = 2222

2222 — пример: подставьте свой номер. Затем sudo fail2ban-client -t и sudo systemctl restart fail2ban. Как узнать, на каком порту SSH, — Порт 22: SSH.

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

Посмотреть блокировки: sudo fail2ban-client status sshd. В ответе Currently banned — сколько адресов заблокировано сейчас, Total banned — сколько всего было заблокировано, Banned IP list — сами адреса.

Снять блокировку с адреса в правиле sshd:

sudo fail2ban-client set sshd unbanip 203.0.113.10

Снять блокировку с адреса во всех правилах сразу: sudo fail2ban-client unban 203.0.113.10.

Если заблокировали самого себя, по SSH на сервер не попасть, пока идёт блокировка. Войдите через консоль в панели провайдера и снимите блокировку командой выше — или подождите: по умолчанию блокировка длится 10 минут.

Где журнал

fail2ban записывает свои действия в /var/log/fail2ban.log. Последние строки:

sudo tail -n 20 /var/log/fail2ban.log

Строки со словом Ban — адрес заблокирован, Unban — блокировка снята. Перед ними в квадратных скобках — название правила, например [sshd]. Сообщения самой службы — sudo journalctl -u fail2ban.

fail2ban не заменяет вход по ключу

fail2ban замедляет подбор пароля, но не отменяет его: с каждого адреса можно сделать несколько попыток, а боты перебирают пароли с разных адресов. Главная защита — вход по SSH только по ключу: тогда подбирать пароль бесполезно. Как настроить — в шаге 4 инструкции Как настроить VPS после покупки.

Ещё одна защита без установки программ — правило limit в фаерволе ufw: Защита SSH от перебора паролей.

Ошибки и как их исправить

Что видитеЧто делать
служба fail2ban не запускаетсяпосмотрите причину: sudo journalctl -u fail2ban -n 30. Проверьте настройки командой sudo fail2ban-client -t и исправьте ошибку, о которой она сообщит
fail2ban-client без sudo отвечает ошибкойдобавьте sudo в начало команды
вас не пускает по SSH после нескольких неверных паролейадрес заблокирован: как разблокировать
SSH на нестандартном порту, а подбор паролей продолжаетсяукажите свой порт в jail.local
Unable to locate package fail2banapt не нашёл пакет

Источники

Сверено 14 октября 2026 года.

Что почитать дальше