Score:0

Fail2ban regex ไม่ทำงาน

ธง cn

ฉันต้องการบล็อกคำขอรับไปยัง /.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"
cn flag
ก่อนอื่นให้สร้างไฟล์บันทึกตัวอย่างที่มีรายการที่คุณต้องการสั่งแบน จากนั้นใช้คำสั่ง `fail2ban-regex` เพื่อทดสอบ reg-exs ของคุณ หากไม่มีตัวอย่างบันทึกเพื่อเปรียบเทียบกับสิ่งที่คุณมีที่นี่ ก็ช่วยได้ยาก
Geoff avatar
cn flag
ฉันได้รวมบันทึกตัวอย่าง
Score:0
ธง il

regex ของคุณ (จริงๆ "เสี่ยง" โดยวิธี) เริ่มต้นด้วย ^.+?:\d+ <โฮสต์> -ความหมาย: ค้นหาที่อยู่ IP (หรือชื่อโฮสต์) หลังจากจับคู่โคลอนอย่างน้อย 1 หลักและเว้นวรรค
แต่บรรทัดของคุณขึ้นต้นด้วย IP

regex ของคุณไม่ตรงกับรูปแบบบันทึกของคุณเลย

Failregex ที่ถูกต้อง (และ "มีช่องโหว่" น้อยกว่า) จะเป็นดังนี้:

^<ADDR> \S+ \S+ (?:\[\] )?"[A-Z]+ /\S*(?<=/)(?:\.git|wp-login|remote/login)\b[ ^"]*"\s+

แต่จะดีกว่าที่จะห้ามผ่านเว็บเซิร์ฟเวอร์ (ตอบกลับด้วย 403) จากนั้นค้นหาทุกคำขอที่ผิดพลาดด้วยสิ่งต่อไปนี้:

^<ADDR> \S+ \S+ (?:\[\] )?"[A-Z]+ /[^"]*"\s+(?!401)[45]\d\d

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา