Категория: Обнаружение, реагирование и мониторингОбновлено 2026-10-27

fail2ban

fail2ban это широко используемый инструмент предотвращения вторжений, который следит за логами на предмет паттернов вроде повторных неудачных входов и временно или постоянно банит IP адрес источника через firewall сервера.

Как работает fail2ban в четыре шага: чтение логов, порог неудач, бан IP в firewall и проверка бана
fail2ban превращает повторные неудачные входы в логе во временную или постоянную блокировку в firewall.

Как он на самом деле решает забанить адрес

fail2ban отслеживает конкретные лог-файлы на паттерны, соответствующие неудачным попыткам входа, и как только исходный IP превышает настроенный порог неудач за заданное время, он даёт команду firewall сервера блокировать этот адрес, временно или постоянно.

Почему он дополняет, а не заменяет другие меры

fail2ban снижает объём попыток подбора, которые вообще доходят до момента проверки против вашей системы входа, но никак не усиливает сам вход, поэтому его обычно сочетают с аутентификацией по ключу, а не используют отдельно.

Установку, настройку jail и проверку работы смотрите здесь: руководство по настройке fail2ban.

Проверьте фильтр на реальных логах

Включённый jail всё равно может «не видеть» атак. Обычная причина в том, что фильтр не совпадает с форматом логов вашего дистрибутива, а fail2ban позволяет проверить это, никого не блокируя. Страница руководства fail2ban-regex(1) описывает инструмент, который читает лог (имя файла или systemd-journal) и фильтр, а затем сообщает, какие строки совпали. Запускайте его вместе с проверкой конфигурации:

sudo fail2ban-client -t
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
sudo fail2ban-regex systemd-journal /etc/fail2ban/filter.d/sshd.conf

Первая команда проверяет конфигурацию, как сказано на странице fail2ban-client(1). Если фильтр ничего не находит в логе, где явно есть неудачные входы, добавьте --print-all-missed, чтобы увидеть пропущенные строки: именно это несовпадение и есть причина, по которой jail никогда не забанит адрес. Страница jail.conf(5) добавляет две важные детали. Шаблон в logpath охватывает только файлы, существующие на момент запуска fail2ban, а backend auto переключается на журнал, только если лог-файлы не найдены и задан journalmatch. После любого изменения расположения логов перезагрузите конфигурацию и проверьте снова.

Проведите тестовый бан от начала до конца

Единственное доказательство работы бана: адрес, который вы видите в firewall. Забаньте вручную зарезервированный документационный адрес, убедитесь, что он появился, и снимите бан:

sudo fail2ban-client set sshd banip 203.0.113.9
sudo fail2ban-client get sshd banip --with-time
sudo nft list ruleset
sudo iptables -S
sudo fail2ban-client set sshd unbanip 203.0.113.9

Используйте ту из двух команд просмотра firewall, которая подходит вашему серверу. Согласно jail.conf(5), действие бана по умолчанию называется iptables-multiport, поэтому на сервере, где firewall управляется через nftables или другой инструмент, убедитесь, что выбранный дистрибутивом banaction действительно создаёт правило, которое вы видите. Если fail2ban считает адрес забаненным, а в firewall ничего нет, jail работает лишь для вида. Помните также, что ignoreself по умолчанию равен true, поэтому неудачные входы с собственных адресов сервера бан не вызывают, и это может исказить тест, запущенный с самой машины.

Когда изменение прошло проверку, примените его командой sudo fail2ban-client reload: она перечитывает конфигурацию без перезапуска сервера. Полную схему jail смотрите в руководстве по настройке, а SSH-часть той же защиты разобрана в руководстве по укреплению SSH.

Связанные термины: Jail в fail2ban, Intrusion prevention, Атака подбором, Rate limiting, MaxAuthTries, journalctl (просмотр журнала systemd).

Часто задаваемые вопросы

Работает ли fail2ban для сервисов, кроме SSH?

Да. Он поставляется с готовыми конфигурациями jail для многих распространённых сервисов, включая аутентификацию веб-серверов и почтовые серверы, и может быть расширен кастомными фильтрами для других логов.

Как долго обычно длится бан в fail2ban?

Это настраивается, от нескольких минут до постоянной блокировки, и во многих настройках используется нарастающее время бана, которое увеличивается для повторных нарушителей.

Может ли легитимный пользователь случайно попасть под бан fail2ban?

Да, если он достаточно раз ошибётся с учётными данными в заданном окне времени. Большинство настроек включают понятный способ запросить разблокировку или достаточно щедрый порог, чтобы избежать этого при обычном использовании.

Как проверить фильтр fail2ban, никого не блокируя?

Запустите fail2ban-regex с лог-файлом или systemd-journal и файлом фильтра. Инструмент покажет, какие строки совпали, а опция --print-all-missed выведет те, что не совпали.

Можно ли применить изменения fail2ban без перезапуска службы?

Да. Команда fail2ban-client reload перечитывает конфигурацию без перезапуска сервера, а fail2ban-client -t предварительно проверяет конфигурацию на ошибки.

Хотите увидеть, в каком состоянии ваш сервер?

Запустите бесплатную read-only проверку сервера или откройте Security Lab и посмотрите цикл обнаружение, сдерживание, восстановление, проверка в действии.

Получить бесплатную проверку сервераОткрыть Security Lab