Давайте дружить в Телеграме: рассказываем про новые фичи и общаемся в комментах Подписаться
support@serv.host
Личный кабинет

Fail2Ban - защита SSH от брутфорса

Каждый сервер с открытым SSH постоянно получает попытки входа - боты перебирают пароли автоматически, сотнями в час. Fail2Ban смотрит на логи и банит IP-адреса, которые слишком часто ошибаются.

Как это работает

Fail2Ban читает лог-файлы. Видит, что с одного IP пришло, например, 5 неудачных попыток входа за 10 минут - и добавляет этот IP в блокировку через iptables на заданное время.


Установка

На Ubuntu/Debian:

sudo apt update && sudo apt install fail2ban -y

На CentOS/AlmaLinux:

sudo dnf install fail2ban -y

Настройка

Fail2Ban читает конфиг из /etc/fail2ban/jail.conf, но его трогать не нужно - он перезапишется при обновлении. Создайте свой файл:

sudo nano /etc/fail2ban/jail.local

Вставьте базовую конфигурацию:

[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5
 
[sshd]
enabled = true
port    = 22

Что тут что:

  • bantime - на сколько банить IP. 1h - час, можно поставить 24h или даже -1 (навсегда)
  • findtime - за какой период считать попытки
  • maxretry - сколько ошибок допустимо до бана
  • port - если вы сменили SSH-порт, укажите свой, например 2222

Сохраните: Ctrl+O, потом Ctrl+X.


Запуск

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Проверка

Статус Fail2Ban:

sudo systemctl status fail2ban

Посмотреть заблокированные IP по SSH:

sudo fail2ban-client status sshd

Увидите что-то вроде:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 4
|  |- Total failed:     17
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     1
   `- Banned IP list:

Полезные команды

Разбанить IP вручную:

sudo fail2ban-client set sshd unbanip 1.2.3.4

Забанить вручную:

sudo fail2ban-client set sshd banip 1.2.3.4

Посмотреть все активные «тюрьмы»:

sudo fail2ban-client status

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

Забыли указать свой SSH-порт - если вы сменили порт с 22 на другой, обязательно пропишите port = 2222 в jail.local. Иначе Fail2Ban не будет защищать нужный порт.

Случайно забанили себя - бывает. Зайдите в панель управления, откройте VMmanager и подключитесь к серверу через VNC.

Не создали jail.local - редактировать jail.conf напрямую не стоит. При обновлении пакета файл перезапишется и настройки пропадут.