Fail2ban — это инструмент, который автоматически обнаруживает атакующие IP-адреса и временно или постоянно блокирует их через iptables или firewalld. Он работает как фоновая служба и постоянно мониторит лог-файлы. Если с одного IP происходит много неудачных попыток входа или подозрительных запросов, Fail2ban блокирует этот IP. Это очень эффективный способ защиты, потому что он работает автоматически без вмешательства человека.
Что такое Fail2ban и как он работает
Fail2ban — небольшая программа на Python, которая анализирует лог-файлы с помощью регулярных выражений. Для каждого защищаемого сервиса пишется отдельный фильтр, в котором определяется, какой текст считается попыткой брутфорса. Например, в логе SSH строка "Failed password for" появляется при неудачной попытке входа. Fail2ban подсчитывает такие события и при превышении порога блокирует IP. Срок блокировки настраивается — от нескольких минут до постоянной блокировки.
Установка в Ubuntu и Debian
Fail2ban есть в стандартных репозиториях всех популярных дистрибутивов Linux. В Ubuntu и Debian устанавливается одной командой через apt. После установки служба запускается автоматически и защита SSH включена по умолчанию. В CentOS, AlmaLinux или Rocky Linux используются yum или dnf, но сначала может понадобиться добавить репозиторий EPEL. После установки нужно проверить статус через systemctl и убедиться, что служба работает.
Настройка jail и фильтров
В Fail2ban каждый защищаемый сервис называется "jail". Все настройки хранятся в файле jail.local, и не рекомендуется менять исходный jail.conf, потому что он перезаписывается при обновлениях. В каждом jail указывается путь к логу, какой фильтр использовать, сколько попыток до блокировки и срок блокировки. Стандартные настройки для SSH хорошие, но для сервисов на нестандартных портах нужно писать jail вручную.
Защита веб-сервера и FTP
Для Nginx и Apache есть готовые фильтры — они отслеживают 404 ошибки, попытки входа и другую подозрительную активность. Для сайта на WordPress пишется специальный фильтр для блокировки брутфорса по wp-login.php. Для ProFTPD, vsftpd и других FTP-серверов есть готовые jails, их нужно только включить. Для почтовых серверов — Postfix, Dovecot — тоже есть фильтры, это защищает от спам-ботов.
Практика Sayt.uz
На серверах Sayt.uz Fail2ban установлен и настроен на всех клиентских серверах по умолчанию. После 5 неудачных попыток на SSH порт IP блокируется на 24 часа. Для веб и почтовых сервисов jails тоже включены. Клиенты могут видеть в кабинете, какие IP заблокированы, и при необходимости добавить доверенный IP в белый список. По нашим данным, после включения Fail2ban брутфорс попытки уменьшаются на 95%.