====== Fail2Ban ====== Служба для отслеживания и блокирования брутфорса.\\ Для проверки анализирует журналы авторизации, обычно это- **/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**.
:!: Пример конфигурации ssh [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
:!: Еще пример, ssh+ apache [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