Я пытаюсь получить fail2ban, чтобы заблокировать работу моего сайта некоторыми плохими ботами. Я начал с того, что просто включил "apache-badbots" по умолчанию в jail.local (я изменил путь к журналу, чтобы он соответствовал моим собственным журналам и пользователю, которому он отправляет отчеты)
enabled = true
filter = apache-badbots
action = iptables-multiport[name=BadBots, port="http,https"]
sendmail-buffered[name=BadBots, lines=5, dest=jisti]
logpath = /var/logs/httpd/access_log
bantime = 172800
maxretry = 1
Я перезапустил fail2ban и получил письмо о том, что тюрьма началась. Однако, пока я смотрел логи, один из плохих ботов забил сайт, и fail2ban ничего не сделал.
Итак, я проверил apache-badbots.conf в фильтрах. Я пришел к выводу, что регулярное выражение, вероятно, не соответствует пользовательскому формату журнала, который я использовал, и на самом деле не ищет конкретного плохого бота, который забивает мой сайт. Я возился с failregex, а затем протестировал с
fail2ban-regex /var/log/httpd/access_log /etc/fail2ban/filter.d/apache-badbots.conf
Это сообщение об успехе, и более 300 совпадений. «Ухуху», - подумал я. Я перезапустил fail2ban. Вскоре после этого я увидел, как бот снова забивает сайт, а fail2ban ничего не делает. Я проверил iptables, чтобы убедиться, что он что-то делает, но неправильно использует правило iptables
iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-BadBots
-N fail2ban-SSH
-N fail2ban-php-url-open
-A INPUT -p tcp -m tcp --dport 22 -j fail2ban-SSH
-A fail2ban-BadBots -j RETURN
-A fail2ban-SSH -j RETURN
-A fail2ban-php-url-open -j RETURN
Также я должен упомянуть, что когда он блокирует атаки SSH, он правильно добавляет правила iptables. Так что что-то работает, только не apache-badbots.
Затем я попытался настроить ведение журнала fail2ban для отладки и чтения файла fail2ban.log. К сожалению, там ничего не помогло. Были записи журнала для запуска тюрьмы и определения правильного регулярного выражения, а также определения действий. Однако в журнале не было никаких записей для сопоставления jail apache-badbots и принятия мер против любого IP.
Также я упомяну, что тюрьма SSH, похоже, работает нормально, поэтому fail2ban действительно работает на компьютере, только не тюрьма apache-badbots.
Что мне нужно сделать, чтобы он заработал?
В вашем jail.local вы направляете fail2ban на / var / журналы / httpd / access_log вместо того / var / log / httpd / access_log как в вашем тесте регулярного выражения.