Настройка Fail2Ban: почему перебор паролей доходит до сервиса
Точка входа сервиса открыта наружу по определению — иначе им не пользуются. Как только сервис доступен извне, он становится целью: автоматизированные попытки подбора учётных данных идут непрерывным потоком с распределённых адресов, и каждая оставляет запись в журналах доступа. Перебор паролей не требует взлома чего-то конкретного — достаточно слабых учётных данных и полного отсутствия реакции на попытки.
Именно здесь и теряется контроль. Журналы фиксируют каждый неудачный вход, но между появлением записи и решением заблокировать источник проходит время, за которое успевают пройти десятки тысяч запросов. Ручной разбор журнала не масштабируется, а простой порог «столько-то попыток с одного адреса» обходится: атака размазывает попытки по сотням источников, и по отдельности каждый остаётся ниже порога срабатывания.
Для работающего сервиса это не абстрактная угроза. Нагрузка на аутентификацию растёт, журналы распухают, легитимные пользователи в часы пик получают замедленный отклик и отказы входа. Если подбор учётных данных завершается удачей, злоумышленник получает ту же сессию, что и обычный клиент, и дальше действует внутри периметра, не привлекая внимания.
Fail2Ban закрывает этот разрыв: он читает журналы в темпе их появления и блокирует источник на уровне сетевого фильтра, пока попытки продолжаются. Но результат даёт не установка, а настройка Fail2Ban под конкретную точку входа — свои шаблоны фильтрации, отдельные сроки блокировки для разных сервисов, список доверенных адресов и отработанный порядок снятия бана. Даже страховочная блокировка собственного администратора обходится дороже самой атаки.
Ниже разбираем, как это закрывается без ложных срабатываний.
Что меняется после внедрения: классы атак и время реакции
До настройки основная часть обращений к точке входа — это подбор пароля, сканеры и боты, которые круглосуточно ходят по формам входа. Такой поток не ломает сервис сразу, но съедает слоты подключений, забивает журналы и повышает шанс, что одна из тысяч попыток окажется удачной. Fail2Ban закрывает именно этот класс отказов: правило считает неудачные попытки в заданном окне, при превышении порога блокирует источник и держит блокировку столько, сколько нужно.
Время реакции на инцидент меняется на порядок. Раньше цепочка выглядела так: дежурный замечает аномалию, разбирает журналы, вручную добавляет адрес в правила фильтрации — от всплеска до реакции проходили часы, а ночью и вовсе до утра. Теперь срабатывание автоматическое, и инженер получает уведомление уже о факте блокировки, а не о проблеме, которая всё ещё идёт.
По нагрузке эффект тоже измеримый: мусорные запросы перестают доходить до приложения, точка входа не упирается в лимит одновременных подключений, а простой сервиса из-за исчерпания ресурсов уходит как класс. Доступность сервиса перестаёт зависеть от того, кто на дежурстве и насколько быстро он успел среагировать.
Порядок работ здесь не менее важен результата. Сначала режим наблюдения и белые списки для офисных адресов, узлов мониторинга и подрядчиков, затем подбор порога и длительности окна под профиль трафика, и только потом реальная блокировка. Так настройка не отрезает своих, а собранная статистика показывает, какая доля обращений была паразитной — обычно она заметно снижает общую нагрузку на сервис.
Fail2Ban настройка: варианты размещения и режимы блокировки
Защиту от перебора ставят на самом сервисе, на пограничном узле или в отдельном контуре. Ограничитель один: фильтр видит только тот трафик, который через него проходит, поэтому охват схем различается, и выбор здесь делают по числу точек входа, а не по привычке.
| Вариант размещения | Когда подходит | Ограничения |
|---|---|---|
| Защита на сервере, рядом с сервисом | Один-два сервиса, устойчивый список узлов | Правила дублируются на каждом узле, новые узлы остаются без защиты до ручной правки |
| Защита на периметре: обратный прокси, балансировщик | Единая точка входа, сервисы стоят за прокси | Нужен корректный разбор исходного адреса клиента, иначе блокируются адреса самой прокси |
| Отдельный контур сбора логов | Десятки узлов, разнородные сервисы | Задержка реакции и зависимость от доставки логов |
Fail2Ban работает в любой из трёх схем: читает журналы сервиса, применяет правила и передаёт блокировку на межсетевой экран, а в контурном варианте получает те же записи из общей точки сбора.
Режимы блокировки и сроки удержания
Жёсткость режима выбирают по характеру трафика: мягкий — задержка и ограничение частоты обращений, средний — временная блокировка адреса на короткий срок, жёсткий — полная блокировка источника с нарастающим сроком при повторах.
Срок удержания нарушителя задаётся отдельно от порога срабатывания. Короткий отсекает случайные всплески, длинный и нарастающий держит настойчивый перебор, но требует разрешительного списка — иначе под блокировку попадут собственные инженеры и системы мониторинга.
Этапы внедрения: от аудита журналов до передачи в поддержку
Настройка Fail2Ban не сводится к установке пакета: правило, поставленное наугад, либо блокирует легитимных клиентов, либо молчит на реальной атаке. Поэтому идём последовательно — от наблюдения за журналами до документа, по которому ваша команда сможет сопровождать защиту сама.
- Аудит журналов. Снимаем срез за период: какие сервисы пишут о неудачных входах, в каком формате, как часто, есть ли ночные всплески и адреса-источники, повторяющиеся изо дня в день.
- Инвентаризация точек входа. Сводим в один список сервисы, порты и учётные записи, доступные извне, — иначе защита закроет часть входа, а остальное останется открытым.
- План внедрения и схема. Фиксируем, что блокируется, на какой срок, как задаются исключения для мониторинга, резервного копирования и служебных адресов.
- Настройка фильтров. Пишем шаблоны разбора под ваши форматы журналов и подбираем пороги срабатывания так, чтобы правило не отсекало живых пользователей.
- Проверка на тестовом контуре. Воспроизводим сценарий перебора: правило срабатывает, легитимный вход проходит, блокировка снимается по истечении срока.
- Вывод в рабочий режим. Первое время наблюдаем, разбираем спорные срабатывания и корректируем пороги — и только затем отдаём систему в сопровождение.
- Передача регламента. Отдаём документ: какие правила действуют, почему случаются ложные срабатывания и что делать при атаке.
Состав передачи: конфигурации фильтров, правила и регламенты
Настройка — это не разовая команда, а набор артефактов, который остаётся у вас в репозитории и на серверах. Мы передаём всё вместе с разбором: почему выбран такой порог, что попадёт под блокировку и как это откатить. Ниже — что именно вы получаете на руки.
- Конфигурации фильтров — отдельные наборы правил под конкретные сервисы: доступ по SSH, веб-сервер, почту, панель управления. Каждый фильтр проверен на реальных строках логов, а не на демонстрационных примерах.
- Пороги блокировки — значения
maxretry,findtimeиbantimeпо каждому сервису с обоснованием: для SSH и для формы входа они разные, потому что цена ложного срабатывания различается. - Доверительные списки — адреса офиса, выходных узлов защищённого доступа, систем мониторинга и резервного копирования. Отдельным пунктом — как список поддерживать при смене адресов, чтобы не заблокировать собственные проверки.
- Правила исключений — фильтры против блокировки легитимных роботов поисковых систем и внутренних сканеров, которые иначе регулярно попадают в бан и создают ложные уведомления.
- Схема взаимодействия с межсетевым экраном — какие цепочки используются, как снимается блокировка досрочно и как ведёт себя конфигурация при перезапуске узла.
- Регламент реакции — кто получает уведомление, за какое время разбирает, что делает при массовой атаке с сотен адресов и когда эскалирует вопрос.
- Документация — карта конфигураций, расположение логов, порядок воспроизведения настройки на новом узле и чек-лист проверки после обновления.
Всё это переживает смену подрядчика: инженер, который откроет комплект через полгода, поймёт логику решений без переписки с нами.
Кейс: защита отсекла перебор без потери легитимных входов
Что было до
Сервис авторизации держал наружу два входа — удалённый доступ администраторов и панель управления. В суточных журналах оседало 40–60 тысяч неудачных попыток входа, и почти все доходили до проверки пароля: единственным барьером оставалась его длина.
Штатные правила Fail2Ban были включены формально — один набор условий и порог, при котором блокировка срабатывала в лучшем случае раз в сутки. Перебор забивал журналы, реальные события в них терялись, а на разбор инцидента уходили часы.
Что изменили
Прошли по всем точкам входа и завели отдельный набор правил для каждой: удалённый доступ, панель, почта, веб-сервис. Порог вывели из фактического распределения — окно наблюдения 10 минут, блокировка после пяти неудач, при повторе с того же адреса срок растёт.
Белый список собрали из адресов офиса, защищённого канала и систем мониторинга. Правила фильтрации написали свои, а не шаблонные: часть попыток шла через прокси, и в журнал попадал адрес посредника, а не нарушителя.
Что получилось
До сервиса теперь доходит около двух сотен попыток в сутки вместо десятков тысяч — остальное отсекается на периметре. Время реакции на реальный инцидент сократилось с часов до минут: в журналах остались только осмысленные события.
Ложных блокировок за первый месяц — единицы, и каждая снималась одной командой без перезапуска службы, поэтому восстановление доступа занимало меньше минуты. Легитимные пользователи перемен не заметили: белый список и мягкий порог оставили им привычный сценарий входа.
Чем отличается блокировка на периметре от защиты на самом сервере?
Периметр — это точка применения защиты до того, как трафик дойдёт до приложения: внешний фильтр или балансировщик отсекает поток запросов целиком. Массовые атаки он гасит хорошо, но видит только сетевой уровень и не различает подбор пароля к панели администратора и перебор учётных записей через прикладной интерфейс.
Fail2Ban работает на самом сервере: серия неудачных входов из журнала службы превращается в правило файрвола, которое блокирует адрес на заданное время. Видно, с какой учётной записью и как часто пытались войти. Обратная сторона — нужно разбирать журналы всех служб со входом и вести белый список, иначе под бан попадут свои адреса или проверки мониторинга.
У каждого варианта свой предел: периметр не знает про логику приложения и пропускает медленный перебор с разных адресов, а серверная защита не масштабируется на десятки машин — при добавлении новых узлов списки блокировок расходятся, и узел начинает с чистого листа.
Смешанная схема закрывает обе дыры: периметр держит грубые всплески, а на серверах идёт точная реакция по журналам. Баны синхронизируются между узлами через общее хранилище, поэтому атакующий не переключается на соседний сервер после блокировки.
Отдельно настраивается видимость атак: сводка по попыткам входа и заблокированным адресам показывает, работает ли защита и где порог стоит ослабить или ужесточить. В настройке Fail2Ban этот слой решает не меньше, чем сами правила блокировки.
Частые сомнения: ложные срабатывания, доступы и совместимость
Большинство сомнений вокруг фильтрации перебора сводится к одному: не заблокирует ли защита своих. Узкие места предсказуемы — общий адрес у офиса или балансировщика, ошибочные вводы пароля в пиковые часы, сервисы, пишущие журналы в нестандартном формате. Разбираем каждое, потому что цена неверной настройки — не «неудобно», а потеря доступа к рабочему контуру.
Отдельная тема — включение на живом контуре. Правило и фильтр ставятся в режим наблюдения, статистика срабатываний собирается несколько суток, и только потом включается блокировка. Настройка идёт без остановки сервисов и окна простоя.
Сотрудник несколько раз ошибся паролем — его заблокирует?
Список доверенных адресов снимает этот риск: офисные подсети и адреса администраторов исключены из блокировки. Порог срабатывания настраивается под пиковые часы, а не под средний день.
Доступ идёт через прокси или балансировщик — что тогда?
Нужен разбор цепочки адресов и обработка заголовка пересылки: иначе все запросы видны как один адрес и первый же перебор отсечёт весь офис. Доверенные прокси вносятся отдельно, проверка — на реальном трафике.
Совместимо ли с сервисами, которые пишут журналы иначе?
Да, под нестандартный формат пишется свой фильтр и шаблон разбора. Логика проверяется на настоящих строках журнала, а не на синтетических примерах — иначе правило либо не сработает, либо сработает на нормальном входе.
Что делать с устаревшими правилами?
Ревизия перед запуском: снимаются зависшие блокировки, убираются фильтры под сервисы, которых уже нет, сверяется карта портов. Накопленный мусор даёт ложные срабатывания и мешает разбору инцидентов.
Обсудим задачу: что нужно от вас для быстрого старта
Чтобы обсуждение задачи сразу перешло в инженерную плоскость, а не в переписку с уточнениями, достаточно минимального набора сведений и доступов. Готовое техническое задание не нужно — опишите ситуацию своими словами, остальное соберём сами и вернёмся с оценкой и планом работ.
- Что защищаем: перечень серверов и сервисов, где fail2ban уже работает или только должен встать, и какая ветка используется сейчас.
- Точки входа: по каким портам идут подключения к SSH, панелям администрирования и веб-сервисам, есть ли нестандартные или опубликованные наружу.
- Доступы для старта: учётная запись с правами на чтение конфигураций и перезапуск службы либо подключение через защищённый канал с журналированием сессии.
- Что уже настроено: текущие правила блокировок, белые списки, связка с межсетевым экраном, способ доставки конфигурации на узлы.
- Как устроен вход сейчас: по ключам или паролю, где хранятся журналы, как вы отличаете своих от чужих.
- Приоритеты и сроки работ: что критично закрыть первым, есть ли окно обслуживания и ограничения на перезапуск сервисов.
- Ограничения: требования по безопасности, запрет на установку дополнительных пакетов, требования к хранению данных о блокировках.
Опишите задачу — вернёмся с оценкой, планом и границами работ.







