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

Установка и настройка Fail2Ban на Alma Linux 8

• 4 min read • Linux • Обновлено 23 Nov 2025
Fail2Ban на Alma Linux 8 — установка и настройка
Fail2Ban на Alma Linux 8 — установка и настройка

Скриншот панели управления безопасности сервера с Fail2Ban

Что такое Fail2Ban в одной строке

Fail2Ban — инструмент на Python, который следит за логами (например, SSH) и временно банит IP-адреса при множественных неудачных попытках аутентификации.

Основные требования

  • Сервер с Alma Linux 8.
  • Настроенный root-пароль или пользователь с sudo.

Проверка установки firewalld

По умолчанию firewalld обычно предустановлен в Alma Linux 8. Проверьте состояние командой:

systemctl status firewalld

Если служба не запущена, вы увидите сообщение об inactive. Запустите её так:

systemctl start firewalld

и снова проверьте статус:

systemctl status firewalld

Пример ожидаемого вывода (сокращённый):

? firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2022-02-19 08:57:14 UTC; 40s ago
     Docs: man:firewalld(1)
 Main PID: 7214 (firewalld)

Посмотреть текущие зоны и сервисы:

firewall-cmd --list-all

Ожидаемый пример вывода:

public (active)
  target: default
  interfaces: eth0 eth1
  services: cockpit dhcpv6-client ssh

Важно: Fail2Ban умеет работать с iptables и с firewalld. В этой инструкции мы включим поддержку firewalld.

Установка Fail2Ban

Fail2Ban отсутствует в стандартном репозитории Alma Linux. Установите EPEL и затем пакеты Fail2Ban:

dnf install epel-release -y

После добавления EPEL установите пакеты:

dnf install fail2ban fail2ban-firewalld -y

Запустите и включите автозапуск службы:

systemctl start fail2ban
systemctl enable fail2ban

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

systemctl status fail2ban

Ожидаемый фрагмент вывода:

? fail2ban.service - Fail2Ban Service
   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-02-19 08:58:34 UTC; 6s ago
   Main PID: 7840 (fail2ban-server)
Feb 19 08:58:35 linux fail2ban-server[7840]: Server ready

Базовая настройка Fail2Ban

Основной файл конфигурации: /etc/fail2ban/jail.conf. Не редактируйте его напрямую. Создайте локальную копию для вашей настройки:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Чтобы переключить Fail2Ban на использование firewalld, переименуйте файл конфигурации для firewalld в локальный:

mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local

Перезапустите Fail2Ban, чтобы применить изменения:

systemctl restart fail2ban

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

Защита SSH с помощью Fail2Ban

Создайте локальный джейл для SSH:

nano /etc/fail2ban/jail.d/sshd.local

Вставьте конфигурацию (пример — блокировка на 2 часа после 3 неудачных попыток):

# This configuration will block the remote host for 2 hours after 3 failed SSH login attempts. 
[sshd]
enabled = true
bantime = 2h
maxretry = 3

Сохраните файл и перезапустите сервис:

systemctl restart fail2ban

Проверка списка джейлов:

fail2ban-client status

Ожидаемый выход:

Status
|- Number of jail:  1
`- Jail list:   sshd

Информация по конкретному джейлу sshd:

fail2ban-client status sshd

Пример вывода с заблокированными IP:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 6
|  |- Total failed: 15
`- Actions
   |- Currently banned: 2
   |- Banned IP list:   96.9.67.48 43.154.142.8

Снять блокировку вручную:

fail2ban-client unban 

Замените на реальный адрес.

Дополнительные советы по настройке

  • Параметры времени: используйте bantime в удобном формате (s, m, h, d), например 10m или 1d.
  • maxretry определяет чувствительность. Меньше — строже.
  • Для логов systemd (journal) убедитесь, что фильтры в /etc/fail2ban/filter.d корректно сопоставляют сообщения.
  • Тестируйте правила на небоевом сервере перед развёртыванием в production.

Important: Откройте резервную сессию SSH перед экспериментами с блокировками, чтобы не заблокировать себя.

Роли и чек-лист внедрения

  • Системный администратор:
    • Установить epel-release и fail2ban.
    • Включить fail2ban и firewalld.
    • Создать sshd.local и протестировать его.
  • Инженер безопасности:
    • Настроить фильтры и проверить false-positive.
    • Провести аудит логов после включения.
  • Оператор (операции):
    • Добавить в runbook процедуру unban.
    • Мониторить количество заблокированных IP.

Чек-лист перед продом:

  • Сделан бэкап /etc/fail2ban
  • Проверены фильтры на тестовых логах
  • Настроен alert/уведомление при блокировках (опционально)

Мини-методология внедрения (шаги)

  1. Подготовить окружение (EPEL, обновления).
  2. Установить fail2ban и fail2ban-firewalld.
  3. Создать локальные конфиги (/etc/fail2ban/jail.d/*.local).
  4. Протестировать на тестовой машине.
  5. Перенести в прод, мониторить лог и корректировать правила.

Когда Fail2Ban может не сработать

  • Атаки идут через прокси/ботнет с высокой сменой IP — блокировка одного IP малоэффективна.
  • Логи имеют другой формат и фильтр не находит записи.
  • Сервис использует нестандартный порт и вы не настроили джейл для этого порта.

Альтернатива: комбинируйте Fail2Ban с rate-limiting на уровне CDN или используя специализированные WAF/IPS.

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

  • Fail2Ban запущен и активен: systemctl status fail2ban → active (running).
  • SSH-jail присутствует в fail2ban-client status.
  • После 3 неудачных попыток IP попадает в список заблокированных.
  • Оператор может снять бан с помощью fail2ban-client unban.

Быстрый справочник команд

  • Проверить статус firewalld: systemctl status firewalld
  • Установить EPEL: dnf install epel-release -y
  • Установить Fail2Ban: dnf install fail2ban fail2ban-firewalld -y
  • Запустить: systemctl start fail2ban
  • Перезапустить: systemctl restart fail2ban
  • Статус джейлов: fail2ban-client status
  • Информация по джейлу: fail2ban-client status
  • Снять бан: fail2ban-client unban

Решение для выбора банов (простое дерево)

flowchart TD
  A[Начало: обнаружена неудачная попытка] --> B{Кол-во неудач за окно}
  B -- < maxretry --> C[Записать в счётчик]
  B -- >= maxretry --> D[Заблокировать IP на bantime]
  D --> E[Логировать событие и уведомить]
  C --> F[Продолжать мониторинг]

Однострочный глоссарий

  • jail — конфигурация Fail2Ban для конкретного сервиса; фильтрует логи и применяет действия (бан).

Заключение

В этой инструкции показано, как установить Fail2Ban на Alma Linux 8, включить поддержку firewalld и настроить базовую защиту SSH. Настройте параметры bantime и maxretry под вашу политику безопасности и протестируйте правила на тестовом окружении.

Ключевые действия: установить epel-release, установить fail2ban и fail2ban-firewalld, создать локальные конфиги в /etc/fail2ban/jail.d и включить защиту SSH.

Поделиться: 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 быстро