Skip to content
VDS · Безпека

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.