文/gashero
在果殼網任職期間經歷過多次DDoS攻擊。 那種絕望的心情,還歷歷在目。 問題不是你能做什麼,而是機房決定了其實你什麼都做不了。
攻擊者是控制一個足夠大的分散式集群來發起攻擊,各種雜七雜八的包,什麼都會有。 根本不在乎你開的什麼服務,也沒那耐心分析你有什麼服務。 比如哪怕你根本沒開UDP的任何服務,但他就是發一大堆UDP的包,把你頻寬占滿。 還有啥辦法。
十多年前的OS還沒法應付大量TCP併發連接,於是那個年代有個SYN flood攻擊,就是一大堆SYN包嘗試握手。 現代也有,效果大不如前,但是仍然在大流量下可以阻塞受害者的通信能力。
更現實的問題在於,機房的總頻寬有限。 當你的伺服器IP段受到攻擊時,他會直接找上級接入商將發給你的包在骨幹上都丟掉。 此時雖然知道自己正在被DDoS攻擊,但攻擊包根本就沒到機房,更別說伺服器,於是只能是守著伺服器,毫無流量,等待。
上級接入商大多是壟斷國企,根本沒耐心跟你做任何深層次合作,直接丟包是最簡單方便的方法。 同時,即便此時攻擊者停止了攻擊,你也不知道。 而想要上級接入商重新開啟給你的包轉發,動則就是個一天的流程。 而一旦發現攻擊還沒完,就立刻又是丟包。
那幾年被攻擊時,也火燒火燎的找辦法。 嘗試將網站部署到雲計算平臺上,依靠對方提供的頻寬冗余來頂。 甚至可能只是拼短期頻寬的費用。 當時國內的雲計算供應商試了好幾家,最終都因為沒有足夠的頻寬應對攻擊而拒絕了我們。 他們都是出於對果殼網的喜愛和免費幫忙的,能做到這一步也挺不容易了。
有人提到攻擊弱點,我感覺真正這樣花費精力去分析的攻擊者其實不多見。 不過大多攻擊確實會避開一些明顯抗攻擊能力不錯的點,比如很多網站的首頁會做靜態化,所以攻擊首頁就不划算。 圖片同理,對CPU消耗太小了。
幾個常見的弱點:
1、登錄認證
2、評論
3、使用者動態
4、ajax api
總之涉嫌寫資料庫,聯表查詢,緩存澗出的都是好目標。
所以,回答就是:沒有啥好辦法,耐心等待吧。
看了其他幾個回答提供的方案,分別分析一下:
1、拼頻寬:或者說拼軟妹幣,這不是一點點錢能搞定的,果殼網彼時只買了不足100M頻寬,所在早期機房總頻寬也不足40G,攻擊頻寬都沒見過低於10G的(機房的人後來告訴我的)。 假設某便宜機房(肯定不在北上廣深),頻寬價格為100元/M*月,每月按峰值計費。 則要買10G頻寬頂一下,需要的月費是100萬,100萬......
2、流量清洗&封IP:如前述,要這麼做的前提是攻擊包至少要到你的機房。 而機房自保的措施導致了資料包根本到不了機房,無解
3、CDN服務:現代CDN供應商還沒有完善的動態網頁加速技術,所以結果就是,你充其量利用CDN保住靜態化的主頁可以訪問,其他任何動態網站功能就只能呵呵了。