遊戲行業DDoS 6年談:什麼樣的架構才可以對DDoS免疫?
接觸DDoS相關技術和產品8年,其中6年,都在探究遊戲行業的DDoS攻擊難題。
在我看來,遊戲行業一直是競爭、攻擊最複雜的一個「江湖」。許多遊戲公司在發展業務時,對自身的系統、業務安全,存在諸多盲區;對DDoS攻擊究竟是什麼,怎麼打,也沒有真正了解。
我曾看到充滿激情的創業團隊、一個個玩法很有特色的產品,被這種互聯網攻擊問題扼殺在搖籃里; 也看到過一個運營很好的產品,因為遭受DDoS攻擊,而一蹶不振。
這也是為什麼想把自己6年做遊戲行業DDoS的經驗,與大家一起分享,幫助在遊戲領域內全速前進的企業,了解本行業的安全態勢,並給出一些可用的建議。
在與遊戲公司安全團隊接觸的過程中,看到遊戲行業對安全有兩個很大的誤區。
第一個誤區是:沒有直接損失,就代表我很安全。
事實上,相比其它行業,遊戲行業的攻擊量和複雜度都要高一籌。 每個遊戲公司,每個應用,其實都遭受過攻擊。但許多遊戲安全負責人,仍然會「蒙在鼓裡聽打雷」,沒有察覺正在發生的攻擊,或者乾脆視而不見,由此埋下安全隱患。
第二個誤區是:很多遊戲行業安全負責人會認為,只要裝了防火牆,就能擋住絕大部分的攻擊。
然而,防火牆的功能其實很有限。這也從側面說明了許多遊戲行業安全薄弱的根源:只去做好一個點,卻看不到整個面。
然而,攻擊者總會從意想不到的薄弱點,攻陷整個遊戲行業的內部系統。
以DDoS攻擊為例,2016年,全球有記錄的DDoS峰值已近600G,300G以上的DDoS攻擊,在遊戲行業內已經毫不稀奇。
為什麼遊戲會是DDoS攻擊的重災區呢?這裡說幾點主要的原因。
首先是因為遊戲行業的攻擊成本低廉,是防護成本的1/N,攻防兩端極度不平衡。隨著攻擊方的打法越來越複雜、攻擊點越來越多,基本的靜態防護策略無法達到較好的效果,也就加劇了這種不平衡。
其次,遊戲行業生命周期短。一款遊戲從出生,到消亡,很多都是半年的時間,如果抗不過一次大的攻擊,很可能就死在半路上。黑客也是瞄中了這一點,認定:只要發起攻擊,遊戲公司一定會給「保護費」。
再次,遊戲行業對連續性的要求很高,需要7*24在線,因此如果受到DDoS攻擊,遊戲業務很容易會造成大量的玩家流失。我曾經見過在被攻擊的2-3天後,遊戲公司的玩家數量,從幾萬人掉到幾百人。
最後,遊戲公司之間的惡性競爭,也加劇了針對行業的DDoS攻擊。
而針對遊戲行業的DDoS攻擊類型也非常的複雜多樣。總結下來,大致分為這幾種:首先是空連接:攻擊者與伺服器頻繁建立TCP連接,佔用服務端的連接資源,有的會斷開,有的一直保持;比如開了一家麵館,「黑幫勢力」總是去排隊,但是並不消費,那麼此時正常的客人也會無法進去消費。
其次是流量型攻擊:攻擊者採用udp報文攻擊伺服器的遊戲埠,影響正常玩家的速度;還是上面的例子,流量型攻擊相當於坏人直接把麵館的門給堵了。
再次,CC攻擊:攻擊者攻擊伺服器的認證頁面,登陸頁面,遊戲論壇等,這是一類比較高級的攻擊了。這種情況相當於,壞人霸佔了收銀台結賬,找服務員去點菜,導致正常的客人無法享受到服務。
而後,假人攻擊:模擬遊戲登陸和創建角色過程,造成伺服器人滿為患,影響正常玩家。
還有對玩家的DDoS攻擊:針對對戰類遊戲,攻擊對方玩家的網路使其遊戲掉線或者速度慢和對網關DDoS攻擊:攻擊遊戲伺服器的網關,遊戲運行緩慢。
最後是連接攻擊:頻繁的攻擊伺服器,發垃圾報文,造成伺服器忙於解碼垃圾數據。
我以常見的DDoS和CC攻擊為例,對他們的攻擊方式做一個解釋。DDoS攻擊的主要的方式是syn flood,ack flood,udpflood等流量型的攻擊,本身從攻擊方式來是非常簡單的,無論是哪種方式,流量大是前提。如果防禦方有充足的帶寬資源,目前的技術手段防禦都不會是難事;針對UDPflood,實際上很多遊戲目前都不需要用到UDP協議,可以直接丟棄掉。
而CC攻擊分為兩種。一般針對WEB網站的攻擊叫CC攻擊,但是針對遊戲伺服器的攻擊,很多人一般也叫CC攻擊,兩種都是模擬真實的客戶端與服務端建立連接之後,發送請求。
針對網站的CC如下,一般是建立連接之後,偽造瀏覽器,發起很多httpget的請求,耗盡伺服器的資源。
針對遊戲伺服器的CC,一般是建立連接之後,偽造遊戲的通信報文保持連接不斷開,有些攻擊程序甚至也不看遊戲的正常報文,而是直接偽造一些垃圾報文保持連接。
那麼,遊戲公司如何才能判斷自己是否正在被攻擊?假定可排除線路和硬體故障的情況下,突然發現連接伺服器困難,正在遊戲的用戶掉線等現象,則說明很有可能是遭受了DDoS攻擊。
目前,遊戲行業的IT基礎設施一般有兩種部署模式:一種是採用雲計算或者託管IDC模式,另外一種是自拉網路專線。但基於接入費用的考慮,絕大多數採用前者。
無論是前者還是後者接入,在正常情況下,遊戲用戶都可以自由流暢的進入伺服器並參與娛樂。所以,如果突然出現下面這幾種現象,就可以基本判斷是「被攻擊」狀態:
(1) 主機的IN/OUT流量較平時有顯著的增長;
(2)主機的CPU或者內存利用率出現無預期的暴漲;
(3)通過查看當前主機的連接狀態,發現有很多半開連接,或者是很多外部IP地址,都與本機的服務埠建立幾十個以上的ESTABLISHED狀態的連接,則說明遭到了TCP多連接攻擊;
(4)遊戲客戶端連接遊戲伺服器失敗或者登錄過程非常緩慢;
(5)正在進行遊戲的用戶突然無法操作或者非常緩慢或者總是斷線。
在知道難點,和攻擊狀態的判斷方法之後,來說說我所了解的DDoS防護方法。
目前,可用的DDoS緩解方法,有三大類。首先是架構優化,其次是伺服器加固,最後是商用的DDoS防護服務。
遊戲公司需要根據自己的預算、攻擊嚴重程度,來決定使用哪一種。
在預算有限的情況下,可以從免費的DDoS緩解方案,和自身架構的優化上下功夫,減緩DDoS攻擊的影響。
a. 如果系統部署在雲上,可以使用雲解析,優化DNS的智能解析,同時建議託管多家DNS服務商,這樣可以避免DNS攻擊的風險。
b. 使用SLB,通過負載均衡減緩CC攻擊的影響,後端負載多台ECS伺服器,這樣可以對DDoS攻擊中的CC攻擊進行防護。在企業網站加了負載均衡方案後,不僅有對網站起到CC攻擊防護作用,也能將訪問用戶進行均衡分配到各個web伺服器上,減少單個web伺服器負擔,加快網站訪問速度。
c. 使用專有網路VPC,防止內網攻擊。
d. 做好伺服器的性能測試,評估正常業務環境下能承受的帶寬和請求數,確保可以隨時的彈性擴容。
e. 伺服器防禦DDoS攻擊最根本的措施就是隱藏伺服器真實IP地址。當伺服器對外傳送信息時,就可能會泄露IP,例如,我們常見的使用伺服器發送郵件功能就會泄露伺服器的IP。
因而,我們在發送郵件時,需要通過第三方代理髮送,這樣子顯示出來的IP是代理IP,因而不會泄露真實IP地址。在資金充足的情況下,可以選擇DDoS高防伺服器,且在伺服器前端加CDN中轉,所有的域名和子域都使用CDN來解析。
也可以對自身伺服器做安全加固。a. 控制TCP連接,通過iptable之類的軟體防火牆可以限制某些IP的新建連接;
b. 控制某些IP的速率;
c. 識別遊戲特徵,針對不符合遊戲特徵的連接可以斷開;
d. 控制空連接和假人,針對空連接的IP可以加黑;
e. 學習機制,保護遊戲在線玩家不掉線,通過伺服器可以搜集正常玩家的信息,當面對攻擊的時候可以將正常玩家導入預先準備的伺服器,新進玩家可以暫時放棄;
f. 確保伺服器系統安全;
g. 確保伺服器的系統文件是最新的版本,並及時更新系統補丁;
h. 管理員需對所有主機進行檢查,知道訪問者的來源;
i. 過濾不必要的服務和埠:可以使用工具來過濾不必要的服務和埠(即在路由器上過濾假IP,只開放服務埠)。這也成為目前很多伺服器的流行做法。例如,「WWW」伺服器,只開放80埠,將其他所有埠關閉,或在防火牆上做阻止策略;
j. 限制同時打開的SYN半連接數目,縮短SYN半連接的timeout 時間,限制SYN/ICMP流量;
k. 認真檢查網路設備和主機/伺服器系統的日誌。只要日誌出現漏洞或是時間變更,那這台機器就可能遭到了攻擊;
l. 限制在防火牆外與網路文件共享。這樣會給黑客截取系統文件的機會,若黑客以特洛伊木馬替換它,文件傳輸功能無疑會陷入癱瘓;
m. 充分利用網路設備保護網路資源;
n. 禁用 ICMP。僅在需要測試時開放ICMP。在配置路由器時也考慮下面的策略:流控,包過濾,半連接超時,垃圾包丟棄,來源偽造的數據包丟棄,SYN 閥值,禁用 ICMP 和 UDP 廣播;
o. 使用高可擴展性的 DNS 設備來保護針對 DNS 的 DDoS 攻擊。可以考慮購買DNS商業解決方案,它可以提供針對 DNS 或 TCP/IP3 到7層的 DDoS 攻擊保護。
再就是商用的DDoS解決方案。針對超大流量的攻擊或者複雜的遊戲CC攻擊,可以考慮採用專業的DDoS解決方案。目前,通用的遊戲行業安全解決方案,做法是在IDC機房前端部署防火牆或者流量清洗的一些設備,或者採用大帶寬的高防機房來清洗攻擊。
當寬頻資源充足時,此技術模式的確是防禦遊戲行業DDoS攻擊的有效方式。不過帶寬資源有時也會成為瓶頸:例如單點的IDC很容易被打滿,對遊戲公司本身的成本要求也比較高。
在阿里雲,我們團隊去顛覆帶寬「軍備競賽」的策略,是提供一個可信的訪問網路,這也是遊戲盾誕生的初衷。
遊戲盾風控模式的初衷,是從收到訪問的第一刻起,便判斷它是「好」還是「壞」,從而決定它是不是可以訪問到它想訪問的資源;而當攻擊真的發生時,也可以通過智能流量調度,將所有的業務流量切換到一個正常運作的機房,保證遊戲正常運行。
所以,通過風控理論和SDK接入技術,遊戲盾可以有效地將黑客和正常玩家進行拆分,可以防禦超過300G以上的超大流量攻擊。
風控理論需要用到大量的雲計算資源和網路資源,阿里雲天然的優勢為遊戲盾帶來了很好的土壤,當遊戲盾能調度10萬以上節點進行快速計算和快速調度的時候,那給攻擊者的感覺是這個遊戲已經從他們的攻擊目標裡面消失。
遊戲盾,是阿里雲的人工智慧技術與調度演算法,在安全行業中的成功實踐。
而隨著攻防進程的推進,網路層和接入層逐步壯大,我們希望「遊戲盾」的風控模式,會逐步延展到各個行業中,建立起一張安全、可信的網路。這張網路中,傳輸著乾淨的流量,而攻擊被前置到網路的邊緣處。所有的端,在接入這張網路時,都會經過風險控制的識別,網內的風控系統,也讓壞人無法訪問到他鎖定資源。
未來,以資源為基礎的DDoS防護時代終將被打破,演進出對DDoS真正免疫的風控架構。
而我們所做的,只是一個開始。
推薦閱讀:
※致獨立遊戲人:理想很美好,但現實卻過於殘酷
※上海DA&WEPLAY巴黎GC&PGW,一次穿越時空的雙城記
※遊戲行業的100種死法(六十三)
※遊戲行業的技術美術具體要做些什麼?要掌握什麼技能?
※中國遊戲策划到底有什麼難?我為遊戲策劃伸冤!-LoNe