軍備競賽:DDoS攻擊防護體系構建

  • 2019 年 10 月 11 日
  • 筆記

前言:DDoS攻擊(Distributed Denial of Service,分散式拒絕服務攻擊)的歷史可以追溯到1996年(還記得經典的Ping of Death嗎),互聯網技術飛速發展了二十多年,DDoS的攻擊手法也在不斷演進,目前它仍然是最活躍的黑客攻擊方式之一:每天互聯網都會發生不計其數的DDoS攻擊 —— 這種攻擊方式簡單粗暴直接有效,深受攻擊者們的青睞。

隨著時代的發展,黑客技術已經滋生黑色產業鏈,從最初的技術炫耀到惡意報復、敲詐勒索乃至商業競爭 ——DDoS攻擊也不例外,互聯網公司特別是知名的或者特定行業的互聯網公司最容易遭受DDoS攻擊威脅。騰訊作為中國最大的互聯網公司,自然也深受其害,在DDoS攻擊防護體系構建的過程中也積累了一些經驗和血淚教訓,特整理成文供同行參考。

緊急應戰:採購商業化防護設備

網路遊戲是最容易遭到DDoS攻擊的業務模式之一。隨著騰訊遊戲業務的發展,在2008年左右,當時騰訊的幾個主流遊戲(QQ堂、QQ炫舞、QQ音速等)開始頻繁遭遇DDoS攻擊,其他業務有時候也莫名其妙地被攻擊(印象最深刻的就是有一次某個網站被攻擊,團隊忙活了大半天終於頂住了,調查的時候發現是一個私服網站被DDoS後乾脆破罐子破摔把域名解析過來,簡直是無妄之災)。

為了解決日益頻繁的DDoS攻擊問題,安全團隊需要一套DDoS攻擊防護方案,於是宙斯盾項目(項目內部代號,意為像美國宙斯盾系統那樣強力保衛騰訊)就誕生了。

宙斯盾項目的技術方案就是從網路入口鏡像流量到分析系統,分析系統分析流量,如果發現異常就通過BGP將被攻擊IP的流量牽引到防護系統進行清洗,完成後回注回去。整個方案要在網路入口檢測機房入流量,如檢測到異常數據包就丟棄。攻擊流量檢測相對簡單,流量突增(這個策略有個坑,要考慮到業務搞活動等流量突增情況,不然會誤殺)或某類報文如syn比例過大或格式不對即視為異常。只需要將流量鏡像過來分析數據包即可,這個相對容易可以自己寫程式碼搞定,但防護系統相對複雜,通過採購現成的商業設備來實現。

整體架構示意圖如下:

防護系統採購的是綠盟的黑洞和華三的AFC,防護效果都還不錯。還記得當時攻擊最激烈的時候,團隊協調多個部門緊急採購緊急上架,著實忙碌了一番。

那個時候機房頻寬都不大(不超過20G),不過攻擊流量也不大,一般幾百M到幾個G(基本沒見過超過10G的),攻擊類型也單一,主要是SYN Flood和UDP Flood。

方案定好後,接下來就是實施,主要涉及運維團隊的工作了。團隊先從經常被攻擊的機房開始部署,很快有遊戲業務的幾個機房都已經全部覆蓋。下圖就是2010年幾個主流遊戲的DDoS攻擊防護統計數據。

下圖是2009年某個遊戲業務被DDoS攻擊的流量圖,可以看到當年肆虐互聯網的大流量攻擊才800M而已,而宙斯盾的響應時間非常慢(完全人工操作,效率非常低下),各種環節耗費了數小時。

後來通過不斷的運營迭代優化,宙斯盾系統的配套運營工具也趨於完善,自動化需求排上日程並實現,終結了人工應急的原始局面。

順帶提一下,經過團隊的分析,我們發現黑客針對某款遊戲DDoS的最終目的,居然是「炸房」後搶佔第一個位置售賣廣告位。後來通過業務模式修改,大大降低了掛廣告的效果,攻擊自然就減少了,也算是從產品設計層面降低安全風險的一個案例。

精益求精:自研防護設備

DDoS攻擊威脅形勢越來越嚴峻。

通過對某年的DDoS攻擊防護數據進行分析可以看到,業務遭受到的超過4G的攻擊就有200多次,而當時大部分機房的防護能力為4G(一個重點機房部署一台商業設備),也就是說有200多次攻擊超過了機房防護能力而讓整個機房頻寬擁塞,進而影響到該機房所有業務。

為了應對這個問題,就需要各機房補齊資源,簡單的辦法就是堆砌設備:將5台商業設備堆砌起來使得防護能力提升到20G —— 這就意味著要大量補充設備。一台防護設備可以說是價格昂貴,這裡的成本壓力非常大;商業設備對於一些業務特定場景的訂製化需求響應緩慢甚至無法滿足;再就是設備增加之後,需要統計運營數據和統一調度,但當時的商業設備只能寫腳本來一台一台登錄處理,非常複雜和低效。

成本壓力、訂製化需求和運營需求最終讓宙斯盾選擇了自研。

自研一套DDoS攻擊防護系統是個巨大的工程。由於是在網路核心出入位置,對性能會有較高的要求,其中涉及到網路架構、硬體架構、軟體架構、安全攻防策略、TCP/IP協議等技術領域和難點,需要一支對網路、硬體、研發、安全都非常熟悉的團隊。好在公司願意在安全領域不惜血本並且有各個領域的高手:coolc(sponsor,現在已經是部門負責人)、chair(「宙斯盾之父」、第一代負責人、系統網路方面的專家)、熾天使(第二代負責人,安全專家,現任UCloud安全中心負責人)、apple(研發高手)、plan9(老一輩的人應該看過他的文章《高級shellcode設計技巧》)、老牛(主力研發,現在是數據保護項目負責人)、球頭人牛長(主力研發,現在已接班成為新一代宙負責人)、xenos(系統網路方面的專家)、BigHy(主力運營,現在負責大疆的安全)、julang3、honker、瓜哥(不是阿里那個papaya瓜哥)、creative(第三代負責人)、XX、panday、二帥…… —— 當年宙斯盾的同事們,在項目中得以成長,今天仍然在更為廣闊的戰場繼續默默地為互聯網安全做著貢獻。

半年後,宙斯盾防護設備已經初具雛形,單台設備最大防護能力10G,能成功防護SYN Flood、ACK Flood、UDP Flood、ICMP Flood等常見攻擊手法,成本僅為商業設備的十分之一,並且在實戰使用中取得勝利。

於是在2011年初開始灰度部署,新建機房的DDoS防護設備中商業設備和宙斯盾各佔一半,存量機房擴容全部使用宙斯盾。到了2014年,宙斯盾基本上全部覆蓋了所有機房,接下來所有新建機房都是自研設備,這裡累計節省的成本初步估計就上億元。

隨著實戰對抗經驗的增加,宙斯盾系統和團隊基本上能夠控制住公司層面的DDoS攻擊威脅。這部分工作也可以參考團隊主力同學們當時寫的系列文章:《宙斯盾系統構建之路——系統介紹》《宙斯盾——DDoS大眼檢測系統簡介》《論持久戰——帶你走進騰訊DDoS防護體系》

同時宙斯盾團隊也鍛煉成為一支身經百戰的常勝之師,不僅為公司業務保駕護航,還會對合作夥伴施以援手。當年滴滴剛剛接入微信支付的時候,大量用戶湧入流量突增,一度懷疑遭到DDoS攻擊,團隊立即連夜支援,迅速查明原因解決了問題。騰訊的一些合作夥伴(如DNSPod、加速樂、微眾銀行、Garena)也使用了宙斯盾系統,口碑也還不錯。

由於在網路層有了設備,等於是可以對流量進行分析和處置,除DDoS防護外還可以擴展一些其他能力,比如宙斯盾在緊急情況下還對SSL HeartBleed 0day漏洞進行過臨時防護(彌補應用層防火牆的能力不足),對Web業務進行防刷,對網路劫持情況進行分析,以及網路層檢測木馬……這些都取得了不錯的效果,也是流量應用和網路防護設備的一個發展方向,有機會另外探討。

外傳:C/L遊戲保衛戰

遊戲行業歷來是DDoS攻擊的重災區。C/L遊戲一上線就非常火爆,但是樹大招風,DDoS攻擊也隨之而來。宙斯盾團隊在這裡與攻擊者對抗了數年之久,期間系統大重構一次,防護策略至少更新幾十輪,產生技術專利十幾個,孵化出產品方案若干,保衛戰的慘烈程度可見一斑。

現試描述一二:

 資源消耗之SYN Flood

最開始的時候攻擊者只是簡單的採用典型的SYN Flood攻擊,這種攻擊主要是產生虛假的TCP連接消耗目標伺服器CPU,防護辦法就是以性能強大的防護設備代替伺服器去進行TCP連接,把虛假連接硬扛住,本質上是攻防雙方性能的比拼。

SYN Flood的防護方案已經比較成熟了,不管是用syncookie演算法還是丟棄重傳還是其他什麼策略,開啟性能強大的防護設備就可以輕鬆搞定。另外,隨著各大運營商對偽造源IP地址的數據包的治理,很多偽造源IP的包都被路由器丟棄了,威力大打折扣。

資源消耗型的SYN Flood攻擊被防住後,攻擊者又在基礎上衍生出一種流量型SYN Flood,就是直接發syn大包,以大流量阻塞網路為目的,防護方案也簡單,丟掉這種無效syn包即可。後來又出現混合型的SYN Flood,既有資源消耗型SYN Flood又有流量型syn大包。

 殭屍傀儡之流量攻擊

大流量UDP Flood也是常見的攻擊方式,通過大流量阻塞機房頻寬,不過也是比較容易防護的:丟棄掉這些非業務埠或者特定格式的UDP包即可。同樣隨著運營商的治理,偽造源IP的UDP包威力也大減,所以導致攻擊者必須依靠龐大的殭屍網路實施真實IP的攻擊。

隨著物聯網時代到來,越來越多IoT設備也連接到了互聯網,但是這種傳統的線下廠商顯然沒有應對互聯網安全威脅的經驗,這些設備存在各種安全問題,被黑客控制後成為DDoS肉雞。有了IoT殭屍(如著名的Mirai及其變種)加持,DDoS攻擊的流量不斷刷新紀錄,動輒500+G,上T也不鮮見。

宙斯盾團隊對攻擊源IP進行分析發現,近幾年的攻擊源來自IoT/智慧設備(如智慧路由器、攝影機、智慧插座、智慧門鎖)的數量呈上升趨勢,也是從一個側面反映出萬物互聯時代的到來。我們把這部分被黑客利用的IP作為黑名單庫,防護的時候直接丟棄,甚至還用到其他安全系統去(看,這是威脅情報應用)。

另外,流量大了之後就帶來一個問題,流量已經超過機房物理頻寬,換句話說就是機房已經被打爆了(這是完全超過,還不算那種達到頻寬百分之七八十就抖動的狗血情況)。這種攻擊的應對就非常消耗資源:要麼繼續投資源建設超大頻寬的機房(頻寬很貴的),然後防護資源滿配,要麼就讓運營商在上一層做清洗(比如電信的雲堤。我們也有和一些運營商合建DDoS高防服務)。

「天下熙熙,皆為利來;天下攘攘,皆為利往」,我們的數據還監測到一個有意思的現象:隨著一個階段的實施DDoS攻擊成本的增加、刑事風險的增加以及獲利減少,好多肉雞不再進行DDoS而是用於挖礦了。

以小博大之反射型DDoS攻擊

自從DNS反射型DDoS攻擊被實戰應用之後,這種攻擊就一直在進化,各種協議(DNS、SNMP、LDAP、SSDP、NTP、Memcached、IPMI)都陸續被挖掘出來並實際攻擊,放大係數也越來越大,整合起來的流量也越來越大,從12年的65G到後來的650G。

反射型攻擊防護起來比較容易,因為大部分被攻擊的業務是不會需要這些協議的(呃,DNS Server是個特例),按協議特徵或者來源/目的埠過濾掉就行了 —— 還是那個問題,如果攻擊流量超過頻寬就會比較麻煩。

我們看到的某一時期的反射型DDoS攻擊分類比例:

我們看到的某一時期SNMP反射型DDoS攻擊源全球分布:

終極對戰之協議模擬攻擊

深入業務邏輯的對抗來了,是時候展示真正的技術了。

攻擊者繼續變招,採取了小流量UDP Flood攻擊業務埠,當流量在一定區間的時候可以阻塞業務埠,該埠對應的遊戲房間會崩潰,但是又不至於對遊戲整體有影響 —— 與之前的入流量陡增及掉線數突增不同,這種攻擊讓數據在大的面上不會有波動,需要通過精細化運營來發現。

團隊發現上述情況後對策略進行了升級,針對業務埠僅允許符合該遊戲協議格式的UDP包通過,攻擊又被緩解了。

攻擊者繼續變招,這次他們直接模擬正常的遊戲協議格式然後向業務埠發包 —— 這就是四層的CC攻擊。

這次怎麼緩解呢?一個方案是檢測IP的狀態(即該IP之前應該登陸過所以要跟遊戲Server打通維護一個IP狀態表,不在表中的的IP發來的數據包不管格式如何直接丟棄);另一個方案就是「安全水印」(即遊戲客戶端動態生成token,防護設備校驗數據包里的token是否合法)。

從原理上看這種方案跟下發JavaScript防護CC攻擊的方案類似,只是針對B/S架構的CC攻擊可以下發JavaScript讓瀏覽器實時執行去生成「水印」,而C/S架構就只能預埋邏輯到客戶端了。

無論哪種方案都需要防護設備能夠快速響應需求,迅速迭代版本,自研的優勢就體現出來了。同時我們也把在業務穩定運營的「安全水印」輸出為產品,為騰訊雲上客戶提供服務。

重裝升級:雲中鏖戰

安全團隊的價值是降低業務風險,進一步價值是提升業務的核心競爭力,終極價值是成為盈利單元。把內部業務服務好了,下一步就是能力輸出。

隨著互聯網的發展,傳統企業也要擁抱互聯網開展線上業務(互聯網+傳統行業= 產業互聯網),使用雲計算是一個方便低成本的解決方案,同時也為安全服務提供了一個入口。宙斯盾就這樣依託騰訊雲輸出,除了為客戶提供免費的DDoS防護基礎服務,還推出了收費的訂製化高防服務及私有雲版本。

雲上的DDoS情況跟自研差異較大,長尾客戶多、技術架構複雜、特殊情況頻發 —— 老革命遇到了新問題,於是宙斯盾從技術架構、系統運營、數據分析、產品設計等方面全面重構以適應雲時代的需要。花了整整一年,宙斯盾系統終於重裝升級,不僅是架構、運營、數據、產品層面得到提升,而且還嘗試引入機器學習基準線模型去智慧地判斷攻擊,新架構基本控制住了這裡的問題,同時也實現了安全的終極價值 —— 以宙斯盾為底層支撐的騰訊雲大禹和宙斯盾DDoS防護服務牛刀小試,收入可觀。

雲上客戶與公司業務同事不同,雲上客戶人數多而且容忍度低,所以不能把粗獷的內部系統給客戶,而是要注重產品體驗。另一個需要注意的就是雲上業務複雜,很多時候過往經驗並不適用。我們見過一些客戶的系統健壯性不足,很小流量的攻擊系統就崩潰了,根本來不及觸發防護閾值。針對這種情況,我們就把一些通用配置下放到客戶側,客戶按實際情況來配置。此外,一些複雜配置也可以以專家模式提供給用戶。

雲上業務的複雜性導致雲上的DDoS攻防比自營業務還激烈,尤其是近幾年隨著雲業務的發展,DDoS攻擊數量、攻擊手法、最大峰值、業務數都超過了自營業務(比如某個雲客戶遭遇到的1.2T攻擊),這些挑戰是好事,通過對這些攻擊的不斷運營優化反過來又促進了宙斯盾系統的迭代優化。

我們看看被DDoS攻擊的行業分布,很有代表性。

未來還在繼續,雲上宙斯盾還在不斷迭代優化。

後記

DDoS攻擊和防護的本質是攻防雙方資源的對抗,一方要不斷囤積大量資源具備超大流量輸出,一方要不斷建設能夠抗住超大流量的頻寬,對抗的成本和激烈程度甚至可以用軍備競賽來形容(每年我們的伺服器運營成本就是數千萬)。跟入侵一樣,大部分普通攻擊比較容易防護,真正厲害的是頂尖高手(比如利用核心交換路由系統bug進行DoS的幾十位元組數據包,再比如針對防護設備本身的DDoS……)

技術對抗是一方面,在技術之外的刑事打擊和震懾必不可少。騰訊「守護者計劃」安全團隊也會配合警方對黑產進行打擊,破獲的幾起DDoS攻擊大案有效地遏制了中國DDoS攻擊態勢。

就在寫作本文時,宙斯盾的100G高性能支援IPv6版本已經在全面部署中,400G以及具備邊緣計算能力的智慧網卡新設備預研已在路上。時代變遷,技術發展飛快,但是我們始終要記得,安全是一個過程,建設系統永遠是第一步,通過運營來不斷迭代優化才是安全體系的核心。

附錄

lake2的企業安全九部曲(未完待續):

《自研之路:騰訊漏洞掃描系統的十年歷程》

《企業安全應急響應中心建設理論與實踐》

《捻亂止於河防——淺談企業入侵防禦體系建設》