ฉันคิดว่าฉันได้พบวิธีแก้ปัญหาผ่านบทความนี้และ IPSet น่าจะเป็นคำตอบ
ในผลรวม:
หากชุดของที่อยู่ IP มีรายการหลายพันรายการประสิทธิภาพลดลง iptables (อันที่จริงประสิทธิภาพของ netfilter ทันทีที่ iptables เป็นเพียงเครื่องมือสำหรับจัดการไฟร์วอลล์) โหลดซีพียูของคุณสามารถเพิ่มขึ้นได้เช่นกัน โชคดีที่มีโซลูชั่นที่สมบูรณ์แบบ - ipsets
IPSet เป็นเครื่องมือที่สมบูรณ์แบบหากคุณต้องการ:
- จัดเก็บที่อยู่ IP หลายแห่งหรือหมายเลขพอร์ตและจับคู่กับคอลเลกชันด้วย iptables ในคราวเดียว
- อัปเดตกฎ iptables แบบไดนามิกกับที่อยู่ IP หรือพอร์ตโดยไม่มีการปรับประสิทธิภาพ;
- แสดงที่อยู่ IP ที่ซับซ้อนและชุดกฎที่อิงกับพอร์ตด้วยกฎ iptables เดียวและได้รับประโยชน์จากความเร็วของชุด IP
การติดตั้ง ipset อยู่ตรงหน้า sudo apt-get install ipset
จากนั้นเรียกใช้สิ่งต่อไปนี้
ipset -N autoban iphash ––hashsize 4096 ––probes 2 ––resize 50
เพิ่มลงในห่วงโซ่ iptables ของคุณ มันอาจแตกต่างกันไปขึ้นอยู่กับการตั้งค่าไฟร์วอลล์ของคุณ ที่นี่เราใช้โซ่เอทิน
iptables -I ethin 2 -p tcp -m multiport ––dport 80,443 -m set ––match-set autoban src -j DROP
ตอนนี้คุณสามารถเพิ่ม IP ที่ไม่ดีทั้งหมดไปยัง ipset ของคุณ ตัวอย่างเช่นคุณมีไฟล์ข้อความชื่อ bots.txt ที่มีหนึ่ง IP ต่อบรรทัด ดังนั้นคุณสามารถเพิ่มลงใน ipset โดยใช้สคริปต์ทุบตีง่าย ๆ :
for i in $( cat /tmp/bots.txt ) ; do ipset -A autoban $i ; done
วิธีตรวจสอบการทำงาน:
ipset -L autoban