一次對抗大規模DDoS的真實經歷
每個網站都會面對網絡攻擊。唯一的區別在于,如何建設防御,以及如何進行警報和響應。
在網絡上很難找到關于防御黑客攻擊的真實案例。一方面,信息披露可能會引發官司,另一方面,披露這些信息往往會導致不良的財務后果,因此各公司往往不情愿分享相關細節。然而,如果我們完全不披露這些故事,會使其它人在不知情的情況下犯相同的錯誤。如果我們為建立威脅情報共享體系做出貢獻,分享網絡安全戰場上的真實經驗,可以讓事情變得更好。
乙方是一家SaaS(軟件即服務)公司,為大中型企業提供網頁內容管理服務。其服務的客戶A公司專注于幫助醫療供應商提高運營和財務績效,A公司為數千家醫院和醫療保健機構客戶提供服務,管理數十億美元的開支。
要分析的這次DDoS攻擊的規模極大:在攻擊高峰時,8600萬個用戶同時從世界各地的超過10萬臺主機上訪問網站(當事方聯系了FBI)。當攻擊結束39小時后,防護方艱難的取得防御性勝利。下面是事件過程:
瘋狂攻擊
A公司的年度會議即將召開,會議將有15000人參加。會議的前一天晚上,乙方收到了警報消息。A公司的網站服務器正承載著難以置信的網絡流量。需要說明的是,A公司也是一家SaaS提供商,為客戶提供數據內容和分析,因此這種程度的訪問量會極大地影響該公司的服務質量和信譽。沒有多少時間,必需快速做出響應。
所有訪問請求都來自百分百合法的URL。所以很難分辨出其中的惡意流量 攻擊來源遍布世界各地:北朝鮮、愛沙尼亞、立陶宛、中國、俄羅斯、南美 60%的訪問量來自美國本土 攻擊者直接解除DNS和攻擊IP地址的關聯
一開始,防御方使用AWS(Amazon Web Service)Route 53,重新配置了一些文件,然后立即切斷了與這些IP地址的通信。在成功抵御了最初的幾波攻擊后,網絡似乎恢復了正常,但事實證明,這只是第一波,而接下來的才是更瘋狂的攻擊。
當天傍晚,攻擊再次發起并直接指向DNS域名,這意味著之前的IP攔截策略不再奏效,眼看著數據流量急劇上升。
放棄還是抵抗
乙方和A公司的首席信息官進行了討論,最后達成一致意見:決定抵抗到底。作為一家SaaS公司,提供持續、可靠的服務,維持公司信譽是重中之重。雙方同意分擔預計為數萬美元的防御成本,為正義而戰。
經過仔細審視第二波攻擊,防御方意識到可以立即采取一些緩解措施:
1. A公司的業務只面向美國客戶,不過也有少部分流量來自國外。因此防御方迅速地建立了一些防火墻規則,這些規則只允許來自美國的流量通過。于是,40%的攻擊流量被拒之門外。
2. 在AWS(Amazon Web Service)Route 53后面加了一道網絡應用防火墻,配置了一些HA代理,這可以為FBI收集大量的登錄信息,便于他們進行事后分析工作。
3. 調整流量自動縮放的配置。自動縮放會根據接入流量規模大小調整自己的上下閾值。將下閾值調整得比上閾值大得多,這意味著系統在流量變大時會做出合適的反應,但永遠不會達到流量下閾值。結果,每個運行的實例都會在服務列表中永續存在,記錄完整無損的登錄信息,以備FBI分析。兵來將擋,水來土淹
攻擊者放大攻擊強度,AWS就放大防御強度。攻擊者進一步放大攻擊強度,AWS就進一步放大防御強度,這樣的情景在第二天反復上演。與此同時,乙方每小時就向A公司的董事會負責人匯報一次情況。
在DDoS攻擊的最高峰,共部署了18臺大型、計算機能力加強版的HA代理服務器,40臺大型網頁服務器。網頁服務器群特別大,因為盡管阻隔了美國本土外的流量,降低了總數據流量的40%,但剩下的60%來源于美國本土的連接中也包括合法的URL。大多數連接都在訪問動態服務,這部分訪問記錄不太容易抓取。
攻擊者的目標是一個非常大型的全球化機構。防御方通過非常穩定的HA代理防火墻和負載均衡配置,部署了高度延展的網頁服務器群。然后就是云防護(CloudFront),這是AWS的全球內容分發網絡。再然后是Route 53,Route 53是AWS的全球冗余DNS平臺。這些設備共同組成了關鍵基礎設施,提供了在每一層上的可擴展性和安全性。
在第二天晚上7點左右,事情開始發生轉變。在加強了防御強度后,攻擊者并沒有進一步增加攻擊強度。此時此刻,服務器正承載著來自全球10萬臺主機的8600萬個攻擊連接,通過AWS基礎設施的流量達到每秒20GB。
攻擊者無計可施,只能反復地發動攻擊,最后直到完全放棄。事后A公司的首席執行官告訴我們,如果他們的網站托管在自己的數據中心,防御的選擇就會非常少,而且可能在攻擊開始僅僅八個小時之內就會完全無力應對。#p#
最后核算一下防御成本,本次通過亞馬遜網絡服務成功進行的這次長達36個小時的防御,費用不超過1500美元。雙方平攤的話,各方還不到750美元。
下面是這次在大規模DDoS攻擊中存活下來的經驗,以及一些可以用來加強數據中心,并保護公司網站的策略:
1. 針對DDoS攻擊設計、配置、測試你的設備。借助你的托管服務商的經驗來進行這些測試,善用他們的援助。
2. 確認你的網絡環境中的“正常”是什么樣子。這樣在網絡狀態進入“不正常”狀態時可以即時設置報警。
3. 將你面向公共的域名別名化(alias)到內部域名。這可以讓你在幕后進行快速響應,并實時做出DNS修正,而不需要依賴第三方服務供應商。
4. 學會如何有效地在可能受到威脅的情況下進行DNS修正。經常進行練習。
5. DDoS攻擊會用到數百個攻擊向量,試圖耗盡服務器的資源。流量測試會啟動許多并行線程,這可能使DDoS攻擊更加兇猛。每個測試都至少應當運行三小時,以維持響應時間,但在兩次測試之間應留出足夠的響應區間。在進行顯著性測試、風險懸浮以及取消服務之前應當授予明確的許可。
6. 在進行自動放大配置時,不要將CPU負載作為量度。DDoS攻擊的最好證據就是接入HTTP請求的數量上升,因此最好將接入連接數作為觸發警報的量度。
7. 防御規模應當增加得迅速,但下降得緩慢。增加和下降的速度比應當設置為4:1或2:1。這會使系統在應對第一波攻擊時響應快速,之后也不需要反復增加規模。特別是在攻擊者采取放風箏戰術,即撤退后又殺回來的情況下。
8. 如果使用AWS彈性負載均衡(AWS Elastic Load Balancing),激活“交叉地帶負載均衡”選項。這對于均衡后端服務器群的流量而言是最好選擇,會顯著地減輕DNS設施上的負載。
安全行業需要集體合作,更好地了解敵人的戰術、技術和攻擊流程,以在和惡意黑客的戰斗中取得先機。