Fail2ban или CSF: защита почты от перебора
АйТи Фреш
Информационная безопасность

Как выбрать защиту почты от подбора паролей

Автор: , директор ООО «АйТи-Фреш» · · ~14 мин чтения
Сортировочный стол показывает, как журнал и firewall помогают защите почты
Сначала проверьте путь события до блокировки.

Для небольшого почтового сервера я обычно начинаю с Fail2ban, если его фильтры видят реальные ошибки входа, а действие блокировки проверено на используемом firewall. CSF решает похожую задачу другим набором средств, но важно понять, кто именно поддерживает установленную версию. Ни один пакет сам по себе не защищает пароль.

Как Fail2ban обнаруживает перебор паролей

Fail2ban не угадывает намерения подключившегося и не проверяет пароль сам. Настроенный фильтр ищет в доступном ему источнике журналов строки, которые соответствуют неудачной аутентификации. Когда число совпадений достигает заданного порога в выбранном временном окне, действие jail может добавить блокировку для адреса источника через настроенный сетевой фильтр. Так устроена цепочка: событие, запись, совпадение, действие. Когда я разбираю журналы корпоративной почты, начинаю с этого полезного механизма против повторяющихся попыток с одного адреса, но решение зависит от того, действительно ли приложение записало нужное событие и правильно ли фильтр разобрал его.

Из этого следует практическое ограничение: включённый Fail2ban ещё не означает, что защищена почта. На сервере может быть активна только jail для SSH, тогда как ошибки SMTP AUTH, IMAP или POP3 идут в другие журналы и требуют подходящего фильтра. Входящее SMTP-соединение само по себе тоже не равно попытке подобрать пароль: сопоставлять надо именно событие аутентификации, а не любую ошибку доставки письма. Я начинаю с нескольких настоящих записей об отказе и проверяю, что фильтр узнаёт их, а не просто смотрю на зелёный статус службы. Галочка бодрит, но журнал говорит правду.

Путь к журналу не универсален. Postfix обычно пишет через syslog, а конкретный файл зависит от настроек системы; сервер также может вести собственный файл журнала. Dovecot тоже настраивается на журналирование в выбранное место, а в контейнерной или журнальной конфигурации источник может выглядеть иначе. Поэтому вначале я устанавливаю, где лежат события именно на этом сервере, какие данные в них есть и какой адрес клиента записан. Если журналы не содержат подходящих отказов, корректный фильтр их не восстановит. Заодно проверяю права чтения и поведение при смене или ротации файла.

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

Схема работы Fail2ban по журналам почтовой аутентификации
Блокировка начинается с записи об отказе.

Что делает CSF и кто поддерживает его сборку

CSF — набор средств управления сетевыми правилами и наблюдения за неудачными входами; вместе с firewall в нём используется служба LFD. Поэтому описание «CSF действует на сетевом уровне, а Fail2ban — только по логам» слишком грубое: LFD также опирается на записи о входах, а Fail2ban применяет блокировку через настроенное действие firewall. По скорости защиты нельзя вынести общий вердикт без проверки конкретной системы. Важно, какие события распознаются, как создаются правила и понимает ли администратор, где посмотреть причину блокировки.

У CSF есть ещё вопрос сопровождения. Исходный разработчик Way to the Web закрылся 31 августа 2025 года. Начиная с 25 февраля 2026 года cPanel поддерживает собственный публичный форк с критическими исправлениями безопасности и стабильности для своей экосистемы; это не универсальная замена сопровождения любой Linux-сборки. Установки из других источников могут обновляться по другим правилам. Перед выбором я выясняю точное происхождение пакета, откуда приходят обновления и кто отвечает за устранение ошибок. Старое имя программы ещё не доказывает, что старый канал обновления жив.

Сами по себе CSF и Fail2ban не обязаны конфликтовать: это зависит от того, какие действия и правила заданы. Но две службы, меняющие сетевую фильтрацию, усложняют разбор состояния, если не договориться, какая отвечает за динамические блокировки, как снимается бан и где хранится причина. Я не ставлю их обе «на всякий случай». Сначала фиксирую текущие правила, проверяю сохранённый доступ администратора и тестирую блокировку на безопасном сценарии. Если связка уже работает, документирую её владельцев и проверяю, что изменение одного компонента не оставляет другого с устаревшим состоянием.

Я также выясняю, какую именно работу выполняет каждый компонент. Статическое правило firewall ограничивает доступ к сетевой службе, а обнаружение повторных ошибок входа зависит от того, что LFD или Fail2ban увидит соответствующую запись и распознает её. Если оба компонента создают динамические блокировки, у администратора должен быть единый порядок проверки: источник события, правило, срок его действия, причина исключения и процедура снятия. Иначе команда тратит время на поиск, какой именно механизм закрыл соединение. Двойной контроль может быть уместен, но только если владельцу понятно, что он контролирует.

Перед изменением сетевых правил проверьте путь возврата к серверу и согласуйте исключения для административного доступа.
Сравнение Fail2ban и CSF по журналам, действиям и сопровождению
Сверьте сборку и ответственного за правила.

Условный пример: почта открыта, а проверяется только SSH

Возьму учебную ситуацию на примере условной студии «Эльбрус-Строй»: на сервере работают Postfix и Dovecot, Fail2ban установлен, но пока настроен только для SSH. Это иллюстрация проверки, а не описание выполненного проекта и не статистика реальных взломов. В таком состоянии нельзя заключить, что почтовые входы уже защищены: сначала нужно понять, где приложения записывают отказы и какой адрес клиента попадает в строку журнала.

Я бы прошёл цепочку по шагам. Сначала проверил бы несколько записей о неудачной аутентификации и их источник. Затем сопоставил бы каждую запись с фильтром и убедился, что он извлекает адрес клиента, а не адрес внутреннего ретранслятора. После этого проверил бы, что jail срабатывает после выбранного порога и что действие добавляет правило именно в тот firewall, которым управляет сервер. Наконец, проверил бы, что правильный пароль и обычная отправка и получение почты продолжают работать, а административное подключение не заблокировано. Положительный результат здесь — воспроизводимый тест всей цепочки, а не обещание, что атак больше не будет.

Для демонстрации можно рассмотреть три отказа за 600 секунд и блокировку на 3600 секунд. Это пример значений maxretry, findtime и bantime, а не готовая норма для любой организации и не утверждение о настройке условной студии. Более жёсткий порог сокращает число попыток с одного адреса, но способен задеть сотрудников с ошибочно сохранённым паролем; слишком мягкий оставит больше попыток до реакции. Я выбираю значения после просмотра реального режима входов, проверяю исключения для доверенного доступа и оставляю понятный способ снять ошибочный бан. Иначе защитный механизм сам станет причиной заявки в поддержку.

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

Как настроить журнал, фильтр и пороги без копирования

В Postfix место журнала определяется конфигурацией syslog либо собственным механизмом записи. У Dovecot тоже есть параметры места вывода, а конкретная конфигурация зависит от установки. Я не переношу путь из чужой инструкции, пока не сверю его с текущей системой. На одном сервере это файл, на другом источник обслуживается системным журналом. Для Fail2ban нужно выбрать подходящий способ чтения и убедиться, что он видит новые события; старые записи из уже прочитанного файла не являются доказательством, что новые отказы поступают туда же.

Дальше я проверяю содержание записи. В ней должен быть понятен результат аутентификации и адрес, который надо блокировать. Фильтр тестирую на нескольких примерах успешного и неуспешного входа: совпадать должны отказы, а нормальный вход не должен считаться ошибкой. Это особенно важно после изменения версии почтового компонента или формата журналирования. Не стоит включать подробное логирование всех служб без причины: достаточно убедиться, что необходимые события фиксируются, и проверить, не попадают ли в журнал лишние чувствительные данные.

Три параметра задают разные части политики: maxretry — число совпадений до блокировки, findtime — окно, в котором они считаются, bantime — продолжительность блокировки. В примере выше я использовал три, 600 и 3600 секунд для наглядности. В конфигурации Fail2ban время допускает заданные форматы, но безопасные значения определяются не документацией, а поведением конкретных пользователей и сервисов. После изменения я проверяю фактическое число совпадений, появление и снятие правила, сообщения самой службы и сохранение работоспособности почты. Ротация или переезд журнала — отдельная проверка, а не повод верить, что мониторинг автоматически всё пережил.

Не путайте эту защиту с ограничением скорости приёма всей почты. Внешний SMTP-трафик может приходить от серверов, которым надо доставить письмо, а Fail2ban в этом материале настраивается на отказы аутентификации. Правило должно срабатывать именно на проверяемый механизм входа, а не на произвольный отказ при доставке. Для публичного сервера исходящие соединения, приём писем, пользовательская отправка и веб-интерфейс могут иметь разные настройки и журналы. Я записываю, какой компонент отвечает за каждый сценарий, чтобы после замены почтовой версии не считать прежний фильтр автоматически подходящим.

Если сервер собран на mailcow, сначала проверьте встроенную интеграцию Netfilter, похожую на Fail2ban: в документации есть настройки порога и времени блокировки, а распознаваемые события берутся из журналов контейнеров и задаются фильтрами. Решения о блокировке можно передавать внешнему firewall как источник списка, но такой экспорт выключен по умолчанию. Поэтому отдельный Fail2ban на хосте или CSF подключайте только после того, как определили владельца динамических блокировок и проверили всю цепочку. Иначе одни и те же отказы будут учитываться несколькими механизмами, а причина бана станет менее понятной.

Дерево проверки Fail2ban перед включением блокировки почты
Проверьте всю цепочку до запуска.

Почему блокировок мало: пароли и второй фактор

Блокировка адреса ограничивает повторные попытки, но не делает слабый или повторно использованный пароль сильным. Она также не останавливает вход с другого адреса или использование уже украденных учётных данных. Поэтому я отдельно проверяю парольную политику, отключённые и неиспользуемые ящики, доступ администратора и обновления почтовой системы. Защита от перебора отвечает на один сценарий; остальные меры закрывают другие причины захвата учётной записи.

Двухфакторная аутентификация полезна там, где её действительно проверяет выбранный способ входа. Нельзя обещать, что она «невозможна для обхода», и нельзя считать, что все почтовые серверы поддерживают одинаковый сценарий. Например, в mailcow пользователю с включённой 2FA для внешних почтовых приложений нужны пароли приложений. Это влияет на настройку клиентов и порядок отзыва доступа; перед включением я сверяю инструкцию именно используемого продукта и проверяю веб-доступ вместе с почтовым клиентом. Подробно этот слой разобран в материале о двухфакторной защите корпоративной почты.

Я рассматриваю защиту как набор проверяемых барьеров: уникальные пароли, второй фактор там, где он поддержан, контроль неудачных входов, исправления программ и наблюдение за исходящей почтой. Последнее помогает заметить ситуацию, когда злоумышленник вошёл с верными данными и начал рассылку: Fail2ban такое событие не превращает автоматически в перебор. Для почтового сервера полезно заранее определить, кто получает сигнал, как проверяются необычные отправки и как быстро отключается скомпрометированная учётная запись. Список мер подробнее собран в статье про безопасность почтового сервера.

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

Что выбрать небольшой компании

Для Linux-сервера с понятными журналами и администратором, который проверит фильтры и firewall, я чаще выбираю Fail2ban как один из простых механизмов блокировки повторных отказов. Не потому, что он всегда эффективнее, а потому, что его задачу легко показать и проверить. Если у компании уже есть CSF, сначала проверяю, какая именно сборка установлена, кто выпускает для неё обновления и как LFD вписывается в текущие правила. Для установки в экосистеме cPanel отдельно смотрю документацию cPanel; переносить выводы о ней на произвольный сервер нельзя.

Сравнивать стоит не число функций в описании, а то, сможет ли дежурный специалист ответить на пять вопросов: какой журнал отслеживается, какие записи считаются ошибкой, какой адрес попадёт под бан, где посмотреть причину и как восстановить доступ после ложного срабатывания. Я также проверяю, кто следит за обновлениями и как меняется конфигурация после обновления системы. Если эти ответы никому не принадлежат, дополнительный firewall не превращает незакреплённую ответственность в защиту. Для настройки Postfix с Fail2ban есть отдельный практический разбор фильтров; здесь же важен выбор и эксплуатация средства.

Мой критерий готовности простой: тестовый отказ распознан, адрес в записи совпадает с адресом блокировки, правило появляется и снимается ожидаемо, обычные пользователи сохраняют доступ, а владелец конфигурации знает, где проверить её состояние. Это можно показать на стенде до изменения продуктивного firewall. Если тест провалился, чинить надо конкретную часть цепочки — журнал, фильтр, действие или правило исключения — и повторять проверку. Так мы получаем работающую защиту от определённого класса перебора, а не рекламное обещание полной безопасности.

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

Частые вопросы

Что лучше для почты: Fail2ban или CSF?

Выбирайте по журналам, firewall и сопровождению. Для любой сборки сначала выясните, кто обновляет её и как проверить блокировку.

Fail2ban защищает Postfix и Dovecot сразу после установки?

Нет. Нужно проверить, что настроены фильтры для нужных событий аутентификации, источник журнала и действие firewall.

Можно ли одновременно использовать Fail2ban и CSF?

Технически это зависит от конфигурации. Заранее распределите владельцев правил, проверьте снятие блокировки и протестируйте ложное срабатывание.

Подходят ли три попытки за десять минут всем?

Нет. Это пример порога, а не универсальная рекомендация. Подберите значения по журналам и проверьте влияние на обычных пользователей.

Поможет ли 2FA при входе из почтового клиента?

Зависит от продукта и способа входа. Например, mailcow требует отдельный пароль приложения для внешнего почтового клиента.

Сколько стоит настройка Fail2ban для почты?

Отдельной цены на настройку Fail2ban в доступном прайсе нет. Обслуживание сервера указано от 7 000 ₽ в месяц; объём работ нужно согласовать.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Источники

© ООО «АйТи-Фреш» · Москва · Все статьи