Fail2ban проти перебору паролів
Як встановити й налаштувати Fail2ban: блокування перебору SSH і вебформ, додавання власних адрес у білий список, перевірка роботи та розблокування себе.
Оновлено 23 серпня 2026 р.
Fail2ban читає логи, рахує невдалі спроби входу з однієї адреси й тимчасово блокує її правилом фаєрвола. Він не замінює вхід за ключем, але прибирає більшість фонового брутфорс-трафіку та знімає навантаження з логів.
Встановлення та базове налаштування
apt install -y fail2ban
Використовуйте власний файл, /etc/fail2ban/jail.local — правки в jail.conf перезаписуються оновленнями:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 203.0.113.5
banaction = ufw
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 24h
systemctl enable --now fail2ban
fail2ban-client status
fail2ban-client status sshd
Впишіть свою домашню або офісну адресу в ignoreip — це ваша страховка від бану самого себе. Якщо ваша адреса зміниться, консоль у панелі за адресою /hosting/vds/m/<id> залишається вашою рятівною сіткою: вона працює незалежно від мережі та правил.
banaction має відповідати вашому фаєрволу: ufw для ufw, nftables-multiport для nftables.
Де перевірити результат
fail2ban-client status sshd
tail -f /var/log/fail2ban.log
journalctl -u fail2ban -n 50
Статус показує кількість невдалих спроб і список заблокованих адрес. На публічній адресі щоденна кількість у сотні — це норма, а не ознака цілеспрямованої атаки.
Розблокувати адресу (зокрема свою):
fail2ban-client set sshd unbanip 203.0.113.5
Захист поза SSH
Fail2ban може працювати з будь-яким логом, де видно невдалі спроби.
[nginx-http-auth]
enabled = true
[nginx-limit-req]
enabled = true
logpath = /var/log/nginx/error.log
[postfix-sasl]
enabled = true
Для власного застосунку вам знадобиться фільтр — файл у /etc/fail2ban/filter.d/ з регулярним виразом, у якому адреса позначена як <HOST>:
[Definition]
failregex = ^.*login failed.*ip=<HOST>.*$
ignoreregex =
Перевірте вираз на реальному лозі:
fail2ban-regex /var/log/myapp.log /etc/fail2ban/filter.d/myapp.conf
Ця команда показує, скільки рядків збіглося. Нуль збігів означає, що правило хибне — а захист, який мовчки не спрацьовує, гірший за його відсутність.
Типові помилки
| Помилка | Наслідок | Рішення |
|---|---|---|
Правки в jail.conf | Втрачаються під час оновлення | Пишіть у jail.local |
Вашої адреси немає в ignoreip | Колись заблокуєте себе | Додайте її або підключайтеся через консоль у панелі |
banaction не відповідає вашому фаєрволу | Бани не застосовуються | Узгодьте його з ufw або nftables |
| Фільтр не відповідає формату логу | Тиша замість захисту | Перевірте через fail2ban-regex |
| Служба не може читати лог systemd | Порожній статус | Встановіть backend = systemd |
Перевірте насправді: навмисно введіть хибний пароль потрібну кількість разів із зовнішньої адреси та переконайтеся, що вона потрапила до списку заблокованих. Неналаштований fail2ban створює хибне відчуття безпеки.
Доповніть це обмеженням швидкості з'єднань у самому фаєрволі — ufw limit 22/tcp.