Гид по технологиям

Установка и базовая настройка Fail2Ban на Fedora/CentOS

5 min read Безопасность Обновлено 27 Nov 2025
Fail2Ban на Fedora/CentOS — установка и настройка
Fail2Ban на Fedora/CentOS — установка и настройка

Скриншот: лог Fail2Ban и статус сервиса на сервере

Что такое Fail2Ban

Fail2Ban — утилита для анализа логов и временной или постоянной блокировки IP-адресов, совершивших слишком много неудачных попыток аутентификации. Она добавляет правила в iptables (или другой брандмауэр), чтобы блокировать злоумышленников, и может отправлять оповещения по почте.

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

Важно: Fail2Ban ориентирован на службы с логами (SSH, веб‑серверы и др.). Он не защищает от всех типов атак, например, от уязвимостей приложения.

Требования

  • Сервер на базе Fedora 33 или CentOS 8.
  • Непривилегированный пользователь с sudo.
  • Редактор nano (в примерах используется он).

Установите nano, если нужно:

$ sudo dnf install nano -y

Установка Fail2Ban

На CentOS 8 сначала включите репозиторий EPEL:

$ sudo dnf install epel-release

Fedora 33 уже содержит пакет Fail2Ban.

Установите Fail2Ban на обе системы:

$ sudo dnf install fail2ban

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

$ sudo systemctl enable fail2ban
$ sudo systemctl start fail2ban

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

$ sudo systemctl status fail2ban
? fail2ban.service - Fail2Ban Service
     Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2020-11-02 21:15:59 UTC; 5s ago
       Docs: man:fail2ban(1)
    Process: 19031 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 19032 (f2b/server)
      Tasks: 3 (limit: 1125)
     Memory: 11.0M
        CPU: 96ms
     CGroup: /system.slice/fail2ban.service
             ??19032 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start

Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Starting Fail2Ban Service...
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Started Fail2Ban Service.
Nov 02 21:15:59 howtoforge-tutorial fail2ban-server[19032]: Server ready

Основы конфигурации

Файлы конфигурации лежат в каталоге /etc/fail2ban. В нём находится jail.conf — файл поставщика, который обновляется при апгрейдах и не должен редактироваться напрямую.

Правильный подход: создать /etc/fail2ban/jail.local и туда вносить ваши изменения. Также можно добавлять файлы в /etc/fail2ban/jail.d/ для отдельных настроек.

Порядок применения конфигураций (от базового к верхнему):

  1. /etc/fail2ban/jail.conf
  2. /etc/fail2ban/jail.d/*.conf (по алфавиту)
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local (по алфавиту)

jail.conf содержит секцию [DEFAULT] и секции для сервисов. Любую секцию можно переопределить через .local.

Пример: создание jail.local

Создадим базовый конфиг:

$ sudo nano /etc/fail2ban/jail.local

Вставьте:

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override backend=auto in /etc/fail2ban/jail.conf
backend = systemd

[sshd]
enabled = true

Сохраните (Ctrl+X, Y) и перезапустите Fail2Ban:

$ sudo systemctl restart fail2ban

Проверка статуса через fail2ban-client:

$ sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

Подробный статус конкретной тюрьмы (jail):

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

Важно: после изменения конфигов всегда перезапускайте сервис и проверяйте логи.

Частые настройки

Белый список IP

Чтобы игнорировать доверенные адреса, добавьте в [DEFAULT]:

[DEFAULT]
ignoreip = 127.0.0.1/8 123.45.67.89

Или динамически для конкретной jail:

$ sudo fail2ban-client set JAIL addignoreip 123.45.67.89

Замените JAIL на имя тюрьмы (например, sshd).

bantime, findtime, maxretry

  • bantime — время бана в секундах. Отрицательное значение = вечный бан. По умолчанию 600.
  • findtime — интервал (в секундах), за который считаются попытки для срабатывания правила.
  • maxretry — число неудачных попыток до бана.

Пример в /etc/fail2ban/jail.local:

bantime = 3600
findtime = 300
maxretry = 4

Оповещения по e‑mail

Требуется MTA. В примере используем sendmail:

$ sudo dnf install sendmail

Добавьте в [DEFAULT]:

destemail = [email protected]
sendername = Fail2Ban
mta = sendmail
action = %(action_mw)s

Пояснение: action может быть %(action_)s (только бан), %(action_mw)s (бан + mail с whois), %(action_mwl)s (бан + mail + лог‑фрагменты).

Если используете Postfix, укажите mta = mail.

Настройки для отдельных jails

SSHD

Пример расширенной секции для SSH:

[sshd]

enabled = true
port = ssh
logpath = %(ssh_log)s

Если SSH слушает нестандартный порт, укажите порт числом. %(ssh_log)s берётся из /etc/fail2ban/paths-common.conf.

Nginx

Fail2Ban включает некоторые фильтры для Nginx. Пример для проверки авторизации:

[nginx-http-auth]
enabled = true

Для ботов, запрашивающих несуществующие пути, можно включить nginx‑badbots:

[nginx-badbots]
enabled  = true

Многие Nginx‑jail придётся создать вручную, используя примеры из filter.d.

Фильтры и failregex

Фильтры лежат в /etc/fail2ban/filter.d и описывают регулярные выражения (failregex), по которым парсятся логи.

Посмотреть доступные фильтры:

$ ls /etc/fail2ban/filter.d

Файлы, например nginx-badbots.conf и nginx-http-auth.conf, содержат регулярные выражения. Создавать и отлаживать регулярки — отдельная задача; здесь мы даём основу.

Мониторинг и отладка

  • Проверить сервис systemd:
$ sudo systemctl status fail2ban
  • Просмотреть логи systemd для unit:
$ sudo journalctl -b -u fail2ban
  • Узнать список jails и их статус:
$ sudo fail2ban-client status
$ sudo fail2ban-client status 
  • Смотреть лог Fail2Ban:
$ sudo tail -F /var/log/fail2ban.log
  • Посмотреть правила iptables:
$ sudo iptables -L
$ sudo iptables -S

Важно: на современных системах может использоваться nftables вместо iptables. Убедитесь, что action в конфиге совместим с вашей системой.

Когда Fail2Ban не срабатывает

  • Логи пишутся не в тот файл, который вы отслеживаете. Проверьте logpath.
  • Регулярные выражения в фильтре не покрывают формат лога — отладьте failregex.
  • Backend (journal/syslog) указан неверно; для systemd используйте backend = systemd.
  • Фаервол управляется внешним менеджером (firewalld, nftables) — настройте соответствующий action или совместимый модуль.

Быстрый SOP — проверка и восстановление работы

  1. Проверить, активен ли fail2ban: sudo systemctl status fail2ban
  2. Просмотреть последние строки лога: sudo tail -n 200 /var/log/fail2ban.log
  3. Убедиться в правильности logpath и backend в /etc/fail2ban/jail.local
  4. Перезапустить сервис: sudo systemctl restart fail2ban
  5. Проверить список забаненных IP: sudo fail2ban-client status
  6. Если нужно снять бан: sudo fail2ban-client set unbanip

Чеклист ролей

Администратор:

  • Установить пакет и MTA
  • Настроить jail.local
  • Настроить whitelist
  • Настроить мониторинг логов

Команда безопасности:

  • Проверить и адаптировать failregex для критичных приложений
  • Настроить оповещения и процедуру реагирования

Критерии приёмки

  • Fail2Ban установлен и запущен
  • sshd‑jail активен и появляется в списке jails
  • После N неудачных попыток IP попадает в список забаненных
  • Оповещения по e‑mail приходят при срабатывании (если настроено)
  • Логи и правила firewall отражают блокировки

Итоги

Fail2Ban — эффективный инструмент для блокировки автоматизированных попыток входа через анализ логов. Правильная конфигурация jail.local, корректные filter.d и тестирование — ключ к надёжной защите. Используйте белые списки для доверенных адресов, настраивайте время бана по риск‑модели и подключайте оповещения при необходимости.

Важно: Fail2Ban — часть стратегии защиты. Комбинируйте с обновлениями ПО, настройкой SSH (ключи, нестандартный порт, отключение root) и мониторингом сетевой активности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро