Я хотел бы заблокировать любой запрос на получение /.git, /wp-login,/remote/login/, поэтому я создал следующий фильтр, который также включает другие запросы.
badagents = 360Spider|ZmEu|Auto Spider 1.0|zgrab/[0-9]*\.[0-9a-zA-Z]*|Wget\(.*\)|MauiBot.*|AspiegelBot.*|SemrushBot.* |PHP/.*
failregex = ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD).*HTTP.*(?:%(badagents)s)"$
^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /+wp-login\.php.*$
^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /.git/HEAD.*$
^.+?:\d+ <HOST> -.*"GET /.git/.*$
^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /wp-login/.*$
^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /.git/objects/.*$
^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) //.git/objects/.*$
^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /remote/login/.*$
^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /wp/wp-includes/.*$
^.+?:\d+ <HOST> -.*"GET /wp/wp-includes/.*$
^.+?:\d+ <HOST> -.*"GET /wp/wp-login.php/.*$
^.+?:\d+ <HOST> -.*"GET /test/wp-includes/.*$
^.+?:\d+ <HOST> -.*"GET /config/getuser/.*$
Я также прикрепил это к моему jail.local с помощью
[разовый бан]
включено = верно
порт =http,https
путь к журналу = /var/log/nginx/access.log
/var/log/nginx/prod_test.log
filter = одноразовый бан
бантайм = 300
максимальная попытка = 1
найти время = 10
Я проверил это, пытаясь получить доступ к /.git по URL-адресу более 10 раз, но меня все еще не забанили. Почему это не удается. Я считаю, что проблема в failregex, что мне нужно добавить, чтобы fail2ban работал?
Пример журнала выглядит так
3.17.11.219 - - [05/окт/2021:12:33:15 +0000] "GET //.git/objects/a5/920b6c86cc2d972bde9578c0a5d848dff67354 HTTP/1.1" 301 178 "-" "curl/7.61.1"