Что такое 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 на сервере, самое время его установить и спать спокойнее.