騰訊云周斌:錘子發布會被DDos攻擊,我們是這樣抗住的
分享嘉賓:周斌 騰訊云安全總監 整理:高效運維
9月18日,針對目前備受關注的互聯網云安全問題,“騰訊云會客廳?技術專家面對面”首次活動在京舉辦。騰訊云安全總監周斌攜技術專家團隊,與到場朋友一起共話云時代的安全問題。
如下為周斌先生本次技術分享的部分精彩內容。請您欣賞。
這是一個最好的時代、也是一個糟糕的時代
當下是一個什么樣的時代?這個是我們看到的數據,這是一個最好的時代,中國的網民數和互聯網普及率一直在上升。根據這個數據,2010年到2015年整個全球云市場也是在飛速的成長過程當中。
當下也是一個糟糕的時代,DDoS肆虐、黑產橫行、阻礙互聯網的發展。在2014年12月,某國外知名廠商遭受到了DDoS攻擊,服務中斷12個小時。今年上半年,國內發生流量超過100G以上的攻擊次數有33起。
2015年7月,騰訊云防護的最大一次攻擊的流量已經接近300G。這個流量是指“到達流量”,即從機房看到的實際收到的流量帶寬。了解互聯網黑產的同學,都知道一個名詞,叫“打出流量”:
打出流量 VS 到達流量
這兩個本身是有一個距離的。運營商骨干網在中間做了大量的清洗工作。在流量經過所在城市的城域網,上到骨干網,再到對端城市的城域網時,流量會丟失掉絕大部分。中間運營商的路由器和防護設備會把大部分的惡意流量都丟棄。
換句話說,你在互聯網上買1個G的打出流量,實際上到達受攻擊方的時候,可能就是100兆。也就是說90%都會在途中丟失。
所以,我們在2015年7月防護的這次攻擊,攻擊流量(到達流量)是297G,按照這種比例來算,攻擊方打出的流量是一個非常非常恐怖的數字。所以說,從DDoS和黑產角度來看,這真的是個很糟糕的時代。
錘子科技抵御DDos攻擊的全過程
錘子官網的原始訪問架構很簡單:用戶通過瀏覽器直接訪問到IDC機房的服務器上,但這也是標準的情況。錘子官網服務器所在的IDC,具備一定的DDoS 防護能力,約幾個G的級別。當天發布會,訪問官網的流量很快沖到上限。在這里需要說明的是:
除非是海量服務的網站,正常情況下,一個普通網站業務的流量不太可能有幾個G(大量圖片和視頻資源除外)。特別是對于官網而言,更加不可能。
這種情況出現以后,整個IDC機房的入口就被堵塞了,錘子科技官網已經無法正常服務了。錘子科技于是派人來對接大禹。
對接的過程很簡單:在錘子官網域名的DNS配置里面加一條CNAME,將相應域名解析到大禹即可。
這是”大禹”令人欣賞之處:不管用戶的實際機房是否在騰訊云,只需要把它的域名解析到大禹系統,就可以為他提供防護,能很方便地為非騰訊云的客戶提供服務。
這個過程中使用到了DNS 協議的CNAME功能。它會把用戶流量的請求先路由到大禹的加速點,然后由大禹的加速點清洗、過濾,再吐回到原站。也就是說只要在域名解析的時候,把域名指向大禹系統即可,不需要將用戶的服務器從自己機房搬遷到騰訊云機房。
這樣設置后,客戶端發送過來的數據(流量),不管是攻擊請求,還是正常請求,流量會先走到大禹系統的防護節點(這個節點內部叫做OC點)上做流量清洗。清洗完以后,把剩余流量回注到用戶的IDC(本例中是錘子服務器)。
這種情況下,可能攻擊過來的是10個G(打到了大禹所在機房),但在經過清洗后,用戶IDC 僅接收到了500M的正常訪問流量。
這樣處理完后,用戶IDC就可以正常提供服務。同時,對于大禹而言,每一個OC點上分擔了只是10個G的幾十分之一。
危情13分鐘
當時的情況是,錘子科技的技術人員在發現了被DDoS 攻擊后,立刻把DNS解析到“大禹”系統。
而DNS的配置從配完到生效,需要一段時間,雖然從理論上來講,可以修改到一秒、兩秒,但實際上今天的中國環境做不到,最快的話,也是在分鐘的級別:
因為DNS有一個root(一般在美國),下面還有一個Local DNS,所有的用戶生效要依賴于Local DNS都刷新生效。中國很多運營商在Local DNS緩存時間設置的不一樣,所以如果要看到所有DNS全部更新,大概是在分鐘的級別。
雖然單一的、個別地方也許有秒級。但是,國內如果所有的用戶全部刷新,大概要幾分鐘才能完成。所以整個過程耗時13分鐘,中間有一部分時間是花在Local DNS生效。這個是所有的廠商都無法控制的,因為Local DNS生效時間只有運營商才可以控制。
解讀 DDoS 防護
DDoS 在行業內有一個不成文的說法,所謂流量型攻擊的防護,就是拼帶寬。理論上來講,防護帶寬越大,就越能夠為用戶提供更強的防護能力。
騰訊之所以能夠提供幾個T的防護能力,是因為目前已經在全國各地部署了400多個防護節點,平均每個點可以提供10個G的防護能力,400個點,就能夠提供4個T的防護能力,未來會更多。
而且這個架構有一個好處,他本身是一個平行擴展,這意味著今天投入了400個點,如果說真的攻擊流量上來的話,可以很容易再投入進去100個點,變成5個T。
帶寬就是成本,如果空閑帶寬只是為DDoS服務,這會是一個巨大的成本。但是,因為騰訊有這么大的體量,已經布局了非常多的機房,因此有條件聯合起來把空閑帶寬做防護。
普通IDC能用作流量清洗的OC點么?
假設普通IDC有10G帶寬,但肯定抗不了10G的攻擊流量,為什么?
因為很多情況下,服務的可用性會被海量連接數給擊潰,在機器網卡還沒到峰值時,機器的CPU可能已經扛不住了。這時甚至可能只能扛到1個G(雖然帶寬還有9個G),這個點就已經宕掉。
但是大禹所有的OC點部署了一個流量檢測的防御系統,外面都有三個防護中心,會檢測攻擊流量,做流量清洗。換句話說,在10個G的帶寬之內,不會斷掉,還可以提供服務,直到整個點流量被打滿。
三個防護中心包括有:管理中心、攻擊的清洗中心和攻擊檢測中心。通過三個中心之間的數據交換,來防護DDoS和CC攻擊。
CC攻擊
攻擊者借助代理服務器生成指向受害主機的合法請求,實現DDOS和偽裝就叫:CC,Challenge Collapsar,HTTP里針對應用型攻擊的方式。
傳統的DDoS攻擊,主要是通過大流量發起的攻擊,比如說你的帶寬只有1個G,那拿100個G把你的機房帶寬塞滿。這樣的話,你的網絡就癱瘓了。
其實現在很多時候,黑產一般會采用CC來對付一個網站,怎么做?
去耗盡你的CPU資源,把你機器網卡的連接數全部掛滿,這樣即使你的帶寬仍然有很多很多,只需要20兆的流量就可以把你打趴下。
這個是在DDoS之后的另外一個很大的威脅點。大禹現在這套系統對CC也是有一個很好的防御機制。
整個防御機制,從攻擊檢測到管理中心,然后再到整個攻擊的清洗完成,可以在5秒鐘之內完成。當一個海量的流量沖過來,會在5秒鐘之內完成清洗。
為什么可以5秒鐘完成流量清洗?
其實,很多時候攻擊有兩種情況:
一種是像洪峰一樣,一浪一浪的方式,會以一個波浪型逐步上升的趨勢。
這個比較好解決,設一個延遲反應時間就行了,是一分鐘還是十分鐘。
第二種是上來直接就是洪峰谷底的方式,這種方式如果防御系統反應太慢,很多云機房都響應不了了,很多IDC其實就是因為這種瞬時損失的峰值,把整個IDC的帶寬全部撐滿。
但是,因為在騰訊云上部署了這樣DDoS的統一防護系統,所以可以在很短的時間之內響應秒級的事件時間,響應這種防護需求,從而保證服務正常。
我的分享就是這些,謝謝閱讀。