สามารถยัดคำสั่งลงใน iptables ได้กี่คำโดยไม่ทำให้ระบบเสียสติ?


9

สมมติว่ามีความประสงค์ที่จะมีรายการที่อยู่ IP ที่ถูกบล็อก

ฉันได้เห็นสคริปต์ตัวอย่างต่อไปนี้:

BLOCKDB="/path/to/ip.blocked.file"
# omit comments lines
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
    iptables -A INPUT -s $i -j DROP
    iptables -A OUTPUT -d $i -j DROP
done

มีหลายพันบรรทัดที่เปลี่ยนเป็นรายการ iptables หลายพันรายการ

ขีด จำกัด สูงสุดคืออะไรประสิทธิภาพของระบบจะได้รับผลกระทบอย่างมีนัยสำคัญ


2
ดูเหมือนว่าคุณจะพบคำตอบสำหรับคำถามของคุณ ถ้าเป็นเช่นนั้นคุณควรย้ายคำตอบออกจากคำถามของคุณและใช้ปุ่ม "ตอบคำถามของคุณ" และโพสต์คำตอบนั้น จากนั้นคุณสามารถยอมรับคำตอบของคุณและสิ่งต่างๆจะได้รับการจัดระเบียบอย่างดียิ่งขึ้น
Scott Severance

@ScottSeverance ทำตามที่คุณแนะนำอย่างไรก็ตามจะใช้เวลา 4 ชั่วโมงจนกว่าจะสามารถตอบตัวเองได้
Tzury Bar Yochay

คำตอบ:


8

ฉันคิดว่าฉันได้พบวิธีแก้ปัญหาผ่านบทความนี้และ 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

ขอบคุณสำหรับคำตอบ. นี่คือการสอนด่วนเกี่ยวกับ ipset สำหรับผู้ที่ไม่คุ้นเคยกับ ipset (เช่นฉัน 8-) - linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing David Wong
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.