在果殼網任職期間經歷過多次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保住靜態化的主頁可以訪問,其他任何動態網站功能就只能呵呵了。
目前有一些專門提供抗DDoS服務的企業,它們利用龐大的帶寬儲備,通過服務于成千上萬家企業達到降低自身運營成本的目的,同時防御效果及抗D成本相對其它方式更優,這里推薦的平臺是加速樂云防御系統。