Автоматическая защита от нежелательных подключений
Почти любой сервер, доступный из интернета, со временем сталкивается с тысячами попыток угадать пароль. SSH, веб-панели, почтовые сервисы — всё это постоянно проверяют боты. Следить за такими событиями вручную и каждый раз добавлять IP в блокировку практически невозможно. Именно для этого нужен Fail2Ban.
Что делает
Fail2Ban — это демон, который анализирует лог-файлы и на время блокирует IP-адреса, откуда приходит слишком много неудачных попыток входа. Блокировка выполняется через правила файрвола, например iptables, nftables и другие механизмы. Когда срок бана заканчивается, IP автоматически снимается с блокировки.
По умолчанию поддерживаются логи SSH, Apache, Nginx, Postfix и множества других сервисов. При необходимости можно подключить любой лог-файл с собственным форматом.
Установка
В большинстве дистрибутивов нужный пакет уже доступен в репозиториях:
# Debian/Ubuntu
sudo apt install fail2ban
# RHEL/CentOS
sudo dnf install fail2banПосле установки стоит убедиться, что сервис работает:
fail2ban-client -h
fail2ban-client versionКак это настраивается
Настройки находятся в /etc/fail2ban. Главный файл — jail.conf, но редактировать его напрямую не рекомендуется. Вместо этого создают /etc/fail2ban/jail.local и задают в нём нужные переопределения.
Пример минимальной настройки для защиты SSH:
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600maxretry — это число неудачных попыток, допустимых за интервал findtime в секундах. Если лимит превышен, IP попадает в бан на bantime секунд.
В этом примере пять ошибок за 10 минут приведут к блокировке на один час.
Управление банами
Проверить активные джейлы и заблокированные IP:
sudo fail2ban-client status
sudo fail2ban-client status sshdСнять блокировку с IP вручную:
sudo fail2ban-client set sshd unbanip 1.2.3.4Fail2Ban уменьшает нагрузку от перебора паролей, но не заменяет полноценную аутентификацию.
Если сервис всё ещё использует пароли, лучше перейти на ключи или включить двухфакторную аутентификацию. В таком случае Fail2Ban остаётся полезным дополнительным уровнем защиты.