1. <dd id="au9n3"></dd>
    2. <tbody id="au9n3"><pre id="au9n3"></pre></tbody>

      <dd id="au9n3"><center id="au9n3"></center></dd>
    3. En

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

      作者:lake2公布時間:2018-12-25閱讀次數:29035評論:1

      分享

      作者:騰訊安全平臺部 lake2

      【前言】 


      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的防護方案已經比較成熟了,不管是用syn cookie算法還是丟棄重傳還是其他什么策略,開啟性能強大的防護設備就可以輕松搞定。另外,隨著各大運營商對偽造源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的企業安全九部曲(未完待續): 


      自研之路:騰訊漏洞掃描系統的十年歷程
      企業安全應急響應中心建設理論與實踐
      捻亂止于河防——淺談企業入侵防御體系建設

      評論留言

      提交評論 您輸入的漏洞名稱有誤,請重新輸入
      放荡的寡妇