Fail2ban - программный пакет, предназначенный для обнаружения и предотвращения попыток вторжения в систему, подключённую к сети.
Для работы Fail2ban необходим установленный и активизированный сетевой экран - firewall (в Linux системах это - iptables)
Установка:
CentOS
yum install fail2ban
Debian
sudo apt-get install fail2ban
Настройка конфигурационного файла /etc/fail2ban/jail.conf
Настройки по умолчанию
ignoreip = 127.0.0.1/8 #адреса и сети не подпадающие под правила (перечисляются через пробел)
bantime = 600 #время блокировки в секундах (600 сек. = 10 мин.)
findtime = 600 #хост будет заблокирован если исчерпает отведенные ему попытки за последние findtime в секундах (600 сек. = 10 мин.)
maxretry = 3 # число попыток после которых будет заблокирован адрес.
Теперь находим в этом же файле блок ssh-iptables и приводим к виду:
[ssh-iptables]
enabled = true # по умолчанию true (включен)
filter = sshd # служба которую нужно мониторить
action = iptables[name=SSH, port=ssh, protocol=tcp] # добавляет правило блокировки в iptables
sendmail-whois[name=SSH, dest=support@h1host.ru, sender=alert@h1host.ru] # отправляет на указанный e-mail информацию о заблокированном адресе с полной расшифровкой whois
logpath = /var/log/secure # лог файл который нужно просматривать
maxretry = 3 # число попыток после которых будет заблокирован адрес.
Для отображения в письме подробной информации об ip-адресе необходимо установить whois
yum install jwhois
Запускаем fail2ban и добавляем в автозапуск:
/etc/init.d/fail2ban start
chkconfig fail2ban on
chkconfig --list fail2ban
fail2ban 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
В iptables появляется новые правила:
iptables -L
Chain fail2ban-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
При наступлении блокировки отображается новое правило:
REJECT all -- srx.hostname.ru anywhere reject-with icmp-port-unreachable
Письмо о блокировке:
Hi,
The IP 188.64.. has just been banned by Fail2Ban after
3 attempts against SSH.
Here is more information about 188.64..:
% Abuse contact for '188.64..0 - 188.64..255' is 'abuse@hostname.ru'
inetnum: 188.64..0 - 188.64..255
netname: RU-H1-20090723
descr: H1 LLC
country: RU
org: ORG-HL36-RIPE
...........