想象一下有人使用不同的電話號(hào)碼一遍又一遍地打電話給你,而你也無法將他們列入黑名單。最終你可能會(huì)選擇關(guān)閉手機(jī),從而避免騷擾。這個(gè)場(chǎng)景就是常見的分布式拒絕服務(wù)(DDoS)攻擊的樣子。
喬布斯(Steve Jobs)推出第一款iPhone之前,DDoS攻擊就已經(jīng)存在了。它們非常受黑客歡迎,因?yàn)樗鼈兎浅S行В子趩?dòng),并且?guī)缀醪粫?huì)留下痕跡。那么如何防御DDoS攻擊呢?你能否確保對(duì)你的web服務(wù)器和應(yīng)用程序提供高級(jí)別的DDoS攻擊防護(hù)?在本文中,我們將討論如何防止DDoS攻擊,并將介紹一些特定的DDoS保護(hù)和預(yù)防技術(shù)。
DDoS攻擊的類型和方法
分布式拒絕服務(wù)攻擊(簡(jiǎn)稱DDoS)是一種協(xié)同攻擊,旨在使受害者的資源無法使用。它可以由一個(gè)黑客組織協(xié)同行動(dòng),也可以借助連接到互聯(lián)網(wǎng)的多個(gè)受破壞設(shè)備來執(zhí)行。這些在攻擊者控制下的設(shè)備通常稱為僵尸網(wǎng)絡(luò)。
有多種執(zhí)行DDoS攻擊的工具:例如Trinoo,Stacheldraht,Shaft,Knight,Mstream等。這些工具的可用性是DDoS攻擊如此廣泛和流行的原因之一。
DDoS攻擊可以持續(xù)數(shù)百小時(shí)
DDoS攻擊可能持續(xù)幾分鐘、幾小時(shí)、甚至是幾天。卡巴斯基實(shí)驗(yàn)室的一份報(bào)告顯示,近年來時(shí)間最長(zhǎng)的DDoS攻擊之一發(fā)生在2018年1月,它持續(xù)了將近300個(gè)小時(shí)。
發(fā)起DDoS攻擊有兩種常見方法:
· 利用軟件漏洞。黑客可以針對(duì)已知和未知軟件漏洞,并發(fā)送格式錯(cuò)誤的數(shù)據(jù)包,以試圖破壞受害者的系統(tǒng)。
· 消耗計(jì)算或通信資源。黑客可以發(fā)送大量合法的數(shù)據(jù)包,從而消耗受害者的網(wǎng)絡(luò)帶寬、CPU或內(nèi)存,直到目標(biāo)系統(tǒng)無法再處理來自合法用戶的任何請(qǐng)求。
雖然沒有標(biāo)準(zhǔn)的DDoS攻擊分類,但我們可以將其分為四大類:
· 容量耗盡攻擊
· 協(xié)議攻擊
· 應(yīng)用程序攻擊
· 0 day漏洞DDoS攻擊
圖1顯示了DDoS攻擊的最常見分類之一。
圖1. DDoS攻擊的分類
讓我們仔細(xì)研究一下每種類型的攻擊。
容量耗盡攻擊
容量耗盡攻擊(Volumetric attacks)通常借助僵尸網(wǎng)絡(luò)和放大技術(shù),通過向終端資源注入大量流量來阻止對(duì)終端資源的訪問。最常見的容量耗盡攻擊類型有:
· UDP洪水攻擊。黑客發(fā)送用戶數(shù)據(jù)報(bào)協(xié)議(UDP)包偽造受害者的源地址到隨機(jī)端口。主機(jī)生成大量的回復(fù)流量并將其發(fā)送回受害者。
· ICMP洪水攻擊。黑客使用大量的互聯(lián)網(wǎng)控制消息協(xié)議(ICMP)請(qǐng)求或ping命令,試圖耗盡受害者的服務(wù)器帶寬。
Netscout在2018年報(bào)告了迄今為止最大的DDoS攻擊之一:一家美國(guó)服務(wù)提供商的客戶面臨著1.7 Tbps的大規(guī)模反射放大攻擊。
協(xié)議攻擊
根據(jù)Verisign 2018年第1季度DDoS趨勢(shì)報(bào)告,協(xié)議攻擊針對(duì)的是協(xié)議工作方式的漏洞,這是第二大最常見的攻擊媒介。最常見的協(xié)議攻擊類型有:
· SYN洪水攻擊。黑客利用了三向握手TCP機(jī)制的漏洞。客戶端將SYN數(shù)據(jù)包發(fā)送到服務(wù)器,接收SYN-ACK數(shù)據(jù)包,并且永遠(yuǎn)不會(huì)將ACK數(shù)據(jù)包發(fā)送回主機(jī)。因此,受害者的服務(wù)器留下了許多未完成的SYN-ACK請(qǐng)求,并最終導(dǎo)致崩潰。
· 死亡之Ping。攻擊–黑客使用簡(jiǎn)單的Ping命令發(fā)送超大數(shù)據(jù)包,從而導(dǎo)致受害者的系統(tǒng)凍結(jié)或崩潰。
SYN洪水攻擊是2014年用來摧毀在線賭博網(wǎng)站的五種攻擊媒介之一。
應(yīng)用程序攻擊
應(yīng)用程序攻擊利用協(xié)議棧(六),協(xié)議棧(七)中的漏洞,針對(duì)特定的應(yīng)用程序而不是整個(gè)服務(wù)器。它們通常針對(duì)公共端口和服務(wù),如DNS或HTTP。最常見的應(yīng)用程序攻擊有:
· HTTP洪水攻擊。攻擊者用大量的標(biāo)準(zhǔn)GET和POST請(qǐng)求淹沒應(yīng)用程序或web服務(wù)器。由于這些請(qǐng)求通常顯示為合法流量,因此檢測(cè)HTTP洪水攻擊是一個(gè)相當(dāng)大的挑戰(zhàn)。
· Slowloris。正如其名,Slowloris緩慢地使受害者的服務(wù)器崩潰。攻擊者按時(shí)間間隔和一小部分向受害者的服務(wù)器發(fā)送HTTP請(qǐng)求。服務(wù)器一直在等待這些請(qǐng)求完成,但永遠(yuǎn)不會(huì)發(fā)生。最終,這些未完成的請(qǐng)求耗盡了受害者的帶寬,使合法用戶無法訪問服務(wù)器。
在2009年總統(tǒng)大選后,黑客專家利用Slowloris攻擊來關(guān)閉伊朗的政府網(wǎng)站。
0 day漏洞DDoS攻擊
除了眾所周知的攻擊之外,還存在0 day漏洞DDoS攻擊。他們利用尚未修補(bǔ)的未知軟件漏洞或使用不常見的攻擊媒介,因此更加難以檢測(cè)和防御。例如,早在2016年,攻擊者利用輕型目錄訪問協(xié)議(LDAP)發(fā)起了放大系數(shù)高達(dá)55的攻擊。
現(xiàn)在讓我們談?wù)剻z測(cè)DDoS攻擊的方法。
檢測(cè)DDoS攻擊
雖然不可能完全阻止DDoS攻擊的發(fā)生,但有一些有效的做法可以幫助你檢測(cè)和停止正在進(jìn)行的DDoS攻擊。
異常檢測(cè):統(tǒng)計(jì)模型和機(jī)器學(xué)習(xí)算法(例如神經(jīng)網(wǎng)絡(luò),決策樹和近鄰算法)可用于分析網(wǎng)絡(luò)流量并將流量模式分類為正常或DDoS攻擊。你還可以搜索其他網(wǎng)絡(luò)性能因素中的異常,例如設(shè)備CPU利用率或帶寬使用情況。
基于知識(shí)的方法:使用諸如特征碼分析、狀態(tài)轉(zhuǎn)換分析、專家系統(tǒng)、描述腳本和自組織映射等方法,你可以通過將流量與已知攻擊的特定模式進(jìn)行比較來檢測(cè)DDoS。
ACL和防火墻規(guī)則:除了入口/出口流量過濾之外,訪問控制列表(ACL)和防火墻規(guī)則可用于增強(qiáng)流量可見性。特別是,你可以分析ACL日志,以了解通過網(wǎng)絡(luò)運(yùn)行的流量類型。你還可以根據(jù)特定的規(guī)則、簽名和模式配置web應(yīng)用程序防火墻來阻止可疑的傳入流量。
入侵防御和檢測(cè)系統(tǒng)警報(bào):入侵防御系統(tǒng)(IPS)和入侵檢測(cè)系統(tǒng)(IDS)提供了額外的流量可見性。盡管誤報(bào)率很高,但是IPS和IDS警報(bào)可以作為異常和潛在惡意流量的早期指示。
在早期階段檢測(cè)正在進(jìn)行的攻擊可以幫助你減輕其后果。但是,你可以采取適當(dāng)?shù)念A(yù)防措施來防范DDoS攻擊,使攻擊者更難淹沒或破壞你的網(wǎng)絡(luò)。
如何編寫一個(gè)有效的防護(hù)DDoS攻擊的解決方案
無論你是想創(chuàng)建自己的有效防護(hù)DDoS攻擊的解決方案,還是要為Web應(yīng)用程序?qū)ふ疑虡I(yè)化的DDoS攻擊防護(hù)系統(tǒng),都要牢記以下一些基本系統(tǒng)要求:
· 混合DDoS檢測(cè)方法。基于特征碼和基于異常的檢測(cè)方法的組合是檢測(cè)不同類型的DDoS攻擊的關(guān)鍵。
· 防御3–4級(jí)和6–7級(jí)攻擊。如果你的解決方案能夠檢測(cè)并抵御所有三種主要類型的DDoS攻擊:容量攻擊、應(yīng)用攻擊和協(xié)議攻擊,則更可取。
· 有效的流量過濾。DDoS保護(hù)的最大挑戰(zhàn)之一是區(qū)分惡意請(qǐng)求與合法請(qǐng)求。很難創(chuàng)建有效的過濾規(guī)則,因?yàn)樯婕癉DoS攻擊的大多數(shù)請(qǐng)求看起來都好像是來自合法用戶。諸如速率限制之類的流行方法通常會(huì)產(chǎn)生很多誤報(bào),導(dǎo)致阻止合法用戶訪問你的服務(wù)和應(yīng)用程序。
· SIEM集成。將防DDoS解決方案與SIEM系統(tǒng)良好結(jié)合非常重要,這樣你就可以收集有關(guān)攻擊的信息,對(duì)其進(jìn)行分析,并使用它來改善DDoS的保護(hù)并防止以后發(fā)生攻擊。
如果滿足這些要求對(duì)你來說太難了,那么考慮向?qū)<覍で髱椭?。你需要一支?jīng)驗(yàn)豐富的開發(fā)團(tuán)隊(duì),他們對(duì)網(wǎng)絡(luò)安全、云服務(wù)和web應(yīng)用程序有深入的了解,才能構(gòu)建高質(zhì)量的DDoS防御解決方案。像這樣的團(tuán)隊(duì)很難在內(nèi)部組織起來,但你可以隨時(shí)尋求第三方團(tuán)隊(duì)的幫助。
防止DDoS攻擊
即使你無法阻止DDoS攻擊的發(fā)生,但你有能力讓攻擊者更難關(guān)閉你的網(wǎng)站或應(yīng)用程序。這就是DDoS預(yù)防技術(shù)關(guān)鍵的地方。你可以使用兩種DDoS預(yù)防機(jī)制:常規(guī)預(yù)防措施和過濾技術(shù)。
常規(guī)的DDoS防護(hù)機(jī)制是比較常見的措施,可以幫助你使Web應(yīng)用程序或服務(wù)器對(duì)DDoS攻擊更具彈性。這些措施包括:
· 使用防火墻。雖然防火墻不能保護(hù)你的應(yīng)用程序或服務(wù)器免受復(fù)雜的DDoS攻擊,但它們?nèi)匀豢梢杂行У靥幚砗?jiǎn)單的攻擊。
· 安裝最新的安全補(bǔ)丁。大多數(shù)攻擊針對(duì)特定的軟件或硬件漏洞,因此及時(shí)部署所有補(bǔ)丁可以幫助你降低攻擊風(fēng)險(xiǎn)。
· 禁用未使用的服務(wù)。黑客攻擊的應(yīng)用程序和服務(wù)越少越好。確保禁用所有不需要和未使用的服務(wù)和應(yīng)用程序,以提高網(wǎng)絡(luò)的安全性。
過濾機(jī)制使用不同的方法來過濾流量并阻止?jié)撛诘奈kU(xiǎn)請(qǐng)求。這些機(jī)制包括入口/出口過濾,基于歷史的IP過濾和基于路由器的數(shù)據(jù)包過濾。
保護(hù)Web應(yīng)用程序免受DDoS攻擊的最佳做法
除了特定的DDoS防范機(jī)制,還有幾種做法可以幫你的web應(yīng)用程序提供額外的DDoS保護(hù):
· 限制漏洞數(shù)量。除非迫不得已,否則不要公開你的應(yīng)用程序和資源。這樣,你可以限制攻擊者可能針對(duì)的基礎(chǔ)架構(gòu)中的漏洞數(shù)量。你還可以禁止將互聯(lián)網(wǎng)流量直接發(fā)送到數(shù)據(jù)庫(kù)服務(wù)器和基礎(chǔ)結(jié)構(gòu)的其他關(guān)鍵部分。
· 擴(kuò)展負(fù)載??紤]使用負(fù)載平衡器和內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN),通過平衡資源負(fù)載來減輕攻擊的影響,這樣即使在攻擊期間也可以保持在線。
· 仔細(xì)選擇你的云提供商。尋找一個(gè)值得信賴的云服務(wù)提供商,并提供自己的DDoS緩解策略。確保他們的策略可檢測(cè)和緩解基于協(xié)議,基于卷和應(yīng)用程序級(jí)別的攻擊。例如,一些云提供商使用anycasting網(wǎng)絡(luò)在具有相同IP地址的多臺(tái)機(jī)器之間劃分大量請(qǐng)求。
使用第三方DDoS緩解服務(wù)?–考慮將web應(yīng)用程序的保護(hù)委托給第三方供應(yīng)商。DDoS緩解服務(wù)甚至可以在問題流量到達(dá)受害者網(wǎng)絡(luò)之前將其清除。你可以從基于DNS的網(wǎng)關(guān)服務(wù)或基于協(xié)議的解決方案中查找有問題的邊界攻擊。
結(jié)論
黑客不斷使用和改進(jìn)DDoS攻擊來破壞特定服務(wù)、大小型企業(yè)甚至公共和非營(yíng)利組織的工作。這些攻擊的主要目的是耗盡受害者的資源,從而使他們的服務(wù)、應(yīng)用程序或網(wǎng)站崩潰。
雖然無法完全阻止DDoS攻擊的發(fā)生,但有一些有效的DDoS攻擊保護(hù)技術(shù)和方法可用于增強(qiáng)基礎(chǔ)設(shè)施抵御DDoS攻擊并減輕其后果。