服務器配置錯誤等,還有一種常見的可能是有人針對服務器發起了DDoS功擊,導致服務器擁堵或直接崩潰。DDos功擊是最常見的一種網絡功擊方式,主要是通過控制大量僵屍網絡肉雞對服務器發送請求,導致服務器資源耗盡或者網絡堵塞,使正常用戶無法訪問。今天墨者安全就來說說如何使用netstat命令判斷服務器是否遭受Dos功擊?遭到DDoS又該如何緩解?
netstat命令的作用主要是用來查詢和顯示網絡連接、接口統計、僞連接等,常見的查詢命令有以下幾種:
netstat -n -p | grep SYN_REC | sort -u
列出所有連接過的IP地址。
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
使用netstat命令計算每個主機連接到本機的連接數。
netstat -na
該命令將顯示所有活動的網絡連接。
netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
列出所有發送SYN_REC連接節點的IP地址。
netstat -an | grep :80 | sort
顯示所有80端口的網絡連接並排序。這裏的80端口是http端口,所以可以用來監控web服務。如果看到同一個IP有大量連接的話就可以判定單點流量功擊了。
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
檢查 ESTABLISHED 連接並且列出每個IP地址的連接數量。
netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
列出所有連接到本機80端口的IP地址和其連接數。80端口一般是用來處理HTTP網頁請求。
netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
列出所有連接到本機的UDP或者TCP連接的IP數量。
netstat -n -p|grep SYN_REC | wc -l
這個命令可以查找出當前服務器有多少個活動的 SYNC_REC 連接。正常來說這個值很小,最好小於5。 當有Dos功擊或者郵件×××的時候,這個值相當的高。儘管如此,這個值和系統有很大關係,有的服務器值就很高,也是正常現象。
如何通過netstat命令緩解DDOS功擊呢?
一旦獲得功擊服務器的IP地址就可以使用以下命令拒絕此IP的所有連接。
iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
注意,你需要將 $IPADRESS 替換成需要拒絕連接的IP地址。執行完以上命令後,使用以下命令結束所有的httpd連接以清理系統。
killall -KILL httpd
然後執行以下命令重啓httpd服務。
service httpd start #RedHat 系統
/etc/init/d/apache2 restart #Debian 系統
當然通過netstat命令只能緩解部分DDoS功擊,而且還很有可能造成大量誤封正常訪客。所以墨者安全還是建議最好通過專業的網絡安全公司部署DDoS高防IP,對惡意功擊流量進行清洗,隱藏服務器源IP,確保源站穩定運行。