Что такое Fail2ban и для чего он используется?

«Что такое Fail2ban и для чего он используется?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Fail2ban — это инструмент для защиты серверов от атак методом перебора (brute-force) и сканирования уязвимостей. Он работает на уровне операционной системы, анализируя логи служб (SSH, веб-серверы, FTP) и динамически блокируя IP-адреса, с которых поступают подозрительные запросы.

Принцип работы в DevOps-контексте:

  1. Мониторинг логов: Fail2ban отслеживает указанные файлы логов (например, /var/log/auth.log для SSH) в реальном времени.
  2. Фильтрация по регулярным выражениям: С помощью фильтров (sshd, nginx-http-auth) он идентифицирует неудачные попытки входа или вредоносные запросы.
  3. Действие (Action): При превышении лимита попыток (maxretry) в заданный промежуток времени инструмент выполняет действие — обычно добавляет правило для блокировки IP в локальный фаервол (iptables, nftables, firewalld).
  4. Истечение блокировки: После заданного времени (bantime) блокировка снимается.

Пример конфигурации для защиты SSH (/etc/fail2ban/jail.local):

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3          # Количество неудачных попыток
bantime = 600         # Время блокировки в секундах (10 минут)
findtime = 600        # Окно времени для подсчета попыток (10 минут)

Сильные и слабые стороны с точки зрения DevOps:

Плюсы Минусы
Гибкость: Можно писать кастомные фильтры для любого сервиса. Не панацея: Неэффективен против распределенных атак (DDoS) с большого числа IP.
Легкость развертывания: Устанавливается пакетным менеджером (apt install fail2ban). Ложные срабатывания: Требует тонкой настройки под паттерны доступа конкретного приложения.
Интеграция с мониторингом: Можно отправлять алерты о блокировках. Защита на уровне ОС: Не заменяет защиту на уровне приложения или сети (WAF).

В инфраструктурных практиках Fail2ban часто используется как дополнительный рубеж защиты на bastion-хостах и серверах с публичным доступом.