И так, 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.d/defaults-debian.conf и добавляем следующую секцию, к примеру за секцию [ssh]:
Код: [Выделить]
[squid]
enabled = true
port = 3128
filter = squid
logpath = /var/log/squid/access.log
maxretry = 3
bantime = 24h
*** Перезагружаем наш монитор:
Код: [Выделить]
# /etc/init.d/fail2ban restart
либо
Код: [Выделить]
# systemctl restart fail2ban
Результат:
После успешной настройки я попытался подолбиться на свой прокси. В логах сервера появилось следующее:
Лог 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
Что нам и требовалось получить.

Белый список IP в Fail2Ban, разблокировка IP-адресов
Чтобы разблокировать IP, который попал в блокировку fail2ban, используйте команду:
# fail2ban-client set SECTION unbanip IP — где SECTION название секции в конфигурационном файле, по правилам которого был заблокирован ваш IP адрес. Например:
# fail2ban-client set apache-noscript unbanip 185.*.*.*
Вы можете добавить определенные IP адреса в исключения fail2ban (белый список). Для этого в конфигурационном файле jail.conf внесите IP в строку:
ignoreip =185.*.*.*
