И так, Fail2ban это програма, которая парсит системные логи на наличие ошибок аутентификации и т.д. и по заданным правилам банит атакующий IP.
Недавно мне понадобилось защитить мой squid от атак из внешней сети. Но тут я обнаружил что в стандартной поставке настроек для Squid нету. Пришлось немного поковыряться, и оно было создано. Выкладываю тут может кому то понадобится.
Настройка: *** Создаем новый конфиг правил для squid:
cd /etc/fail2ban/filter.d
touch squid.conf
*** Добавляем в squid.conf следующие строки:
# Fail2Ban configuration file
#
# Author: Dmitry Kor. <admin@itmages.ru>
#
# $Revision: 658 $
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>\S+)
# Values: TEXT
#
failregex = ^.* <HOST> TCP_DENIED/403 .*$
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
*** Затем открываем /etc/fail2ban/jail.conf и добавляем следующую секцию, к примеру за секцию [ssh]:
[squid]
enabled = true
port = 3128
filter = squid
logpath = /var/log/squid/access.log
maxretry = 3
*** Перезагружаем наш монитор:
# /etc/init.d/fail2ban restart
либо
# service fail2ban restart
Результат:После успешной настройки я попытался подолбиться на свой прокси. В логах сервера появилось следующее:
Лог squid (access.log)
1254656229.875 8 89.<>.209 TCP_DENIED/403 1394 GET http://ya.ru/ - NONE/- text/html
1254656230.157 5 89.<>.209 TCP_DENIED/403 1416 GET http://ya.ru/favicon.ico - NONE/- text/html
1254656233.155 8 89.<>.209 TCP_DENIED/403 1416 GET http://ya.ru/favicon.ico - NONE/- text/html
Лог fail2ban (fail2ban.log)
2009-10-04 06:37:14,135 fail2ban.actions: WARNING [squid] Ban 89.<>.209
Что нам и требовалось получить.
