bunyiam:
สืบเนื่องจากวันนี้ server ของน้องคนหนึ่งถูกกระหน่ำยิงจนไม่สามารถทำงานได้ แล้วผมก็เคยเห็นหลายๆ คนเคยตั้งคำถามไว้ว่าจะรู้ได้อย่างไรว่าเครื่องเราโดนยิงเข้าให้แล้ว วันนี้ก็ถือเป็นโอกาสอันดีที่จะนำความรู้เท่าหางอึงอันน้อยนิดนี้มาแบ่งกัน
การตรวจสอบว่าเราถูกยิงหรือไม่ผ่านคำสั่ง netstat
หลายๆ คนคงรู้วิธีใช้งาน netstat กันบ้างแล้ว คราวนี้จะมาดูวิธีการใช้งาน netstat อย่างประยุคๆ หน่อย
– การใช้ 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 ได้เลย
การใช้ netstat ตรวจสอบได้กับ tcp จะง่าย แต่ถ้าเป็น udp icmp ผมจะใช้โปรแกรม iptraf ช่วยอีกแรง ดูง่ายหน่อย
ติดตั้ง yum -y install iptraf
วิธีใช้พิมพ์คำสั่ง iptraf จากนั้นดูว่ามี packet udp icmp วิงผิดปกติหรือเปล่า ถ้ามีก็ดู ip นั้นๆ แล้วนำมา block
การ Block ก็ง่ายๆ ไม่ยากด้วย iptables
ตัวอย่าง
iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP ความหมาย -A = เพิ่ม (add), -s = IP ต้นทาง, -j DROP = Block IP นั้นซ่ะ
Block เป็น 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 ต้นทางทาง
แล้ว ก็ฝากเตือนทุกๆ คนที่ server โดยยิง ไม่ว่าจะอย่างไรห้ามยิงกลับเป็นอันขาดนะครับ ต้องป้องกันให้ดีที่สุด เก็บ log แล้วก็แจ้งความเท่านั้นนะครับ เพราะถ้าเรายิงกลับเราจะเป็นฝ่ายที่โดนจับเสียเอง
from : http://www.thaihosttalk.com