Работа с fail2ban

Что такое fail2ban и зачем он нужен

Каждый публичный сервер ежедневно подвергается тысячам автоматических атак: брутфорс SSH, сканирование уязвимостей, попытки SQL-инъекций. Большинство этих атак ведётся ботами, которые последовательно перебирают пароли или ищут дыры в веб-приложениях. Fail2ban — это утилита с открытым исходным кодом, которая автоматически блокирует IP-адреса, ведущие подозрительную активность, анализируя системные логи в реальном времени.

Fail2ban работает на уровне операционной системы: он читает лог-файлы, ищет в них паттерны неудачных попыток входа или других нарушений, и при превышении порога — добавляет IP-адрес нарушителя в правила файрвола (iptables, firewalld и др.). Через заданное время блокировка снимается автоматически.

Как работает fail2ban: jails, filters, actions

Архитектура fail2ban построена на трёх ключевых концепциях:

  • Jail (тюрьма) — конфигурационная единица, которая объединяет фильтр и действие для конкретного сервиса. Например, jail sshd отслеживает неудачные попытки входа по SSH.
  • Filter (фильтр) — регулярное выражение, по которому fail2ban ищет нарушения в лог-файлах. Фильтры хранятся в /etc/fail2ban/filter.d/.
  • Action (действие) — команда, выполняемая при блокировке IP. Чаще всего это добавление правила в iptables. Действия хранятся в /etc/fail2ban/action.d/.

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

Установка fail2ban на CentOS/RHEL

Установите EPEL-репозиторий (для доступа к fail2ban):

Установите fail2ban (включает fail2ban-client и сервер):

Включите и запустите сервис:

Проверьте статус:

Проверьте установку:

Настройка защиты Битрикс от SQL-инъекций

1С-Битрикс имеет встроенный модуль безопасности, который логирует попытки SQL-инъекций в файл /home/bitrix/www/bitrix/modules/security/logs/security.log. Настроим fail2ban для автоматической блокировки атакующих.

Создайте файл конфигурации jail:

Добавьте в него следующий конфиг:

Параметр maxretry = 1 означает немедленную блокировку после первой же попытки SQL-инъекции. bantime = 86400 — блокировка на 24 часа. Создайте файл фильтра:

Содержимое фильтра — регулярное выражение для поиска в логах Битрикс:

Проверьте синтаксис конфигурации перед применением:

Если ошибок нет — перезапускайте:

Настройка защиты SSH

Обязательно добавьте ваш IP в whitelist, чтобы не заблокировать себя. В файле /etc/fail2ban/jail.d/jail.local или через копирование основного конфига:

Для SSH создайте файл /etc/fail2ban/jail.d/sshd.local:

Если при запуске появляется ошибка «Sorry but the jail ‘sshd’ does not exist» — скопируйте основной конфиг и отредактируйте его:

Найдите секцию [sshd] и включите jail, добавив свой IP в whitelist:

Перезагрузите fail2ban для применения изменений:

Проверьте статус jail:

Полезные команды управления

Проверить статус конкретного jail и список заблокированных IP:

Заблокировать IP вручную:

Разблокировать IP вручную:

Дополнительная блокировка через iptables (временная и постоянная):

Просмотр правил iptables с номерами строк:

Настройка email-уведомлений

Fail2ban умеет отправлять письма при блокировке IP. В секции [DEFAULT] файла jail.local добавьте:

Параметр action_mwl означает «mail with log» — при бане будет отправлено письмо с фрагментом лога, вызвавшим блокировку. Убедитесь, что на сервере установлен и настроен sendmail или postfix.

Просмотр логов fail2ban

Основной лог fail2ban находится в /var/log/fail2ban.log. Для мониторинга в реальном времени используйте:

В логе вы увидите записи вида Ban 1.2.3.4 и Unban 1.2.3.4 — это подтверждает, что fail2ban работает корректно.

Заключение

Fail2ban — незаменимый инструмент для защиты Linux-серверов. Связка «fail2ban + Битрикс Security» эффективно отсекает попытки SQL-инъекций и брутфорса без ручного вмешательства. Главное правило: всегда добавляйте свой IP в whitelist до включения jail’ов, чтобы не заблокировать собственный доступ к серверу. После настройки регулярно проверяйте лог и статус jail’ов, чтобы убедиться в корректной работе защиты.