5月11日晚上9時許,網易的大量用戶發現訪問網易新聞出現問題,相應的,有很多游戲用戶報告說游戲掉線嚴重。一時間,有關“網易大樓著火”的謠傳甚囂。晚上9點42分的時候,“網易新聞客戶端”新浪微博發推:
圖1 網易新聞客戶端微博內容
這次攻擊,相較于以往的DDoS攻擊,官方描述比較特別:“骨干網絡遭受攻擊”。筆者敏銳地意識到這是最近學術界才提出的LFA攻擊,攻擊范例比較少。本文接下來將詳細介紹LFA攻擊的概念、現狀和防治方法。不過,悲觀地講,現在還沒有關于LFA特別好的解決方案。在此聲明一下,筆者對網易的網絡拓撲和本次攻擊的具體細節一無所知,所有解釋只源于自己的推測。
新型的DDoS攻擊:link Flooding Attack(鏈路洪泛攻擊)
LFA,可以認為是一種新型的DDoS攻擊,全稱link Flooding Attack(鏈路洪泛攻擊)。顧名思義,就是以鏈路為攻擊目標,不同于傳統DDoS以服務器為目標,LFA是通過攻擊服務器群的主要出口入口鏈路,造成鏈路擁塞,導致服務器無法滿足正常用戶的請求。以癱瘓鏈路為目標,而不是以癱瘓服務器為目標,這是LFA和傳統DDoS最重要的區別,這也是LFA比DDoS難以檢測和防治的重要原因。傳統的DDoS可以通過加服務器、負載均衡,或者流量監測來防治,但是這些方法在LFA里就起不到良好的效果。為了解釋這些問題,我們先詳細地介紹下LFA的原理。
學術界最早提出鏈路攻擊DDoS的是CMU的Ahren Studer和Adrian Perrig。兩位作者在09年的論文《The Coremelt Attack》提出了這種攻擊的雛形。
圖2 LFA攻擊雛形
如圖2,圖中有兩種節點,灰色的是被攻擊者控制的節點如S1,S2,S3,白色的節點是正常的服務器節點如A,B,C。在攻擊中,攻擊者讓S1,S2,S3大流量通信,來導致target link過載,從而導致正常的節點間無法通信。為了增加攻擊的效果,可能會順帶著用流量洪泛白色節點。但是,在白色的節點里,有很多攻擊流量是看不到的。嘗試在正常服務器進行流量檢測是很難檢測這樣的攻擊的。讀者現在可能認為網易的服務器不會和攻擊者控制的灰色節點混在一塊,這樣的攻擊可能不太現實,至少對于這次網易被黑不太現實。沒關系,我們繼續看一個加強版的LFA攻擊——CrossFire Attack。注意,不是穿越火線。
加強版的LFA攻擊:CrossFire Attack
CrossFire攻擊是也是CMU的研究人員提出的,成果發表在2013 IEEE S&P上。
圖3 Crossfire攻擊
Crossfire攻擊的思路和上面的Coremelt大同小異。如圖3,攻擊者想讓中間target area紅色方形的的服務器(Public Server in Target area)down掉,服務器周圍的藍色方形是Decoy Server,不是攻擊目標但是和攻擊目標網絡位置比較近的服務器,Decoy Server和Public Server共享一些重要的骨干出入鏈路,所以對Decoy Server的洪范也會影響Public Sever。攻擊的方法就是通過低密度、看似正常的流量有計劃地訪問Decoy Server和Public Server,導致Target link負載過重,最終導致Public Sever無法服務。在Decoy Sever和Public Server看來,流量都是正常的,但是結果仍然導致DDoS的發生。而且,攻擊一條Targe link的成本比攻擊所有服務器低很多。
讀者會問,網易的機房里只有自己的服務器啊,那Decoy Sever哪來的?根據LFA的一次攻擊實例,筆者推測,攻擊者可能攻擊了網易機房的上層交換節點或其他類似機構(甚至可能是IXP,ISP之間的交換節點)。比如網易的機房和阿里的機房同時連在一個交換機構上,那么攻擊者很可能通過正常訪問阿里的服務器導致交換節點down掉,網易的服務器也無法訪問。在攻擊中,阿里的服務器是Decoy Server,網易不小心躺槍了。
現實生活中的Target link
那么,現實生活中存在這樣的Target link么?實際上,在傳統的TCP/IP網絡中,流量的分布很不均衡,如上面假設的網易新聞的流量可能主要通過幾個主干道。也許有其余多個備份鏈路的存在,但是這些鏈路承擔的流量比例很小。最重要的問題是傳統的TCP/IP網絡是分布式的,路由算法如BGP、OSPF分散在各個路由器上,不便于集中控制,通常切換主干道非常麻煩,而且耗時非常長。像網易的這次修復,筆者感覺可能是更改了相干拓撲的路由,如啟用了備份鏈路,這個時間通過要持續幾個小時。果然,直到12日凌晨2點31,網易才宣布已經修復。但據媒體報道,完全恢復是在12日早上6點。
但是這樣的修復方法下次一定有效么?不見得,如果攻擊者熟知網易網絡相關拓撲,假如網易切換到另外一條主干道(New Target link),攻擊者立即攻擊這條新的Target link,如此反復。網易切換主干道的時間是小時級的,但是攻擊者可以達到分鐘級切換。網易應該慶幸的是攻擊者沒有搞清楚全部的拓撲,否則,這次的事件持續時間將更長。
在云計算時代,各種公司的服務器托管在同一云服務商上,對于這種攻擊,只能云服務商來解決,單個個體是沒辦法解決的。但是如果云服務商仍然采用傳統TCP/IP的路由策略,不能快速切換,仍然會出現類似的問題。云服務商可以考慮采用SDN和NFV的相關方案,增強對路由的管理。如果是對于IXP的攻擊,只能各個ISP之間相互合作了。
總結起來,LFA的攻擊具有如下特點:
1.低密度流量攻擊,難以檢測2.攻擊成本低3.持續久,攻擊者可以不停切換攻擊link
短期內解決這個問題的關鍵是負載均衡、加大帶寬、增加鏈路,深層次地看,我們應該重新考慮改進我們網絡的基礎架構了。
我們期待網易后續能分享更多的攻擊細節,雖然不太可能。期待學術界和工業界對這個問題的后續研究和探討,希望我們早日能找到好的解決方案。
作者微博: @pengfeituan
參考資料
[1]Studer A, Perrig A. The coremelt attack[M]//Computer Security–ESORICS 2009. Springer Berlin Heidelberg, 2009: 37-52.
[2]Kang M S, Lee S B, Gligor V D. The crossfire attack[C]//Security and Privacy (SP), 2013 IEEE Symposium on. IEEE, 2013: 127-141.