ฉันต้องการบล็อกคำขอรับไปยัง /.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+ <โฮสต์> -.*"(GET|POST|HEAD) /+wp-login\.php.*$
^.+?:\d+ <โฮสต์> -.*"(GET|POST|HEAD) /.git/HEAD.*$
^.+?:\d+ <โฮสต์> -.*"GET /.git/.*$
^.+?:\d+ <โฮสต์> -.*"(GET|POST|HEAD) /wp-login/.*$
^.+?:\d+ <โฮสต์> -.*"(GET|POST|HEAD) /.git/objects/.*$
^.+?:\d+ <โฮสต์> -.*"(GET|POST|HEAD) //.git/objects/.*$
^.+?:\d+ <โฮสต์> -.*"(GET|POST|HEAD) /remote/login/.*$
^.+?:\d+ <โฮสต์> -.*"(GET|POST|HEAD) /wp/wp-includes/.*$
^.+?:\d+ <โฮสต์> -.*"GET /wp/wp-includes/.*$
^.+?:\d+ <โฮสต์> -.*"GET /wp/wp-login.php/.*$
^.+?:\d+ <โฮสต์> -.*"GET /test/wp-includes/.*$
^.+?:\d+ <โฮสต์> -.*"GET /config/getuser/.*$
ฉันได้แนบสิ่งนี้กับ jail.local ด้วย
[แบนครั้งเดียว]
เปิดใช้งาน = จริง
พอร์ต =http,https
logpath = /var/log/nginx/access.log
/var/log/nginx/prod_test.log
ฟิลเตอร์ = แบนครั้งเดียว
ค่าอาหาร = 300
สูงสุด = 1
หาเวลา = 10
ฉันได้ทดสอบสิ่งนี้โดยพยายามเข้าถึง /.git บน url มากกว่า 10 ครั้ง แต่ก็ยังไม่ถูกแบน ทำไมสิ่งนี้ถึงล้มเหลว ฉันเชื่อว่าปัญหาอยู่ที่ failregex ฉันต้องเพิ่มคำสั่งพิเศษเพื่อให้ Failed2ban ทำงานอย่างไร
บันทึกตัวอย่างมีลักษณะดังนี้
3.17.11.219 - - [05/Oct/2021:12:33:15 +0000] "GET //.git/objects/a5/920b6c86cc2d972bde9578c0a5d848dff67354 HTTP/1.1" 301 178 "-" "curl/7.61.1"