ความพยายาม #1
เห็นตรง ๆ ก็ไม่เห็นจริง ๆ แต่...
แม้ว่า Failed2ban-regex เวอร์ชันล่าสุดจะรองรับพารามิเตอร์เอาต์พุต คุณจึงสามารถทำสิ่งนี้ได้:
ไคลเอ็นต์fail2banตั้งค่า "$jail" banip $(
Failed2ban-regex -o 'ip' /var/log/path/some.log กรองบาง | เรียง --unique | ตร '\n' ' '
)
มันจะเหมาะสมก็ต่อเมื่อคุณพบว่า IP ใด ๆ ที่ล้มเหลว ไม่ว่าจะนับ/ครั้ง. ในกรณีของคุณ อย่างน้อยก็ไร้เหตุผลหากไม่มีการประมวลผลล่วงหน้าเพิ่มเติม
ความพยายาม #2 ฉันคิดว่าการสะท้อนบันทึกประวัติลงในบันทึกที่ fail2ban กำลังดูอยู่จะทำให้แยกวิเคราะห์ได้
มันจะไม่ทำงานเนื่องจาก fail2ban จะไม่พิจารณาเวลาของข้อความอย่างถูกต้อง: อาจเก่าเกินไป (หากบันทึกโดยไม่ได้แก้ไข) หรืออาจไม่ถูกต้อง (หากตอนนี้บันทึกเป็นเวลาของความล้มเหลว เนื่องจากคุณต้องพิจารณา สูงสุด
และ หาเวลา
จากการใช้งานจริง)
หมายเหตุที่จะกล่าวถึงว่า fail2ban จะพยายาม ตอนนี้ - หาเวลา
โดยเริ่มต้น (เนื่องจากข้อความอื่นไม่น่าสนใจเนื่องจากล้าสมัยเกินไป) ดู https://github.com/fail2ban/fail2ban/issues/2909#issuecomment-758036512.
อย่างไรก็ตาม ในขณะนี้ แทบเป็นไปไม่ได้เลยที่จะมีการนำเครื่องมือ Fails2bans ออกจากกล่อง (อย่างน้อยเว้นแต่สิ่งอำนวยความสะดวกในการ "สแกนซ้ำ" จาก RFE ด้านบนจะถูกนำมาใช้และเผยแพร่)
แต่เนื่องจากfail2ban (เช่นเดียวกับ Failed2ban-regex
) เป็นโมดูลใน python เป็นไปได้ด้วยตัวกรองจากการเขียน python แบนไปยังบันทึกบางส่วนหรือส่งโดยตรงไปยังอินสแตนซ์หลักที่ล้มเหลว 2 แบน ดู https://github.com/fail2ban/fail2ban/issues/2909#issuecomment-1039267423 สำหรับตัวอย่างสคริปต์ดังกล่าว
โปรดทราบว่าตัวกรองของคุณมีความเสี่ยงสูงและช้ามาก ควรเขียนใหม่ให้แม่นยำที่สุดเท่าที่จะทำได้ เช่น:
failregex = ^"<ADDR>" \S+ \S+ [^"]*"[A-Z]+ /(?:\S+/)*[^\.]*(?:\.(?!ico|jpg|png |gif|js|css|woff|mp4)\w+)? [^"]+"
และสุดท้าย แต่ไม่ท้ายสุด ทำไมคุณถึงต้องการสิ่งนั้น หากคุกที่มีตัวกรองดังกล่าวเปิดใช้งานอยู่ และโปรแกรมรวบรวมข้อมูลดังกล่าวกลับมา พวกเขาจะถูกแบนทันทีที่สร้าง สูงสุด
ความล้มเหลวในระหว่าง หาเวลา
กำหนดค่าสำหรับคุก การแบนเชิงป้องกันนั้นไม่จำเป็นจริง ๆ และจะรบกวนระบบย่อยตัวกรองสุทธิของคุณด้วย IP จำนวนมาก (อาจจะไม่กลับมาอีกเลย)