Я пытаюсь заблокировать хосты, которые атакуют веб-сервер методом грубой силы, тем самым создавая (сотни) строк в /var/log/apache2/error.log
формы
[Fri Feb 01 11:17:56.158739 2019] [:error] [pid 15870] [client 40.118.7.71:19920] script '/var/www/html/hello.php' not found or unable to stat
/etc/fail2ban/filter.d/foo.conf:
[INCLUDES]
before = apache-common.conf
[Definition]
failregex = ^%(_apache_error_client)s .* not found or unable to stat
%(_apache_error_client)s
[[]client (?P<host>\S*)[]]
Но fail2ban-regex /var/log/apache2/error.log foo.conf
сообщает о нулевых совпадениях для всех трех из этих более широких и более широких регулярных выражений (но без ошибок или предупреждений). Итак, fail2ban-client status foo
предсказуемо не сообщает об арестах. Я не могу дальше расширять регулярные выражения без ошибки Нет группы «хост» в «
. Я получил эти регулярные выражения из собственного /etc/fail2ban/filter.d / *. Conf
файла fail2ban.
Что такое регулярное выражение, которое может по крайней мере соответствовать каждой строке в error.log, поскольку Я ожидал, что второе и третье регулярное выражение? Затем я могу расширить это, чтобы более точно соответствовать моим конкретным строкам.
(И не должен ли фильтр apache-noscript
в любом случае задерживать эти хосты? Его failregex ^% (_ apache_error_client) s сценарий '/\S*(\.php|\.asp|\.exe|\.pl)\S*' не найден или не может stat \ s * $
) может соответствовать моим строкам.
Ubuntu 14.04, fail2ban v0.8.11.
Правка: По теме, Я пытаюсь отловить грубую силу против /xmlrpc.php с помощью fail2ban . Похоже, это называется «атакой xmlrpc».
По прихоти, из другого дистрибутива я вывел регекс
failregex = \[client <HOST>:\d+\] script '/\S*(\.php|\.asp|\.exe|\.pl)\S*' not found or unable to stat$
И действительно, через несколько часов он начал сажать в тюрьму злоумышленников. Но меня до сих пор удивляет, что существенного фрагмента для сопоставления строк в файле error.log Apache, \[client
, нет в /etc/fail2ban/filter.d/*
. Несоответствие версий?