Що таке Fail2Ban та як його використовувати для захисту сервера?

В епоху, коли автоматичні боти й зловмисники невпинно сканують сервери в пошуках вразливостей, адміністратори змушені тримати руку на пульсі безпеки. Особливо це стосується брутфорс-атак, коли зловмисники нескінченно перебирають паролі, сподіваючись підібрати правильний. Якщо сервер не захищений, рано чи пізно хтось дістанеться куди не слід На щастя, є інструмент, що допомагає блокувати таких "гостей" автоматично. Знайомтеся, Fail2Ban — програма, що аналізує логи та блокує IP-адреси, звідки надходить підозріла активність. Як це працює та як правильно налаштувати? Розбираємося.

Основні загрози, від яких захищає Fail2Ban

1. Брутфорс-атаки

Найчастіша загроза — автоматичний підбір пароля. Зазвичай атакують SSH (доступ до сервера через термінал), FTP (файловий доступ), поштові сервіси та адміністративні панелі сайтів.

2. DDoS-атаки на веб-додатки

Деякі зловмисники закидають веб-сервери безліччю запитів, аби перевантажити їх і вивести з ладу. Fail2Ban може виявити таку активність й блокувати IP-адреси атакуючих.

3. Злом CMS та веб-додатків

Спроби експлуатації вразливостей у WordPress, Joomla та інших CMS теж фіксуються в логах. Fail2Ban може моніторити їх і блокувати IP, що помічені в " поганих " діях.

Як працює Fail2Ban?

Fail2Ban аналізує логи (наприклад, /var/log/auth.log для SSH) та шукає повторювані невдалі спроби входу. Якщо з одного IP було занадто багато невдалих спроб за короткий час, програма використовує iptables (або інший файрвол) для тимчасового блокування цієї адреси.

Основні компоненти:

  • Jail (в'язниця) — правило, що визначає, які логи моніторити та які дії виконувати при виявленні підозрілої активності.
  • Filter (фільтр) — шаблон пошуку підозрілих записів у логах.
  • Action (дія) — команда, що виконується при спрацьовуванні фільтра (наприклад, блокування IP).

Встановлення Fail2Ban

У більшості дистрибутивів Linux Fail2Ban можна встановити стандартною командою:

# Для Debian/Ubuntu
sudo apt update && sudo apt install fail2ban -y

# Для CentOS/RHEL
sudo yum install epel-release -y && sudo yum install fail2ban -y

Після встановлення Fail2Ban одразу починає працювати, але потребує налаштування.

Основні налаштування та конфігурація

Основний файл конфігурації /etc/fail2ban/jail.conf змінювати не рекомендується — краще створити jail.local:

 

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Відкриваємо jail.local та налаштовуємо:

[DEFAULT]
bantime = 600  # Час блокування (в секундах)
findtime = 300  # Інтервал аналізу логів
maxretry = 5  # Кількість невдалих спроб до блокування

Налаштування захисту SSH

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

Налаштування захисту поштових сервісів

[postfix]
enabled = true
filter = postfix
logpath = /var/log/mail.log
maxretry = 5

[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5

Налаштування захисту MySQL

[mysqld-auth]
enabled = true
filter = mysqld-auth
logpath = /var/log/mysql.log
maxretry = 3

Настройка защиты Apache и Nginx

[apache-auth]
enabled = true
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 5

[nginx-auth]
enabled = true
filter = nginx-auth
logpath = /var/log/nginx/error.log
maxretry = 5

Після внесення змін обов'язково перезапускаємо службу:

sudo systemctl restart fail2ban

Моніторинг та управління Fail2Ban

Перевірити активні "в'язниці":

 

sudo fail2ban-client status

Подивитися заблоковані IP для SSH:

sudo fail2ban-client status sshd

Розблокувати IP вручну:

sudo fail2ban-client set sshd unbanip 192.168.1.100

На закінчення

Fail2Ban — звичайно ж, не панацея від усіх кібератак, але це потужний інструмент, що здатний значно знизити ризики.

Налаштування займає кілька хвилин, а користь — величезна. Якщо у вас ще немає Fail2Ban на сервері, саме час його встановити й спати спокійніше.