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

Что такое 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/уведомление при блокировках (опционально)
Мини-методология внедрения (шаги)
- Подготовить окружение (EPEL, обновления).
- Установить fail2ban и fail2ban-firewalld.
- Создать локальные конфиги (/etc/fail2ban/jail.d/*.local).
- Протестировать на тестовой машине.
- Перенести в прод, мониторить лог и корректировать правила.
Когда 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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента