คำสั่ง linux เพื่อป้องกันการโจมตี dos โดยใช้ netstat และ iptables


11

ฉันต้องการ DROP มากกว่า 200 คำขอต่อ IP เพื่อป้องกันการโจมตี ddos นี่คือคำสั่งที่ฉันใช้เพื่อตรวจจับการร้องขอนับต่อ ip:

netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr

ตอนนี้ฉันต้องการเพิ่มที่อยู่ ip ทั้งหมดที่ทำคำขอมากกว่า 200 รายการใน IPtables ไปยัง DROP input และ out put


ดังที่ @dawud กล่าวไว้ให้แน่ใจว่าคุณทราบว่าคุณสามารถ "ลด" เท่านั้นและไม่ป้องกันการโจมตี DDOS ไปยังเซิร์ฟเวอร์ของคุณโดยสิ้นเชิง
kaptan

คำตอบ:


12

คุณยังสามารถใช้ iptables เพื่อ จำกัด อัตราการเชื่อมต่อขาเข้า ตัวอย่างเช่นหากคุณไม่ต้องการการเชื่อมต่อมากกว่า 200 ครั้งต่อนาทีจากแหล่งที่มา:

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 200 -j DROP


1
มันจะเป็นการดีถ้ามีคำอธิบายเช่นนี้
ffledgling

18

ipsetคุณสามารถสร้าง วิธีนี้คุณสามารถเพิ่ม IP ได้มากเท่าที่คุณต้องการโดยไม่ต้องแก้ไขiptablesruleset

ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2

หรือในกรณีของคุณให้ใช้เอาต์พุตสคริปต์ของคุณและอ่านด้วย:

while read a; do ipset -A myset "$a"; done < <(your script here)

และการอ้างอิงในiptablesกฎของคุณ:

iptables -A INPUT -m set --set myset src -j DROP

อ่านmanpageเพื่อดูรายละเอียดและตัวเลือกเพิ่มเติม

นอกจากนี้ยังมีวิธีอื่นในการลดการโจมตี DDOS ที่ใช้iptablesโดยตรง อ่านiptablesส่วน manpage เกี่ยวกับconnlimitและrecentโมดูล


นี่ยอดเยี่ยมเพราะ ipsets เร็วกว่าตัวเลือกอื่นเช่นแฮชเทเบิล
isuldor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.