Служба для отслеживания и блокирования брутфорса.
Для проверки анализирует журналы авторизации, обычно это- /var/log/auth.log, путь указывается в конфигах.
Для блокировки используется системный firewall. Правила поведения можно гибко настраивать скриптами.
Стандартная конфигурация прописана в файле /etc/fail2ban/jail.conf, его менять не следует, для настройки нужно создавать собственные файлы (*.conf или *.local) и размещать их в каталоге /etc/fail2ban/jail.d, эти файлы будут иметь приоритет перед стандартной конфой.
Собственные правила можно создавать в отдельных файлах или в общем, правила все равно разбиваются на секции.
Общие для всех правил параметры, можно вынести в секцию [DEFAULT] (верхний регистр!).
Для работы нужно активировать как минимум одну секцию, не считая дефолтной.
В файле /etc/fail2ban/fail2ban.conf задается общая конфигурация службы.
Время и часовой пояс, на сервере, должны быть корректными, по крайней мере локальное время должно совпадать со временем в логах.
Если после бана вручную удалить IP-адрес из файервола, fail2ban не будет его банить повторно, только делать пометки в логе «already-banned», но после перезапуска службы, IP снова попадет в бан сразу же, без попыток входа.
Для разблокировки хоста следующая команда:
# fail2ban-client set [name-jail] unbanip [ip-addr]
Посмотреть перечень установленных «name-jail» (т.е. заданных правил)
# fail2ban-client status
Результаты своей работы служба пишет в свой лог, обычно- /var/log/fail2ban.log
Время указывается в секундах, вроде можно использовать идентификаторы типа m, h и т.д., стоит уточнять.
Для вечного бана нужно указать -1.
[DEFAULT] maxretry = 3 findtime = 480 bantime = -1 action = iptables-allports # ignoreip = 127.0.0.1 # исключение, можно указать сегментом сети, типа 192.168.0.0/24 [sshd] enabled = true port = ssh filter = sshd action = iptables[name=sshd, port=ssh, protocol=tcp, blocktype="DROP"] logpath = /var/log/auth.log
[DEFAULT] maxretry = 3 findtime = 480 bantime = -1 action = iptables-allports ignoreip = 92.124.136.88 [sshd] enabled = true port = ssh filter = sshd action = iptables[name=sshd, port=ssh, protocol=tcp, blocktype="DROP"] logpath = /var/log/auth.log [apache] enabled = true port = http,https filter = apache-auth action = iptables[name=apache-auth, port=http,https, protocol=tcp, blocktype="DROP"] logpath = /var/log/apache*/*error.log [apache-overflows] enabled = true port = http,https filter = apache-overflows action = iptables[name=apache-overflows, port=http,https, protocol=tcp, blocktype="DROP"] logpath = /var/log/apache*/*error.log [apache-badbots] enabled = true port = http,https filter = apache-badbots action = iptables[name=apache-badbots, port=http,https, protocol=tcp, blocktype="DROP"] logpath = /var/log/apache*/*error.log