游戏行业DDoS 6年谈:什么样的架构才可以对DDoS免疫?
在我看來,游戲行業一直是競爭、攻擊最復雜的一個“江湖”。許多游戲公司在發展業務時,對自身的系統、業務安全,存在諸多盲區;對DDoS攻擊究竟是什么,怎么打,也沒有真正了解。
我曾看到充滿激情的創業團隊、一個個玩法很有特色的產品,被這種互聯網攻擊問題扼殺在搖籃里; 也看到過一個運營很好的產品,因為遭受DDoS攻擊,而一蹶不振。
這也是為什么想把自己6年做游戲行業DDoS的經驗,與大家一起分享,幫助在游戲領域內全速前進的企業,了解本行業的安全態勢,并給出一些可用的建議。
在與游戲公司安全團隊接觸的過程中,看到游戲行業對安全有兩個很大的誤區。
兩個誤區
第一個誤區是:沒有直接損失,就代表我很安全。
事實上,相比其它行業,游戲行業的攻擊量和復雜度都要高一籌。 每個游戲公司,每個應用,其實都遭受過攻擊。但許多游戲安全負責人,仍然會“蒙在鼓里聽打雷”,沒有察覺正在發生的攻擊,或者干脆視而不見,由此埋下安全隱患。
第二個誤區是:很多游戲行業安全負責人會認為,只要裝了防火墻,就能擋住絕大部分的攻擊。
然而,防火墻的功能其實很有限。這也從側面說明了許多游戲行業安全薄弱的根源:只去做好一個點,卻看不到整個面。
然而,攻擊者總會從意想不到的薄弱點,攻陷整個游戲行業的內部系統。
?
以DDoS攻擊為例,2016年,全球有記錄的DDoS峰值已近600G,300G以上的DDoS攻擊,在游戲行業內已經毫不稀奇。
為什么游戲會是DDoS攻擊的重災區呢?這里說幾點主要的原因。
首先是因為游戲行業的攻擊成本低廉,是防護成本的1/N,攻防兩端極度不平衡。隨著攻擊方的打法越來越復雜、攻擊點越來越多,基本的靜態防護策略無法達到較好的效果,也就加劇了這種不平衡。
其次,游戲行業生命周期短。一款游戲從出生,到消亡,很多都是半年的時間,如果抗不過一次大的攻擊,很可能就死在半路上。黑客也是瞄中了這一點,認定:只要發起攻擊,游戲公司一定會給“保護費”。
再次,游戲行業對連續性的要求很高,需要7*24在線,因此如果受到DDoS攻擊,游戲業務很容易會造成大量的玩家流失。我曾經見過在被攻擊的2-3天后,游戲公司的玩家數量,從幾萬人掉到幾百人。
最后,游戲公司之間的惡性競爭,也加劇了針對行業的DDoS攻擊。
而針對游戲行業的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模式,另外一種是自拉網絡專線。但基于接入費用的考慮,絕大多數采用前者。
無論是前者還是后者接入,在正常情況下,游戲用戶都可以自由流暢的進入服務器并參與娛樂。所以,如果突然出現下面這幾種現象,就可以基本判斷是“被攻擊”狀態:
?
- 主機的IN/OUT流量較平時有顯著的增長
- 主機的CPU或者內存利用率出現無預期的暴漲
- 通過查看當前主機的連接狀態,發現有很多半開連接,或者是很多外部IP地址,都與本機的服務端口建立幾十個以上的ESTABLISHED狀態的連接,則說明遭到了TCP多連接攻擊
- 游戲客戶端連接游戲服務器失敗或者登錄過程非常緩慢
- 正在進行游戲的用戶突然無法操作或者非常緩慢或者總是斷線
?
在知道難點,和攻擊狀態的判斷方法之后,來說說我所了解的DDoS防護方法。
防護方式
目前,可用的DDoS緩解方法,有三大類。首先是架構優化,其次是服務器加固,最后是商用的DDoS防護服務。
游戲公司需要根據自己的預算、攻擊嚴重程度,來決定使用哪一種。
在預算有限的情況下,可以從免費的DDoS緩解方案,和自身架構的優化上下功夫,減緩DDoS攻擊的影響。
?
- 如果系統部署在云上,可以使用云解析,優化DNS的智能解析,同時建議托管多家DNS服務商,這樣可以避免DNS攻擊的風險。
- 使用SLB,通過負載均衡減緩CC攻擊的影響,后端負載多臺ECS服務器,這樣可以對DDoS攻擊中的CC攻擊進行防護。在企業網站加了負載均衡方案后,不僅有對網站起到CC攻擊防護作用,也能將訪問用戶進行均衡分配到各個web服務器上,減少單個web服務器負擔,加快網站訪問速度。
- 使用專有網絡VPC,防止內網攻擊。
- 做好服務器的性能測試,評估正常業務環境下能承受的帶寬和請求數,確保可以隨時的彈性擴容。
- 服務器防御DDoS攻擊最根本的措施就是隱藏服務器真實IP地址。當服務器對外傳送信息時,就可能會泄露IP,例如,我們常見的使用服務器發送郵件功能就會泄露服務器的IP。
因而,我們在發送郵件時,需要通過第三方代理發送,這樣子顯示出來的IP是代理IP,因而不會泄露真實IP地址。在資金充足的情況下,可以選擇DDoS高防服務器,且在服務器前端加CDN中轉,所有的域名和子域都使用CDN來解析。
?
也可以對自身服務器做安全加固。
安全加固方式
?
- 控制TCP連接,通過iptable之類的軟件防火墻可以限制某些IP的新建連接;
- 控制某些IP的速率;
- 識別游戲特征,針對不符合游戲特征的連接可以斷開;
- 控制空連接和假人,針對空連接的IP可以加黑;
- 學習機制,保護游戲在線玩家不掉線,通過服務器可以搜集正常玩家的信息,當面對攻擊的時候可以將正常玩家導入預先準備的服務器,新進玩家可以暫時放棄;
- 確保服務器系統安全;
- 確保服務器的系統文件是最新的版本,并及時更新系統補丁;
- 管理員需對所有主機進行檢查,知道訪問者的來源;
- 過濾不必要的服務和端口:可以使用工具來過濾不必要的服務和端口(即在路由器上過濾假IP,只開放服務端口)。這也成為目前很多服務器的流行做法。例如,“WWW”服務器,只開放80端口,將其他所有端口關閉,或在防火墻上做阻止策略;
- 限制同時打開的SYN半連接數目,縮短SYN半連接的timeout 時間,限制SYN/ICMP流量;
- 認真檢查網絡設備和主機/服務器系統的日志。只要日志出現漏洞或是時間變更,那這臺機器就可能遭到了攻擊;
- 限制在防火墻外與網絡文件共享。這樣會給黑客截取系統文件的機會,若黑客以特洛伊木馬替換它,文件傳輸功能無疑會陷入癱瘓;
- 充分利用網絡設備保護網絡資源;
- 禁用 ICMP。僅在需要測試時開放ICMP。在配置路由器時也考慮下面的策略:流控,包過濾,半連接超時,垃圾包丟棄,來源偽造的數據包丟棄,SYN 閥值,禁用 ICMP 和 UDP 廣播;
- 使用高可擴展性的 DNS 設備來保護針對 DNS 的 DDoS 攻擊。可以考慮購買DNS商業解決方案,它可以提供針對 DNS 或 TCP/IP3 到7層的 DDoS 攻擊保護。
再就是商用的DDoS解決方案。
商用DDoS解決方案
針對超大流量的攻擊或者復雜的游戲CC攻擊,可以考慮采用專業的DDoS解決方案。目前,通用的游戲行業安全解決方案,做法是在IDC機房前端部署防火墻或者流量清洗的一些設備,或者采用大帶寬的高防機房來清洗攻擊。
當寬帶資源充足時,此技術模式的確是防御游戲行業DDoS攻擊的有效方式。不過帶寬資源有時也會成為瓶頸:例如單點的IDC很容易被打滿,對游戲公司本身的成本要求也比較高。
在阿里云,我們團隊去顛覆帶寬“軍備競賽”的策略,是提供一個可信的訪問網絡,這也是游戲盾誕生的初衷。
游戲盾風控模式的初衷,是從收到訪問的第一刻起,便判斷它是“好”還是“壞”,從而決定它是不是可以訪問到它想訪問的資源;而當攻擊真的發生時,也可以通過智能流量調度,將所有的業務流量切換到一個正常運作的機房,保證游戲正常運行。
?
所以,通過風控理論和SDK接入技術,游戲盾可以有效地將黑客和正常玩家進行拆分,可以防御超過300G以上的超大流量攻擊。
風控理論需要用到大量的云計算資源和網絡資源,阿里云天然的優勢為游戲盾帶來了很好的土壤,當游戲盾能調度10萬以上節點進行快速計算和快速調度的時候,那給攻擊者的感覺是這個游戲已經從他們的攻擊目標里面消失。
游戲盾,是阿里云的人工智能技術與調度算法,在安全行業中的成功實踐。
而隨著攻防進程的推進,網絡層和接入層逐步壯大,我們希望“游戲盾”的風控模式,會逐步延展到各個行業中,建立起一張安全、可信的網絡。這張網絡中,傳輸著干凈的流量,而攻擊被前置到網絡的邊緣處。所有的端,在接入這張網絡時,都會經過風險控制的識別,網內的風控系統,也讓壞人無法訪問到他鎖定資源。
未來,以資源為基礎的DDoS防護時代終將被打破,演進出對DDoS真正免疫的風控架構。
而我們所做的,只是一個開始。
總結
以上是生活随笔為你收集整理的游戏行业DDoS 6年谈:什么样的架构才可以对DDoS免疫?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何做好游戏内实时语音体验
- 下一篇: 虚幻引擎学习之路:粒子系统篇(二)