มีสองสิ่งที่อยู่ในใจของฉัน:
- คุณสามารถใช้การจับคู่สตริงกับ iptables:
iptables -A INPUT -m สตริง --algo bm --string "GET /foro" -j DROP
หรือถ้าเป็นไปได้ในระบบของคุณ ด้วย TARPIT
iptables -A INPUT -m สตริง --algo bm --string "GET /foro" -j TARPIT
- แทนที่จะใช้ fail2ban ให้สร้างสคริปต์ของคุณเองซึ่งจะสแกนหาบันทึก 1,000 บรรทัดล่าสุดและบล็อกการจับคู่ด้วย ipsets
เพิ่มสิ่งนี้ในสคริปต์ iptables ของคุณ:
- ipset ทำลายห้องน้ำ
- ipset -N ห้องน้ำ iphash
- ipset ชักโครก
จากนั้นใช้สคริปต์ของคุณเพื่อเพิ่มที่อยู่ IP ที่คุณต้องการบล็อกลงในไฟล์ข้อความในที่สุดคุณเพียงแค่ต้องวนซ้ำที่อยู่ IP ทั้งหมดไปยังรายการห้องน้ำนั้น
- ipset -ห้องน้ำ "$ipaddress"
การใช้ ipset และโดยเฉพาะอย่างยิ่งมาสก์เป็นวิธีที่มีประสิทธิภาพมากกว่าการบล็อกที่อยู่ IP ฉันมีที่อยู่ประมาณ 20,000 ที่อยู่ที่ถูกบล็อกและประมาณ 200 เครือข่าย
คุณอาจได้รับแนวคิดเกี่ยวกับสคริปต์ที่ยุ่งเหยิงของฉัน
https://pastebin.com/4v5se0kh
ฉันรู้ว่ามันยุ่งเหยิง แต่มันได้ผลสำหรับฉัน เร็วกว่ามากและง่ายกว่าการห้ามล้มเหลว ฉันตั้งชื่อสคริปต์นั้นว่า suc2ban คุณเพียงแค่ต้องค้นหาไฟล์บันทึกของคุณเองที่ตรงกัน (คุณอาจมี apache access.log แทนตัวอย่างของฉันที่ใช้ auth.log)