#การใช้ netstat ตรวจสอบการถูกยิงด้วย syn คำสั่ง

netstat -ntu | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

อันนี้จะบอกว่า ณ ขณะเวลานั้นๆ มีคนส่ง syn เข้ามาเพื่อขอเชื่อมกับ server ของเรา โดยปกติไม่ควรเกิน 10 ครั้งต่อ 1 IP หากเกินกว่านั้นท่าน Block ได้เลย

#การใช้ netstat นับจำนวน connetion ของแต่ละ IP คำสั่ง

netstat -ntu | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

อันนี้จะบอกว่า ณ ขณะเวลานั้นๆ แต่ละ IP มีการเชื่อมต่อกับเรากี่ connetion โดยปกติไม่ควรเกิน 10-20 ครั้งต่อ 1 IP หากเกินกว่านั้นท่าน Block ได้เลย

#การ Block ก็ง่ายๆ ไม่ยากด้วย iptables ตัวอย่าง

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

ความหมาย -A = เพิ่ม (add), -s = IP ต้นทาง, -j DROP = Block IP นั้นซ่ะ

#Block เป็น IP Class

iptables -A INPUT -s xxx.xxx.xxx.xxx/xx -j DROP

#Block เป็น Protocal

iptables -A INPUT -p udp --dport 80 -j DROP

ความหมาย -p = เลือก Protocal ที่ต้องการ (udp,tcp) , –dpoprt = Port ปลายทาง, –spoprt = Port ต้นทางทาง

ตัวอย่างง่ายๆ ที่อาจช่วยป้องกัน SYN-FLOOD ทำให้ server ยังอยู่ได้ไม่ม่องเท่งก่อน เวลาอันควร เอาคำสั่งนี้ไว้บนๆ สุดหน่อย จะช่วยได้มากครับ
คำสั่งแรกเป็นคำสั่ง Limit syn Packet ให้อยู่ในช่วง 25 Packet ต่อวินาที และไม่เกิน 30 ต่อวินาที

iptables -A INPUT -p tcp --syn -m limit --limit 25/s --limit-burst 30 -j ACCEPT

คำสั่งที่ 2 ถ้ามันเกินจากนั้นก็จะถูก Drop ด้วยคำสั่งถัดมา

iptables -A INPUT -p tcp --syn -j DROP

ปล. เครดิตเสี่ยโป้ง (Hostparagon.com)
ref: http://www.thaihosttalk.com/index.php?topic=11925.0
cidr: http://tools.icez.net/cidr.php

share: ป้องกันโดนยิงเครื่อง server