В статье разберём:
- как установить Fail2Ban и проверить его работу;
- как включить базовую защиту SSH;
- как менять параметры блокировки (количество попыток, время бана);
- как смотреть список заблокированных IP;
- какие ошибки встречаются при настройке и как их решать.
Что понадобится
-
Ubuntu/Debian VPS (для CentOS/RHEL установка немного отличается, но принцип тот же).
-
Доступ по SSH с root или sudo.
-
Уже установленный и работающий SSH (на стандартном или изменённом порту).

Устанавливаем Fail2Ban и запускаем сервис
Fail2Ban есть в стандартных репозиториях Ubuntu/Debian, поэтому ставится буквально в пару команд.
Установка
sudo apt update
sudo apt install -y fail2ban
Проверяем статус сервиса
sudo systemctl status fail2ban
Если всё прошло успешно, сервис будет запущен и включён в автозагрузку.

Основные команды управления
# Проверить, работает ли Fail2Ban
sudo systemctl is-active fail2ban
# Перезапустить сервис после изменений
sudo systemctl restart fail2ban
# Смотреть логи работы
sudo journalctl -u fail2ban -e
Если сервис не запускается — возможно, в конфигурации ошибка. Проверяйте через:
sudo fail2ban-client -d
Базовая настройка защиты SSH
По умолчанию Fail2Ban не блокирует ничего — нужно включить «jail» для SSH. Все изменения лучше делать в файле /etc/fail2ban/jail.local
, чтобы обновления не перезаписали конфигурацию.
Создаём локальный конфиг
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Раздел [sshd]
Найдите и настройте блок:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
findtime = 600
bantime = 3600
-
enabled — включаем правило для SSH.
-
port — порт SSH (если меняли, укажите свой, например
22222
). -
maxretry — сколько ошибок входа допустимо (здесь 5).
-
findtime — за какой период времени (600 секунд = 10 минут).
-
bantime — время блокировки IP (3600 секунд = 1 час).
Применяем изменения
sudo systemctl restart fail2ban

Важно: если SSH работает на нестандартном порту, замените port = ssh
на конкретный номер порта (например, port = 22222
).
Проверяем работу Fail2Ban и список заблокированных IP
После включения защиты стоит убедиться, что Fail2Ban действительно отслеживает попытки входа и умеет банить IP-адреса.
Проверка активных jail
sudo fail2ban-client status
Вывод покажет список включённых правил, например:
Status
|- Number of jail: 1
`- Jail list: sshd
Проверка конкретного jail
sudo fail2ban-client status sshd
Здесь видно:
-
Количество попыток входа.
-
Список заблокированных IP.
Разбанить IP вручную
sudo fail2ban-client set sshd unbanip 192.168.1.100

Совет: если вы тестируете работу Fail2Ban, попробуйте несколько раз подряд ввести неверный пароль при подключении по SSH с другого устройства — после 5 попыток IP будет заблокирован.
Типичные ошибки и их решения
-
Fail2Ban не блокирует IP — проверьте, что jail включён:
sudo fail2ban-client status sshd
Если список пустой, убедитесь, что параметр
enabled = true
прописан в/etc/fail2ban/jail.local
. -
Не срабатывает на нестандартном порту — измените строку
port = ssh
на ваш порт, например:port = 22222
-
Ошибка в логах вида Unable to read the filter — значит, неправильно указан фильтр или лог. Для SSH должно быть:
filter = sshd logpath = /var/log/auth.log
-
После изменений Fail2Ban не запускается — проверяйте синтаксис:
sudo fail2ban-client -d
или смотрите логи:
sudo journalctl -u fail2ban -e
-
Забанили сами себя — если потеряли доступ по SSH, восстановить его можно через консоль VNC/панель хостинга и выполнить:
sudo fail2ban-client set sshd unbanip ВАШ_IP

Итоги
Установили Fail2Ban и запустили сервис.
Включили базовую защиту SSH через
jail.local
.Разобрались с настройками
maxretry
,findtime
,bantime
.Научились проверять список активных jail и заблокированных IP.
Разобрали распространённые ошибки и способы их устранения.
Fail2Ban — это простой, но эффективный инструмент, который значительно снижает риск успешного подбора пароля к вашему серверу. Для ещё большей защиты можно дополнить его сменой стандартного SSH-порта и использованием ключей вместо паролей.