Продолжаю свою серию ебли с допиливанием скриптов по-умолчанию в Fail2Ban.В этот раз столкнулся таки с тем,что фейл2бан не видит безуспешные попытки авторизации в Апаче при стандартной авторизации.Я не говорю уже что если у вас Digest авторизация.Почему то в стандартном скрипте допущена ошибка,и потому он не работает.Вот его пример:
# Fail2Ban configuration file # # Author: Cyril Jaquier # # $Revision: 728 $ # [INCLUDES] # Read common prefixes. If any customizations available -- read them from # common.local before = apache-common.conf [Definition] # Option: failregex # Notes.: regex to match the password failure 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>[\w\-.^_]+) # Values: TEXT # failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch) # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
Смотрим на строчку
failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)
Раньше изначально она выглядела так:
failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$
И из-за \s*$ в конце она не работала. Потом я методом перебора нашел эту штуку и убрал,после чего скрипт стал видеть попытки и адреса атакующих. Далее я на основе этого сделал скрипт,который видит неудачные попытки при Digest авторизации.Я в папке /etc/fail2ban/filter.d/ создал файл с именем apache-auth-digest.conf и содержимым:
# Fail2Ban configuration file # # Author: RUSUA # # $Revision: 1 $ # [INCLUDES] # Read common prefixes. If any customizations available -- read them from # common.local before = apache-common.conf [Definition] # Option: failregex # Notes.: regex to match the password failure 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>[\w\-.^_]+) # Values: TEXT # failregex = ^%(_apache_error_client)s Digest: user .* (authentication failure|not found|password mismatch) # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
Дальше я просто дописал правило в /etc/fail2ban/jail.conf:
[apache-digest] enabled = true port = http,https filter = apache-auth-digest logpath = /var/log/apache2/error*.log maxretry = 3
Главное указать правильно имена и путь ваших логов. Перезагрузите теперь Fail2Ban и проверьте в /var/log/fail2ban.log что б при запуске ловушек были подхвачены ваши логи.Там должен быть отображен их спсисок. Если нет,проверяйте путь и имена логов,иначе работать не будет.