Описание
Fail2Ban — это утилита для повышения безопасности серверов, которая автоматически блокирует IP-адреса, совершающие подозрительную активность, например:
– многократные неудачные попытки входа в систему,
– перебор паролей (brute-force),
– попытки эксплуатации уязвимостей.
⚙️ Как работает Fail2Ban:
-
Мониторинг логов: Fail2Ban анализирует системные и сервисные лог-файлы (например,
auth.log,mail.log,nginx/error.log,zimbra/mailbox.logи т. д.). -
Поиск шаблонов ошибок: Он использует регулярные выражения для поиска записей, указывающих на неудачные попытки входа, ошибки аутентификации и другие потенциальные атаки.
-
Блокировка IP-адреса: Если один и тот же IP превысил заданный лимит ошибок за короткий промежуток времени, Fail2Ban добавляет его в блокировку через
iptables,nftables,firewalld,ipsetили другой backend-фильтр. -
Разблокировка: Через заданный интервал 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 - название тюрьмы