Fail2Ban: встановлення, налаштування та основні команди

Fail2Ban читає журнали служб і тимчасово блокує IP-адреси, з яких ідуть підозрілі спроби входу. Для сервера з відкритим SSH це базовий захист від перебору паролів.
Встановлення
Ubuntu і Debian:
sudo apt update
sudo apt install fail2ban
AlmaLinux, Rocky Linux, RHEL (пакет міститься в репозиторії EPEL):
sudo dnf install epel-release
sudo dnf install fail2ban
Увімкніть службу:
sudo systemctl enable --now fail2ban
Де зберігаються налаштування
Усі файли містяться в /etc/fail2ban/. Файл jail.conf містить типові значення й перезаписується під час оновлення пакета, тому редагувати його не потрібно. Власні налаштування розміщуйте в jail.local або в окремих файлах каталогу /etc/fail2ban/jail.d/.
Загальні параметри
Створіть файл із параметрами, спільними для всіх правил:
sudo nano /etc/fail2ban/jail.d/defaults.conf
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 198.51.100.7
bantime = 1h
findtime = 10m
maxretry = 5
bantime.increment = true
bantime.maxtime = 1w
ignoreip— адреси, які ніколи не блокуються. Додайте сюди свою постійну IP-адресу.maxretry— кількість невдалих спроб до блокування.findtime— інтервал, за який рахуються спроби.bantime— тривалість блокування.bantime.increment— кожне повторне блокування тієї самої адреси триває довше, аж доbantime.maxtime.
Захист SSH
sudo nano /etc/fail2ban/jail.d/sshd.conf
[sshd]
enabled = true
port = ssh
backend = systemd
maxretry = 3
Якщо SSH працює на нестандартному порту, вкажіть його номер у port.
Застосуйте налаштування:
sudo systemctl restart fail2ban
Блокування через nftables
Сучасні дистрибутиви використовують nftables замість iptables. Щоб Fail2Ban створював правила безпосередньо в nftables, додайте в секцію [DEFAULT]:
banaction = nftables-multiport
banaction_allports = nftables-allports
На системах із firewalld використовуйте banaction = firewallcmd-rich-rules. Усі доступні дії лежать у /etc/fail2ban/action.d/, фільтри — у /etc/fail2ban/filter.d/.
Основні команди
Список активних правил:
sudo fail2ban-client status
Стан правила та заблоковані адреси:
sudo fail2ban-client status sshd
Заблокувати адресу вручну:
sudo fail2ban-client set sshd banip 203.0.113.50
Розблокувати адресу:
sudo fail2ban-client set sshd unbanip 203.0.113.50
Зняти всі блокування:
sudo fail2ban-client unban --all
Перевірити, чи спрацьовує фільтр на записах журналу:
sudo fail2ban-regex systemd-journal /etc/fail2ban/filter.d/sshd.conf
Якщо заблокували себе
Підключіться через консоль сервера в панелі керування хостингу (VNC) і виконайте fail2ban-client set sshd unbanip <ваша IP>. Щоб ситуація не повторилася, додайте свою адресу в ignoreip.
Чого Fail2Ban не замінює
Fail2Ban зменшує шум у журналах і зупиняє простий перебір, але не захищає від слабкого пароля, який вгадають із перших спроб. Використовуйте його разом із входом за SSH-ключами та зміною порту SSH.
Відеоінструкція



