Tôi muốn chặn bất kỳ yêu cầu nhận nào đối với /.git, /wp-login,/remote/login/, vì vậy tôi đã tạo bộ lọc sau bao gồm cả các yêu cầu khác.
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/.*$
Tôi cũng đã đính kèm cái này vào Jail.local của mình với
[cấm một lần]
đã bật = đúng
cổng = http, https
logpath = /var/log/nginx/access.log
/var/log/nginx/prod_test.log
bộ lọc = lệnh cấm một lần
bantime = 300
thử nghiệm tối đa = 1
thời gian tìm thấy = 10
Tôi đã kiểm tra điều này bằng cách thử truy cập /.git trên url hơn 10 lần nhưng vẫn không bị cấm. Tại sao điều này thất bại. Tôi tin rằng vấn đề nằm ở failregex, tôi cần thêm thứ tự bổ sung nào để fail2ban hoạt động?
Nhật ký mẫu trông như thế này
3.17.11.219 - - [05/Oct/2021:12:33:15 +0000] "NHẬN //.git/objects/a5/920b6c86cc2d972bde9578c0a5d848dff67354 HTTP/1.1" 301 178 "-" "curl/7.61.1"