一、背景
在前幾天,我們運營的某網站遭受了一次ddos攻擊,我們的網站是一個公益性質的網站,為各個廠商和白帽子之間搭建一個平臺以傳遞安全問題等信息,我們并不清楚因為什么原因會遭遇這種無恥的攻擊。因為我們本身并不從事這種類型的攻擊,這種攻擊技術一般也是比較粗糙的,所以討論得比較少,但是既然發生了這樣的攻擊我們覺得分享攻擊發生后我們在這個過程中學到得東西,以及針對這種攻擊我們的想法才能讓這次攻擊產生真正的價值,而并不是這樣的攻擊僅僅浪費大家的時間而已。
另外,我們發現大型的企業都有遭受攻擊的案例,但是大家遭受攻擊之后的應對措施及學到的經驗卻分享都比較少,這導致各家都是自行的摸索經驗,依然停留在一家企業對抗整個互聯網的攻擊的局面,而對于攻擊者卻是此次攻擊針對你,下次攻擊卻是針對他了,而且攻擊之后無論是技術還是資源都沒有任何的損耗,這也是導致這種攻擊頻繁并且肆無忌憚的原因。
我們來嘗試做一些改變:)
二、應急響應
在攻擊發生后,第一個現象是我們的網站上不去了,但是依然可以訪問到管理界面,我們登陸上去簡單執行了命令:
1
|
netstat -antp |
我們看到有大量的鏈接存在著,并且都是ESTABLISHED狀態,正常狀態下我們的網站訪問量沒有這么高,如果有這么高我們相信中國的信息安全就有希望了,對于這樣的情況其實處理就比較簡單,這是一次四層的攻擊,也就是所有ip都是真實的,由于目前為止只是消耗了webserver的網絡連接資源,所以我們只需要簡單的將這些ip在網絡層封禁就可以,很簡單,用下面的命令即可:
1
2
3
4
5
|
for i in ` netstat -an | grep -i ‘:80 ‘| grep ‘EST’ | awk ‘{print $5}’ | cut -d : -f 1 | sort | uniq -c | awk ‘{ if ($1 > 50) {print $2}}’` echo $i echo $i >> /tmp/banip /sbin/iptables -A INPUT -p tcp -j DROP -s $i done |
然后作為計劃任務一分鐘執行一次即可,很快,iptables的封禁列表就充斥了大量的封禁ip,我們簡單的統計了下連接數最大的一些ip發現都來自韓國。為了保證系統的性能,我們調大了系統的可接受的連接數以及對Nginx進行了每個連接能夠進行的請求速率,系統于是恢復了正常的運行。
正常狀態一直持續到第二天,但是到中午之后我們發現訪問又出現了問題,網絡很慢,使用ping發現大概出現了70%左右的丟包,在艱難的登陸到系統上之后,發現系統已經很少有TCP的正常連接,為了查明原因,我們對系統進行了抓包:
1
2
|
tcpdump -w tmp.pcap port not 22 tcpdump -r tmp.pcap -nnA |
原文轉自:http://www.anti-gravitydesign.com