Как работает защита сервера через Fail2Ban
Каждый день тысячи злоумышленников пытаются получить несанкционированный доступ к системам, выходящим в интернет, в том числе и к вашим серверам. Чтобы минимизировать риски взлома, необходимо выстроить надежную защиту вашей инфраструктуры, которая будет самостоятельно блокировать подозрительные активности. Разбираемся с одним из инструментов защиты Linux- и FreeBSD-серверов — Fail2Ban: как работает этот сервис, как его установить и настроить, какие задачи он будет решать на сервере.
Что такое Fail2Ban
Fail2Ban — открытый программный пакет, разработанный для защиты систем Linux от повторных атак. Эффективен в связке с SSH, Apache и Nginx, где частые неудачные попытки входа традиционно трактуются как признаки активной атаки. Программа анализирует лог-файлы (log), выявляет подозрительную активность — повторяющиеся неудачные попытки авторизации (fail) и при необходимости блокирует (ban) IP-адреса, с которых совершаются подобные действия.
Этот инструмент поставляется в виде набора скриптов и файлов конфигураций, прост в применении и гибок в настройке. Хотя изначально он был создан для работы с iptables, сегодня Fail2Ban умеет взаимодействовать с иными фаерволами — типа firewalld и nftables. Пакет поставляется с готовыми конфигурациями для популярных служб. Установка и работа с Fail2Ban не требует глубоких знаний — вы можете быстро настроить защиту, не имея большого опыта администрирования серверов.
Как Fail2Ban обнаруживает атаки
Этот сервис постоянно мониторит лог-файлы разных служб. Например, если злоумышленник пытается подобрать пароль к SSH, система будет записывать каждую попытку входа в соответствующий log-файл. Fail2Ban прочитает эти записи, распознает шаблоны неудачных авторизаций и определит, когда число попыток превысит заданный порог.
После этого программа выполнит заранее предусмотренное действие — обычно это блокировка (ban) IP-адреса на определённый промежуток времени. Таким образом Fail2Ban защищает servers от брутфорса и других типов автоматических attacks. Помимо блокировки адресов сервис может отправлять уведомления администратору, использовать свои собственные фильтры и вызывать внешние сценарии при обнаружении угроз.
Нужно понимать, что Fail2ban — всё же не полноценная система предотвращения вторжений, а лишь дополнительный слой безопасности. Он не заменяет антивирусы, фаерволы или другие средства защиты, но отлично дополняет их.

Быстрая установка Fail2Ban (Ubuntu/Debian)
Она несложная и занимает всего пару минут. Наберите в терминале команды:
sudo apt update && sudo apt install fail2ban
Затем установите Fail2Ban server как автозапускаемый компонент:
sudo systemctl enable fail2ban
Проверьте его статус:
sudo systemctl status fail2ban
При необходимости запустите сервис вручную:
sudo systemctl start fail2ban
Далее для полноценной защиты понадобится дополнительная настройка.
Минимальная настройка: файл jail.local
После установки Fail2Ban использует файл /etc/fail2ban/jail.conf
в качестве основного источника настроек. Однако не стоит редактировать его напрямую, поскольку при обновлении пакета содержимое может быть перезаписано. Вместо этого скопируйте файл etc/fail2ban/jail.conf
в /etc/fail2ban/jail.local
и пропишите желаемые параметры для каждой службы:
bantime
— время блокировки IP;findtime
— временной интервал неудачных попыток;maxretry
— максимальное число неудачных попыток до бана.
Значения этих параметров определяют, как часто и при каких условиях будет происходить блокировка. Такой подход позволит сохранить пользовательские настройки после обновления.
SSH-защита
SSH — одна из часто атакуемых служб. Fail2Ban изначально уже содержит готовые правила мониторинга подключений и блокирования подозрительной активности.
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 900
findtime = 600
С такой конфигурацией при запуске Fail2Ban активируется мониторинг SSH-службы и устанавливается максимальное число неудачных попыток входа равным пяти, время блокировки — 15 минут, а временное окно для подсчета попыток — 10 минут.
Дополнительно возможно настроить исключения доверенных IP-адресов, чтобы предотвратить случайный бан административных подключений.
Защита служб Apache/Nginx
Для веб-серверов можно использовать фильтры от сканирования уязвимостей и брутфорсов.
Защита Apache:
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /va
r/log/apache2/error.log
maxretry = 5
bantime = 900
[apache-badbots]
enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/apache2/access.log
maxretry = 4
bantime = 900
Для Nginx конфигурация будет аналогичной, но с соответствующими путями к логам:
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 4
bantime = 900
Теперь перезапустите сервис fail2ban, чтобы инициировать новые настройки.
Полезные команды для проверки статуса
Завершив настройку, проверьте, что Fail2ban работает корректно. Вот несколько полезных команд:
-
Просмотр статуса всех jail'ов:
sudo fail2ban-client status
-
Подробные сведения о конкретном jail'е:
sudo fail2ban-client status sshd
-
Перечень забаненных IP для SSH:
sudo fail2ban-client get sshd banned
-
Ручная блокировка адреса:
sudo fail2ban-client set sshd banip 188.233.108.60
-
Разблокировка IP:
sudo fail2ban-client set sshd unbanip 188.233.108.60
-
Перезагрузка конфигурации без остановки сервиса:
sudo fail2ban-client reload
Эти команды обеспечивают полный контроль над работой Fail2ban — у вас будет возможность быстро реагировать на изменяющиеся условия безопасности.
Заключение
Если у вас до сих пор не установлен пакет Fail2ban, самое время развернуть его, настроить и начать работать над повышением уровня безопасности вашего Linux-сервера. Установка и конфигурация займут минимум времени, а эффект от работы вы ощутите практически сразу. Автоматическая блокировка подозрительных IP-адресов и регулярный анализ содержимого лог-файлов помогут вашему ресурсу противостоять многим типам атак, причем защита SSH, Apache, Nginx и других служб не приведет к заметному увеличению нагрузки на систему.
Установка и настройка Fail2Ban не потребуют больших усилий, а его функциональность значительно улучшит безопасность сервера. Надеемся, что теперь вы понимаете, как работает этот сервис и от каких угроз он может защитить ваши интернет-ресурсы.