Я пытаюсь заключить в тюрьму хосты, которые атакуют веб-сервер грубой силой, тем самым создавая (сотни) строк в /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
предсказуемо не сообщает об арестах. Я не могу дальше расширять регулярные выражения без ошибки No 'host' group in '<host>'
. Я получил эти регулярные выражения из собственного файла fail2ban. /etc/fail2ban/filter.d/*.conf
с.
Что такое регулярное выражение, которое может по крайней мере соответствовать каждой строке в error.log, как я ожидал от второго и третьего регулярных выражений? Затем я могу расширить это, чтобы более точно соответствовать моим конкретным строкам.
(И не следует apache-noscript
фильтр, в любом случае, будет заключать эти хосты в тюрьму? Его failregex ^%(_apache_error_client)s script '/\S*(\.php|\.asp|\.exe|\.pl)\S*' not found or unable to 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$
И действительно, через несколько часов нападавших начали сажать. Но я все еще удивлен, что основной фрагмент для сопоставления строк в Apache error.log, \[client <HOST>:\d+\]
, не в /etc/fail2ban/filter.d/*
. Несоответствие версий?