Очень нужный "демон" - следит за логами и при неоднократной некоректном подключении банит по Айпи
Защита от брутфорса ssh, ftp, http: fail2ban
fail2ban анализирует логи, и если встречает последовательности, определяемые регулярными выражениям, применяет правила iptables
Ставим
apt-get install fail2ban
Конфигурируем
nano /etc/fail2ban/jail.conf
Указываем свой почтовый ящик для алертов
destemail =
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
Если есть необходимость, то можно в включить логирование пакетов, попавших в бан
banaction = iptables-multiport-log
По умолчанию, проверяется и банится только ssh В секциях, которые нам необходимы ставим
enabled = true
Например:
[proftpd]
enabled = true port = ftp,ftp-data,ftps,ftps-data filter = proftpd logpath = /var/log/proftpd/proftpd.log maxretry = 6
Для VPS openvz: на ноде делаем следующее:
cp /etc/fail2ban/action.d/iptables-allports.conf /etc/fail2ban/action.d/iptables-allports-vps.conf
Копируем строки содержащие INPUT, и в скопированном INPUT меняем на FORWARD и меняем на vps также, в actionstart добавим проверку на существование записей в цепочках, чтобы начальные правила не дублировались.
nano /etc/fail2ban/action.d/iptables-allports-vps.conf
[Definition] actionstart = iptables -N fail2ban-vps iptables -n -L fail2ban-vps | grep RETURN || iptables -A fail2ban-vps -j RETURN iptables -n -L INPUT | grep fail2ban-vps || iptables -I INPUT -p
-j fail2ban-vps iptables -n -L FORWARD | grep fail2ban-vps || iptables -I FORWARD -p
-j fail2ban-vps
actionstop = iptables -D INPUT -p
-j fail2ban-vps iptables -D FORWARD -p
-j fail2ban-vps iptables -F fail2ban-vps iptables -X fail2ban-vps
actioncheck = iptables -n -L INPUT | grep -q fail2ban-vps iptables -n -L FORWARD | grep -q fail2ban-vps
actionban = iptables -I fail2ban-vps 1 -s -j DROP actionunban = iptables -D fail2ban-vps -s -j DROP
[Init] name = default protocol = tcp port = anyport
nano /etc/fail2ban/jail.conf
bantime = 3600 maxretry = 10 banaction = iptables-allports-vps port = anyport
[ssh-local]
enabled = true port = ssh filter = sshd logpath = /var/log/auth.log
[1001-ssh] enabled = true filter = sshd logpath = /vz/private/1001/var/log/auth.log
[1001-proftpd] enabled = true filter = proftpd logpath = /vz/private/1001/var/log/proftpd/proftpd.log
[1002-ssh] enabled = true filter = sshd logpath = /vz/private/1002/var/log/auth.log
[1002-proftpd] enabled = true filter = proftpd logpath = /vz/private/1002/var/log/proftpd/proftpd.log
[1003-ssh] enabled = true filter = sshd logpath = /vz/private/1003/var/log/auth.log
Теперь, при попытке перебора паролей на SSH или FTP, кулхацкеру будет закрыт TCP на все VPSы и ноду. Можно еще и UDP добавить, но в моем случае, в этом не было необходимости.
для проверки, реагиреут ли fail2ban на записи в логах можно воспользоваться утитлтой fail2ban-regex:fail2ban-regex "line" "failregex"
fail2ban-regex /var/log/auth.log "Failed [-/\w]+ for .* from " fail2ban-regex /vz/private/1002/var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
Проверить конфигурацию
fail2ban-client -d
|