ตรวจสอบว่าเครื่องถูกยิง และวิธีแก้ไขสถานการเบื้องต้น

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