Описание

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

⚙️ Как работает Fail2Ban:

  1. Мониторинг логов: Fail2Ban анализирует системные и сервисные лог-файлы (например, auth.log, mail.log, nginx/error.log, zimbra/mailbox.log и т. д.).

  2. Поиск шаблонов ошибок: Он использует регулярные выражения для поиска записей, указывающих на неудачные попытки входа, ошибки аутентификации и другие потенциальные атаки.

  3. Блокировка IP-адреса: Если один и тот же IP превысил заданный лимит ошибок за короткий промежуток времени, Fail2Ban добавляет его в блокировку через iptables, nftables, firewalld, ipset или другой backend-фильтр.

  4. Разблокировка: Через заданный интервал IP автоматически разблокируется, если не было новых нарушений.

🔐 Пример применения:

  • Блокировка перебора паролей на почтовом сервере Zimbra через анализ mailbox.log.
  • Защита SSH, FTP, SMTP, Apache/Nginx и других сервисов.

📁 Основные компоненты:

  • Jail – определяет, какой лог-файл проверять, какое правило применять, и какие действия предпринимать.

  • Filter – регулярное выражение, описывающее шаблон “плохой” активности в логе.

  • Action – команда, которую выполнить при срабатывании (например, iptables-бан IP).

Установка

apt update && apt upgrade -y && apt install fail2ban -y && systemctl enable fail2ban

Логи

tail -f /var/log/fail2ban.log # Основной лог journalctl -u fail2ban --no-pager    # Лог через systemd (если нет прав на файл)  

Команды

systemctl start fail2ban # Запустить fail2ban systemctl stop fail2ban  # Остановить fail2ban systemctl restart fail2ban # Перезапустить fail2ban fail2ban-client -t # Проверить конфигурация на корректность fail2ban-client status # Показать активные тюрьмы (jails) fail2ban-client status <jail>  # Проверить статус конкретной тюрьмы (например, sshd) fail2ban-client ping # Проверить, работает ли fail2ban (должен ответить pong) fail2ban-client --version  # Проверить версию fail2ban fail2ban-client set <jail> banip <IP>  # Забанить IP вручную fail2ban-client set <jail> unbanip <IP>  # Разбанить IP jail - название тюрьмы