毫無疑問,穩(wěn)定和安全是機(jī)構(gòu)采用云服務(wù)時最擔(dān)心的問題,基于互聯(lián)網(wǎng)的云計(jì)算模式也確實(shí)讓攻擊者有了更多的可乘之機(jī)。然而不幸的是,從 Arbor Networks得知,在2013年,NTP攻擊得到了長足的發(fā)展,DDoS攻擊已步入200-400Gbps時代。
需要注意的是,如此規(guī)模DDoS攻擊不只限于歐美國家――近日,在第六屆中國云計(jì)算大會召開前夕,筆者有幸聯(lián)系到阿里巴巴集團(tuán)安全部高級專家云舒,就國內(nèi)DDoS攻擊發(fā)展趨勢、規(guī)模及阿里云安全團(tuán)隊(duì)進(jìn)行了簡單的了解:
阿里云DDoS防御相關(guān)人員
CSDN:可否透露下阿里云近階段遭受的DDoS攻擊規(guī)模?
云舒:平均每月遭受數(shù)千起DDoS攻擊。
CSDN:據(jù)悉,阿里云在春節(jié)期間曾遭受到流量很大的DDoS攻擊,可否為我們簡述一下當(dāng)時的戰(zhàn)況?
云舒:春節(jié)期間我們的OSS(Open Storage Service)遭受190Gbit/s的DDoS攻擊。攻擊者開始使用1000字節(jié)的SYN包進(jìn)行攻擊,試圖在消耗CPU資源的同時堵塞網(wǎng)絡(luò)入口。我們的云盾系統(tǒng)在無人介入的情況下自動開啟防御,并發(fā)送短信報(bào)警通知。
因?yàn)楣粜Ч幻黠@,7分鐘之后攻擊者更換攻擊手法,使用CC攻擊。約10分鐘后,攻擊者再次更換攻擊手法,使用SYN小包進(jìn)行攻擊,速率達(dá)到2000萬包/秒,試圖使交換機(jī)的交換能力達(dá)到瓶頸。整個過程持續(xù)30多分鐘,攻擊者沒有達(dá)到效果,擔(dān)心暴露而選擇了主動撤退。
CSDN:外媒有報(bào)道DDoS進(jìn)入 400Gbps時代,國內(nèi)現(xiàn)在多部分是什么情況?
云舒:國內(nèi)攻擊者對新的攻擊方式跟進(jìn)非常及時。一般的,在國外出現(xiàn)新的攻擊方式之后,大概3天左右我們的云平臺就會出現(xiàn)同樣的手法。目前DNS反射放大攻擊和NTP反射放大攻擊頗為流行。我們也遭受過海量的攻擊,超過春節(jié)的190GBit/s,但是具體數(shù)字不便透露。
CSDN:現(xiàn)在最普遍的DDoS攻擊類型是什么?近幾年有什么轉(zhuǎn)變?
云舒:最經(jīng)典的攻擊手法SYN Flood依舊占據(jù)大頭;CC攻擊有后來居上的趨勢,因?yàn)榘l(fā)起容易,效果顯著;UDP攻擊屈居第三名,但卻是流量攻擊的首選,各種反射放大攻擊都屬于UDP攻擊。
CSDN:國內(nèi)DDoS防御水平現(xiàn)處于一個什么樣的情況?
云舒:國內(nèi)的DDoS防御能力,在算法細(xì)節(jié)上與國外相比技術(shù)相當(dāng)。但是在網(wǎng)絡(luò)上的調(diào)度能力,如使用諸如SDN、anycast、flowspec之類的技術(shù),國內(nèi)還比較落后,沒有得到大規(guī)模的應(yīng)用。
CSDN:可以為我們介紹一下阿里云的安全團(tuán)隊(duì)嗎?
云舒:我們安全團(tuán)隊(duì)大部分都是非科班出身,在網(wǎng)絡(luò)安全圈子闖蕩多年,從黑客成長為安全防御的專家。不知攻,焉知防?
在保證服務(wù)平穩(wěn)運(yùn)行的同時,還能輕松應(yīng)對每月數(shù)千起DDoS攻擊,阿里云的安全技術(shù)確實(shí)值得稱贊。那么,如此規(guī)模的DDoS攻擊開發(fā)者究竟該如何應(yīng)對,以維持服務(wù)的完整運(yùn)行,并切實(shí)的保證用戶數(shù)據(jù)安全,這里我們不妨看一下阿里云技術(shù)Blog上的一系列DDoS攻防分享。
以下為博文原文:
DDoS(Distributed Denial of Service,分布式拒絕服務(wù))攻擊的主要目的是讓指定目標(biāo)無法提供正常服務(wù),甚至從互聯(lián)網(wǎng)上消失,是目前最強(qiáng)大、最難防御的攻擊之一。
按照發(fā)起的方式,DDoS可以簡單分為三類。
第一類以力取勝,海量數(shù)據(jù)包從互聯(lián)網(wǎng)的各個角落蜂擁而來,堵塞IDC入口,讓各種強(qiáng)大的硬件防御系統(tǒng)、快速高效的應(yīng)急流程無用武之地。這種類型的攻擊典型代表是ICMP Flood和UDP Flood,現(xiàn)在已不常見。
第二類以巧取勝,靈動而難以察覺,每隔幾分鐘發(fā)一個包甚至只需要一個包,就可以讓豪華配置的服務(wù)器不再響應(yīng)。這類攻擊主要是利用協(xié)議或者軟件的漏洞發(fā)起,例如Slowloris攻擊、Hash沖突攻擊等,需要特定環(huán)境機(jī)緣巧合下才能出現(xiàn)。
第三類是上述兩種的混合,輕靈渾厚兼而有之,既利用了協(xié)議、系統(tǒng)的缺陷,又具備了海量的流量,例如SYN Flood攻擊、DNS Query Flood攻擊,是當(dāng)前的主流攻擊方式。
本文將一一描述這些最常見、最具代表性攻擊方式,并介紹它們的防御方案。
SYN Flood是互聯(lián)網(wǎng)上最經(jīng)典的DDoS攻擊方式之一,最早出現(xiàn)于1999年左右,雅虎是當(dāng)時最著名的受害者。SYN Flood攻擊利用了TCP三次握手的缺陷,能夠以較小代價使目標(biāo)服務(wù)器無法響應(yīng),且難以追查。
標(biāo)準(zhǔn)的TCP三次握手過程如下:
經(jīng)過這三步,TCP連接就建立完成。TCP協(xié)議為了實(shí)現(xiàn)可靠傳輸,在三次握手的過程中設(shè)置了一些異常處理機(jī)制。第三步中如果服務(wù)器沒有收到客戶端的最終ACK確認(rèn)報(bào)文,會一直處于SYN_RECV狀態(tài),將客戶端IP加入等待列表,并重發(fā)第二步的SYN+ACK報(bào)文。重發(fā)一般進(jìn)行3-5次,大約間隔30秒左右輪詢一次等待列表重試所有客戶端。另一方面,服務(wù)器在自己發(fā)出了SYN+ACK報(bào)文后,會預(yù)分配資源為即將建立的TCP連接儲存信息做準(zhǔn)備,這個資源在等待重試期間一直保留。更為重要的是,服務(wù)器資源有限,可以維護(hù)的SYN_RECV狀態(tài)超過極限后就不再接受新的SYN報(bào)文,也就是拒絕新的TCP連接建立。
SYN Flood正是利用了上文中TCP協(xié)議的設(shè)定,達(dá)到攻擊的目的。攻擊者偽裝大量的IP地址給服務(wù)器發(fā)送SYN報(bào)文,由于偽造的IP地址幾乎不可能存在,也就幾乎沒有設(shè)備會給服務(wù)器返回任何應(yīng)答了。因此,服務(wù)器將會維持一個龐大的等待列表,不停地重試發(fā)送SYN+ACK報(bào)文,同時占用著大量的資源無法釋放。更為關(guān)鍵的是,被攻擊服務(wù)器的SYN_RECV隊(duì)列被惡意的數(shù)據(jù)包占滿,不再接受新的SYN請求,合法用戶無法完成三次握手建立起TCP連接。也就是說,這個服務(wù)器被SYN Flood拒絕服務(wù)了。
對SYN Flood有興趣的可以看看http://www.icylife.net/yunshu/show.php?id=367,這是我2006年寫的代碼,后來做過幾次修改,修改了Bug,并降低了攻擊性,純做測試使用。
作為互聯(lián)網(wǎng)最基礎(chǔ)、最核心的服務(wù),DNS自然也是DDoS攻擊的重要目標(biāo)之一。打垮DNS服務(wù)能夠間接打垮一家公司的全部業(yè)務(wù),或者打垮一個地區(qū)的網(wǎng)絡(luò)服務(wù)。前些時候風(fēng)頭正盛的黑客組織anonymous也曾經(jīng)宣布要攻擊全球互聯(lián)網(wǎng)的13臺根DNS服務(wù)器,不過最終沒有得手。
UDP攻擊是最容易發(fā)起海量流量的攻擊手段,而且源IP隨機(jī)偽造難以追查。但過濾比較容易,因?yàn)榇蠖鄶?shù)IP并不提供UDP服務(wù),直接丟棄UDP流量即可。所以現(xiàn)在純粹的UDP流量攻擊比較少見了,取而代之的是UDP協(xié)議承載的DNS Query Flood攻擊。簡單地說,越上層協(xié)議上發(fā)動的DDoS攻擊越難以防御,因?yàn)閰f(xié)議越上層,與業(yè)務(wù)關(guān)聯(lián)越大,防御系統(tǒng)面臨的情況越復(fù)雜。
DNS Query Flood就是攻擊者操縱大量傀儡機(jī)器,對目標(biāo)發(fā)起海量的域名查詢請求。為了防止基于ACL的過濾,必須提高數(shù)據(jù)包的隨機(jī)性。常用的做法是UDP層隨機(jī)偽造源IP地址、隨機(jī)偽造源端口等參數(shù)。在DNS協(xié)議層,隨機(jī)偽造查詢ID以及待解析域名。隨機(jī)偽造待解析域名除了防止過濾外,還可以降低命中DNS緩存的可能性,盡可能多地消耗DNS服務(wù)器的CPU資源。
關(guān)于DNS Query Flood的代碼,我在2011年7月為了測試服務(wù)器性能曾經(jīng)寫過一份代碼,鏈接是http://www.icylife.net/yunshu/show.php?id=832。同樣的,這份代碼人為降低了攻擊性,只做測試用途。
上文描述的SYN Flood、DNS Query Flood在現(xiàn)階段已經(jīng)能做到有效防御了,真正令各大廠商以及互聯(lián)網(wǎng)企業(yè)頭疼的是HTTP Flood攻擊。HTTP Flood是針對Web服務(wù)在第七層協(xié)議發(fā)起的攻擊。它的巨大危害性主要表現(xiàn)在三個方面:發(fā)起方便、過濾困難、影響深遠(yuǎn)。
SYN Flood和DNS Query Flood都需要攻擊者以root權(quán)限控制大批量的傀儡機(jī)。收集大量root權(quán)限的傀儡機(jī)很花費(fèi)時間和精力,而且在攻擊過程中傀儡機(jī)會由于流量異常被管理員發(fā)現(xiàn),攻擊者的資源快速損耗而補(bǔ)充緩慢,導(dǎo)致攻擊強(qiáng)度明顯降低而且不可長期持續(xù)。HTTP Flood攻擊則不同,攻擊者并不需要控制大批的傀儡機(jī),取而代之的是通過端口掃描程序在互聯(lián)網(wǎng)上尋找匿名的HTTP代理或者SOCKS代理,攻擊者通過匿名代理對攻擊目標(biāo)發(fā)起HTTP請求。匿名代理是一種比較豐富的資源,花幾天時間獲取代理并不是難事,因此攻擊容易發(fā)起而且可以長期高強(qiáng)度的持續(xù)。
另一方面,HTTP Flood攻擊在HTTP層發(fā)起,極力模仿正常用戶的網(wǎng)頁請求行為,與網(wǎng)站業(yè)務(wù)緊密相關(guān),安全廠商很難提供一套通用的且不影響用戶體驗(yàn)的方案。在一個地方工作得很好的規(guī)則,換一個場景可能帶來大量的誤殺。
最后,HTTP Flood攻擊會引起嚴(yán)重的連鎖反應(yīng),不僅僅是直接導(dǎo)致被攻擊的Web前端響應(yīng)緩慢,還間接攻擊到后端的Java等業(yè)務(wù)層邏輯以及更后端的數(shù)據(jù)庫服務(wù),增大它們的壓力,甚至對日志存儲服務(wù)器都帶來影響。
有意思的是,HTTP Flood還有個頗有歷史淵源的昵稱叫做CC攻擊。CC是Challenge Collapsar的縮寫,而Collapsar是國內(nèi)一家著名安全公司的DDoS防御設(shè)備。從目前的情況來看,不僅僅是Collapsar,所有的硬件防御設(shè)備都還在被挑戰(zhàn)著,風(fēng)險并未解除。
提起攻擊,第一反應(yīng)就是海量的流量、海量的報(bào)文。但有一種攻擊卻反其道而行之,以慢著稱,以至于有些攻擊目標(biāo)被打死了都不知道是怎么死的,這就是慢速連接攻擊,最具代表性的是rsnake發(fā)明的Slowloris。
HTTP協(xié)議規(guī)定,HTTP Request以 結(jié)尾表示客戶端發(fā)送結(jié)束,服務(wù)端開始處理。那么,如果永遠(yuǎn)不發(fā)送 會如何?Slowloris就是利用這一點(diǎn)來做DDoS攻擊的。攻擊者在HTTP請求頭中將Connection設(shè)置為Keep-Alive,要求Web Server保持TCP連接不要斷開,隨后緩慢地每隔幾分鐘發(fā)送一個key-value格式的數(shù)據(jù)到服務(wù)端,如a:b ,導(dǎo)致服務(wù)端認(rèn)為HTTP頭部沒有接收完成而一直等待。如果攻擊者使用多線程或者傀儡機(jī)來做同樣的操作,服務(wù)器的Web容器很快就被攻擊者占滿了TCP連接而不再接受新的請求。
很快的,Slowloris開始出現(xiàn)各種變種。比如POST方法向Web Server提交數(shù)據(jù)、填充一大大Content-Length但緩慢的一個字節(jié)一個字節(jié)的POST真正數(shù)據(jù)內(nèi)容等等。關(guān)于Slowloris攻擊,rsnake也給出了一個測試代碼,參見http://ha.ckers.org/slowloris/slowloris.pl。
以上介紹了幾種基礎(chǔ)的攻擊手段,其中任意一種都可以用來攻擊網(wǎng)絡(luò),甚至擊垮阿里、百度、騰訊這種巨型網(wǎng)站。但這些并不是全部,不同層次的攻擊者能夠發(fā)起完全不同的DDoS攻擊,運(yùn)用之妙,存乎一心。
高級攻擊者從來不會使用單一的手段進(jìn)行攻擊,而是根據(jù)目標(biāo)環(huán)境靈活組合。普通的SYN Flood容易被流量清洗設(shè)備通過反向探測、SYN Cookie等技術(shù)手段過濾掉,但如果在SYN Flood中混入SYN+ACK數(shù)據(jù)包,使每一個偽造的SYN數(shù)據(jù)包都有一個與之對應(yīng)的偽造的客戶端確認(rèn)報(bào)文,這里的對應(yīng)是指源IP地址、源端口、目的IP、目的端口、TCP窗口大小、TTL等都符合同一個主機(jī)同一個TCP Flow的特征,流量清洗設(shè)備的反向探測和SYN Cookie性能壓力將會顯著增大。其實(shí)SYN數(shù)據(jù)報(bào)文配合其他各種標(biāo)志位,都有特殊的攻擊效果,這里不一一介紹。對DNS Query Flood而言,也有獨(dú)特的技巧。
首先,DNS可以分為普通DNS和授權(quán)域DNS,攻擊普通DNS,IP地址需要隨機(jī)偽造,并且指明服務(wù)器要求做遞歸解析;但攻擊授權(quán)域DNS,偽造的源IP地址則不應(yīng)該是純隨機(jī)的,而應(yīng)該是事先收集的全球各地ISP的DNS地址,這樣才能達(dá)到最大攻擊效果,使流量清洗設(shè)備處于添加IP黑名單還是不添加IP黑名單的尷尬處境。添加會導(dǎo)致大量誤殺,不添加黑名單則每個報(bào)文都需要反向探測從而加大性能壓力。
另一方面,前面提到,為了加大清洗設(shè)備的壓力不命中緩存而需要隨機(jī)化請求的域名,但需要注意的是,待解析域名必須在偽造中帶有一定的規(guī)律性,比如說只偽造域名的某一部分而固化一部分,用來突破清洗設(shè)備設(shè)置的白名單。道理很簡單,騰訊的服務(wù)器可以只解析騰訊的域名,完全隨機(jī)的域名可能會直接被丟棄,需要固化。但如果完全固定,也很容易直接被丟棄,因此又需要偽造一部分。
其次,對DNS的攻擊不應(yīng)該只著重于UDP端口,根據(jù)DNS協(xié)議,TCP端口也是標(biāo)準(zhǔn)服務(wù)。在攻擊時,可以UDP和TCP攻擊同時進(jìn)行。
HTTP Flood的著重點(diǎn),在于突破前端的cache,通過HTTP頭中的字段設(shè)置直接到達(dá)Web Server本身。另外,HTTP Flood對目標(biāo)的選取也非常關(guān)鍵,一般的攻擊者會選擇搜索之類需要做大量數(shù)據(jù)查詢的頁面作為攻擊目標(biāo),這是非常正確的,可以消耗服務(wù)器盡可能多的資源。但這種攻擊容易被清洗設(shè)備通過人機(jī)識別的方式識別出來,那么如何解決這個問題?很簡單,盡量選擇正常用戶也通過APP訪問的頁面,一般來說就是各種Web API。正常用戶和惡意流量都是來源于APP,人機(jī)差別很小,基本融為一體難以區(qū)分。
之類的慢速攻擊,是通過巧妙的手段占住連接不釋放達(dá)到攻擊的目的,但這也是雙刃劍,每一個TCP連接既存在于服務(wù)端也存在于自身,自身也需要消耗資源維持TCP狀態(tài),因此連接不能保持太多。如果可以解決這一點(diǎn),攻擊性會得到極大增強(qiáng),也就是說Slowloris可以通過stateless的方式發(fā)動攻擊,在客戶端通過嗅探捕獲TCP的序列號和確認(rèn)維護(hù)TCP連接,系統(tǒng)內(nèi)核無需關(guān)注TCP的各種狀態(tài)變遷,一臺筆記本即可產(chǎn)生多達(dá)65535個TCP連接。
前面描述的,都是技術(shù)層面的攻擊增強(qiáng)。在人的方面,還可以有一些別的手段。如果SYN Flood發(fā)出大量數(shù)據(jù)包正面強(qiáng)攻,再輔之以Slowloris慢速連接,多少人能夠發(fā)現(xiàn)其中的秘密?即使服務(wù)器宕機(jī)了也許還只發(fā)現(xiàn)了SYN攻擊想去加強(qiáng)TCP層清洗而忽視了應(yīng)用層的行為。種種攻擊都可以互相配合,達(dá)到最大的效果。攻擊時間的選擇,也是一大關(guān)鍵,比如說選擇維護(hù)人員吃午飯時、維護(hù)人員下班堵在路上或者在地鐵里無線上網(wǎng)卡都沒有信號時、目標(biāo)企業(yè)在舉行大規(guī)模活動流量飆升時等。
這里描述的只是純粹的攻擊行為,因此不提供代碼,也不做深入介紹。
前面的攻擊方式,多多少少都需要一些傀儡機(jī),即使是HTTP Flood也需要搜索大量的匿名代理。如果有一種攻擊,只需要發(fā)出一些指令,就有機(jī)器自動上來執(zhí)行,才是完美的方案。這種攻擊已經(jīng)出現(xiàn)了,那就是來自P2P網(wǎng)絡(luò)的攻擊。
大家都知道,互聯(lián)網(wǎng)上的P2P用戶和流量都是一個極為龐大的數(shù)字。如果他們都去一個指定的地方下載數(shù)據(jù),使成千上萬的真實(shí)IP地址連接過來,沒有哪個設(shè)備能夠支撐住。拿BT下載來說,偽造一些熱門視頻的種子,發(fā)布到搜索引擎,就足以騙到許多用戶和流量了,但這只是基礎(chǔ)攻擊。
高級P2P攻擊,是直接欺騙資源管理服務(wù)器。如迅雷客戶端會把自己發(fā)現(xiàn)的資源上傳到資源管理服務(wù)器,然后推送給其他需要下載相同資源的用戶,這樣,一個鏈接就發(fā)布出去。通過協(xié)議逆向,攻擊者偽造出大批量的熱門資源信息通過資源管理中心分發(fā)出去,瞬間就可以傳遍整個P2P網(wǎng)絡(luò)。更為恐怖的是,這種攻擊是無法停止的,即使是攻擊者自身也無法停止,攻擊一直持續(xù)到P2P官方發(fā)現(xiàn)問題更新服務(wù)器且下載用戶重啟下載軟件時為止。
限于篇幅,DDoS攻擊的介紹就寫這么多,而且我也不愿意對這個做更進(jìn)一步的闡述了――理解防御這么多已經(jīng)夠用了。
總的來說,DDoS攻擊可以很靈巧,可以很優(yōu)美。運(yùn)用之妙,存乎一心。
PS:防御篇請?jiān)L問下一頁
以“ 云計(jì)算大數(shù)據(jù) 推動智慧中國 ”為主題的 第六屆中國云計(jì)算大會 將于5月20-23日在北京國家會議中心隆重舉辦。產(chǎn)業(yè)觀察、技術(shù)培訓(xùn)、主題論壇、行業(yè)研討,內(nèi)容豐富,干貨十足。票價折扣截止日期為4月20日,過后將恢復(fù)原價,需要購買的朋友,請抓住這最后的機(jī)會,點(diǎn)擊報(bào)名!
1. 防御基礎(chǔ)
1.1. 攻擊流量到底多大
談到DDoS防御,首先就是要知道到底遭受了多大的攻擊。這個問題看似簡單,實(shí)際上卻有很多不為人知的細(xì)節(jié)在里面。
以SYN Flood為例,為了提高發(fā)送效率在服務(wù)端產(chǎn)生更多的SYN等待隊(duì)列,攻擊程序在填充包頭時,IP首部和TCP首部都不填充可選的字段,因此IP首部長度恰好是20字節(jié),TCP首部也是20字節(jié),共40字節(jié)。
對于以太網(wǎng)來說,最小的包長度數(shù)據(jù)段必須達(dá)到46字節(jié),而攻擊報(bào)文只有40字節(jié),因此,網(wǎng)卡在發(fā)送時,會做一些處理,在TCP首部的末尾,填充6個0來滿足最小包的長度要求。這個時候,整個數(shù)據(jù)包的長度為14字節(jié)的以太網(wǎng)頭,20字節(jié)的IP頭,20字節(jié)的TCP頭,再加上因?yàn)樽钚“L度要求而填充的6個字節(jié)的0,一共是60字節(jié)。
但這還沒有結(jié)束。以太網(wǎng)在傳輸數(shù)據(jù)時,還有CRC檢驗(yàn)的要求。網(wǎng)卡會在發(fā)送數(shù)據(jù)之前對數(shù)據(jù)包進(jìn)行CRC檢驗(yàn),將4字節(jié)的CRC值附加到包頭的最后面。這個時候,數(shù)據(jù)包長度已不再是60字節(jié),而是變成64字節(jié)了,這就是常說的SYN小包攻擊,數(shù)據(jù)包結(jié)構(gòu)如下:
|14字節(jié)以太網(wǎng)頭部|20字節(jié)IP頭部|20字節(jié)TCP|6字節(jié)填充|4字節(jié)檢驗(yàn)||目的MAC|源MAC|協(xié)議類型| IP頭 |TCP頭|以太網(wǎng)填充 | CRC檢驗(yàn) | |
到64字節(jié)時,SYN數(shù)據(jù)包已經(jīng)填充完成,準(zhǔn)備開始傳輸了。攻擊數(shù)據(jù)包很小,遠(yuǎn)遠(yuǎn)不夠最大傳輸單元(MTU)的1500字節(jié),因此不會被分片。那么這些數(shù)據(jù)包就像生產(chǎn)流水線上的罐頭一樣,一個包連著一個包緊密地?cái)D在一起傳輸嗎?事實(shí)上不是這樣的。
以太網(wǎng)在傳輸時,還有前導(dǎo)碼(preamble)和幀間距(inter-frame gap)。其中前導(dǎo)碼占8字節(jié)(byte),即64比特位。前導(dǎo)碼前面的7字節(jié)都是10101010,1和0間隔而成。但第八個字節(jié)就變成了10101011,當(dāng)主機(jī)監(jiān)測到連續(xù)的兩個1時,就知道后面開始是數(shù)據(jù)了。在網(wǎng)絡(luò)傳輸時,數(shù)據(jù)的結(jié)構(gòu)如下:
|8字節(jié)前導(dǎo)碼|6字節(jié)目的MAC地址|6字節(jié)源MAC地址|2字節(jié)上層協(xié)議類型|20字節(jié)IP頭|20字節(jié)TCP頭|6字節(jié)以太網(wǎng)填充|4字節(jié)CRC檢驗(yàn)|12字節(jié)幀間距| |
有了上面的基礎(chǔ),現(xiàn)在可以開始計(jì)算攻擊流量和網(wǎng)絡(luò)設(shè)備的線速問題了。當(dāng)只填充IP頭和TCP頭的最小SYN包跑在以太網(wǎng)絡(luò)上時,100Mbit的網(wǎng)絡(luò),能支持的最大PPS(Packet Per Second)是100×106 / (8 * (64+8+12)) = 148809,1000Mbit的網(wǎng)絡(luò),能支持的最大PPS是1488090。
1.2. SYN Flood防御
前文描述過,SYN Flood攻擊大量消耗服務(wù)器的CPU、內(nèi)存資源,并占滿SYN等待隊(duì)列。相應(yīng)的,我們修改內(nèi)核參數(shù)即可有效緩解。主要參數(shù)如下:
net.ipv4.tcp_syncookies = 1net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2 |
分別為啟用SYN Cookie、設(shè)置SYN最大隊(duì)列長度以及設(shè)置SYN+ACK最大重試次數(shù)。
SYN Cookie的作用是緩解服務(wù)器資源壓力。啟用之前,服務(wù)器在接到SYN數(shù)據(jù)包后,立即分配存儲空間,并隨機(jī)化一個數(shù)字作為SYN號發(fā)送SYN+ACK數(shù)據(jù)包。然后保存連接的狀態(tài)信息等待客戶端確認(rèn)。啟用SYN Cookie之后,服務(wù)器不再分配存儲空間,而且通過基于時間種子的隨機(jī)數(shù)算法設(shè)置一個SYN號,替代完全隨機(jī)的SYN號。發(fā)送完SYN+ACK確認(rèn)報(bào)文之后,清空資源不保存任何狀態(tài)信息。直到服務(wù)器接到客戶端的最終ACK包,通過Cookie檢驗(yàn)算法鑒定是否與發(fā)出去的SYN+ACK報(bào)文序列號匹配,匹配則通過完成握手,失敗則丟棄。當(dāng)然,前文的高級攻擊中有SYN混合ACK的攻擊方法,則是對此種防御方法的反擊,其中優(yōu)劣由雙方的硬件配置決定
tcp_max_syn_backlog則是使用服務(wù)器的內(nèi)存資源,換取更大的等待隊(duì)列長度,讓攻擊數(shù)據(jù)包不至于占滿所有連接而導(dǎo)致正常用戶無法完成握手。net.ipv4.tcp_synack_retries是降低服務(wù)器SYN+ACK報(bào)文重試次數(shù),盡快釋放等待資源。這三種措施與攻擊的三種危害一一對應(yīng),完完全全地對癥下藥。但這些措施也是雙刃劍,可能消耗服務(wù)器更多的內(nèi)存資源,甚至影響正常用戶建立TCP連接,需要評估服務(wù)器硬件資源和攻擊大小謹(jǐn)慎設(shè)置。
除了定制TCP/IP協(xié)議棧之外,還有一種常見做法是TCP首包丟棄方案,利用TCP協(xié)議的重傳機(jī)制識別正常用戶和攻擊報(bào)文。當(dāng)防御設(shè)備接到一個IP地址的SYN報(bào)文后,簡單比對該IP是否存在于白名單中,存在則轉(zhuǎn)發(fā)到后端。如不存在于白名單中,檢查是否是該IP在一定時間段內(nèi)的首次SYN報(bào)文,不是則檢查是否重傳報(bào)文,是重傳則轉(zhuǎn)發(fā)并加入白名單,不是則丟棄并加入黑名單。是首次SYN報(bào)文則丟棄并等待一段時間以試圖接受該IP的SYN重傳報(bào)文,等待超時則判定為攻擊報(bào)文加入黑名單。
首包丟棄方案對用戶體驗(yàn)會略有影響,因?yàn)閬G棄首包重傳會增大業(yè)務(wù)的響應(yīng)時間,有鑒于此發(fā)展出了一種更優(yōu)的TCP Proxy方案。所有的SYN數(shù)據(jù)報(bào)文由清洗設(shè)備接受,按照SYN Cookie方案處理。和設(shè)備成功建立了TCP三次握手的IP地址被判定為合法用戶加入白名單,由設(shè)備偽裝真實(shí)客戶端IP地址再與真實(shí)服務(wù)器完成三次握手,隨后轉(zhuǎn)發(fā)數(shù)據(jù)。而指定時間內(nèi)沒有和設(shè)備完成三次握手的IP地址,被判定為惡意IP地址屏蔽一定時間。除了SYN Cookie結(jié)合TCP Proxy外,清洗設(shè)備還具備多種畸形TCP標(biāo)志位數(shù)據(jù)包探測的能力,通過對SYN報(bào)文返回非預(yù)期應(yīng)答測試客戶端反應(yīng)的方式來鑒別正常訪問和惡意行為。
清洗設(shè)備的硬件具有特殊的網(wǎng)絡(luò)處理器芯片和特別優(yōu)化的操作系統(tǒng)、TCP/IP協(xié)議棧,可以處理非常巨大的流量和SYN隊(duì)列。
1.3. HTTP Flood防御
HTTP Flood攻擊防御主要通過緩存的方式進(jìn)行,盡量由設(shè)備的緩存直接返回結(jié)果來保護(hù)后端業(yè)務(wù)。大型的互聯(lián)網(wǎng)企業(yè),會有龐大的CDN節(jié)點(diǎn)緩存內(nèi)容。
當(dāng)高級攻擊者穿透緩存時,清洗設(shè)備會截獲HTTP請求做特殊處理。最簡單的方法就是對源IP的HTTP請求頻率做統(tǒng)計(jì),高于一定頻率的IP地址加入黑名單。這種方法過于簡單,容易帶來誤殺,并且無法屏蔽來自代理服務(wù)器的攻擊,因此逐漸廢止,取而代之的是JavaScript跳轉(zhuǎn)人機(jī)識別方案。
HTTP Flood是由程序模擬HTTP請求,一般來說不會解析服務(wù)端返回?cái)?shù)據(jù),更不會解析JS之類代碼。因此當(dāng)清洗設(shè)備截獲到HTTP請求時,返回一段特殊JavaScript代碼,正常用戶的瀏覽器會處理并正常跳轉(zhuǎn)不影響使用,而攻擊程序會攻擊到空處。
1.4. DNS Flood防御
DNS攻擊防御也有類似HTTP的防御手段,第一方案是緩存。其次是重發(fā),可以是直接丟棄DNS報(bào)文導(dǎo)致UDP層面的請求重發(fā),可以是返回特殊響應(yīng)強(qiáng)制要求客戶端使用TCP協(xié)議重發(fā)DNS查詢請求。
特殊的,對于授權(quán)域DNS的保護(hù),設(shè)備會在業(yè)務(wù)正常時期提取收到的DNS域名列表和ISP DNS IP列表備用,在攻擊時,非此列表的請求一律丟棄,大幅降低性能壓力。對于域名,實(shí)行同樣的域名白名單機(jī)制,非白名單中的域名解析請求,做丟棄處理。
1.5. 慢速連接攻擊防御
Slowloris攻擊防御比較簡單,主要方案有兩個。
第一個是統(tǒng)計(jì)每個TCP連接的時長并計(jì)算單位時間內(nèi)通過的報(bào)文數(shù)量即可做精確識別。一個TCP連接中,HTTP報(bào)文太少和報(bào)文太多都是不正常的,過少可能是慢速連接攻擊,過多可能是使用HTTP 1.1協(xié)議進(jìn)行的HTTP Flood攻擊,在一個TCP連接中發(fā)送多個HTTP請求。
第二個是限制HTTP頭部傳輸?shù)淖畲笤S可時間。超過指定時間HTTP Header還沒有傳輸完成,直接判定源IP地址為慢速連接攻擊,中斷連接并加入黑名單。
2. 企業(yè)級防御
互聯(lián)網(wǎng)企業(yè)防御DDoS攻擊,主要還是使用上文的基礎(chǔ)防御手段, 重點(diǎn)在于使用監(jiān)控、組織以及流程等東西來保障及時、正確的使用這些手段,并根據(jù)攻擊策略的改變而改變。
2.1. 異常監(jiān)控
監(jiān)控需要具備多層監(jiān)控、縱深防御的概念,從骨干網(wǎng)絡(luò)、IDC入口網(wǎng)絡(luò)的BPS、PPS、協(xié)議分布,負(fù)載均衡層的VIP新建連接數(shù)、并發(fā)連接數(shù)、BPS、PPS到主機(jī)層的CPU狀態(tài)、TCP新建連接數(shù)狀態(tài)、TCP并發(fā)連接數(shù)狀態(tài),到業(yè)務(wù)層的業(yè)務(wù)處理量、業(yè)務(wù)連通性等多個點(diǎn)部署監(jiān)控系統(tǒng)。即使一個監(jiān)控點(diǎn)失效,其他監(jiān)控點(diǎn)也能夠及時給出報(bào)警信息。多個點(diǎn)的信息結(jié)合起來,有助于準(zhǔn)確的判斷攻擊目標(biāo)和攻擊手法。
2.2. 流程以及預(yù)案、演習(xí)
一旦發(fā)現(xiàn)異常,立即啟動在虛擬防御組織中的應(yīng)急流程。防御組織需要囊括到足夠全面的人員,至少包含監(jiān)控部門、運(yùn)維部門、網(wǎng)絡(luò)部門、安全部門、客服部門、業(yè)務(wù)部門等,所有人員都需要2-3個備份。流程啟動后,除了人工處理,還應(yīng)該包含一定的自動處理、半自動處理能力。例如自動化的攻擊分析,確定攻擊類型,自動化、半自動化的防御策略,在安全人員到位之前,最先發(fā)現(xiàn)攻擊的部門可以做一些緩解措施。
除了DDoS到來之時的流程等工作之外,更多的工作是在攻擊到來之前。主要包含CDN節(jié)點(diǎn)部署、DNS設(shè)置、流程演習(xí)等。對于企業(yè)來說,具備多個CDN節(jié)點(diǎn)是DDoS防御容量的關(guān)鍵指標(biāo)。當(dāng)一個機(jī)房承擔(dān)不住海量數(shù)據(jù)時,可以通過DNS輪詢的方式,把流量引導(dǎo)到多個分布節(jié)點(diǎn),使用防御設(shè)備分頭處理。因此DNS的TTL值需要設(shè)置得足夠小,能夠快速切換,每個CDN節(jié)點(diǎn)的各種VIP設(shè)置也需要準(zhǔn)備充分。
3. 總結(jié)
在虛擬化時代,海量用戶的不同業(yè)務(wù)共處在相同的物理機(jī)平臺,遭受DDoS攻擊的可能性越來越高。而且一個用戶被攻擊可能牽扯到大量的其他用戶,危害被顯著放大,因此防御顯得尤為重要。阿里云的虛擬化云計(jì)算業(yè)務(wù),平均每天遭受約200起DDoS攻擊,最大流量達(dá)到接近80Gbit/s,所有這些攻擊都在1分鐘內(nèi)自動處理完成,讓客戶遠(yuǎn)離DDoS的威脅,專心發(fā)展業(yè)務(wù)。
總地來說,對DDoS防御,主要的工作是幕后積累。臺上十分鐘,臺下十年功,沒有充分的資源準(zhǔn)備,沒有足夠的應(yīng)急演練,沒有豐富的處理經(jīng)驗(yàn),DDoS攻擊將是所有人的噩夢。
PS:DDoS攻防補(bǔ)遺請?jiān)L問下一頁
以“
云計(jì)算大數(shù)據(jù) 推動智慧中國 ”為主題的
第六屆中國云計(jì)算大會 將于5月20-23日在北京國家會議中心隆重舉辦。產(chǎn)業(yè)觀察、技術(shù)培訓(xùn)、主題論壇、行業(yè)研討,內(nèi)容豐富,干貨十足。票價折扣截止日期為4月20日,過后將恢復(fù)原價,需要購買的朋友,請抓住這最后的機(jī)會,點(diǎn)擊報(bào)名!
去年有寫過 一篇關(guān)于DDoS攻防的文章,當(dāng)時因?yàn)槠脑蛴行┘?xì)節(jié)沒有展開,加上時間過去了大半年,出現(xiàn)了許多新的流行的攻擊方式,所以決定寫一篇補(bǔ)遺。
DRDoS(分布式反射攻擊)最早在2004年左右就出現(xiàn)了,安全焦點(diǎn)上還有一份國外的代碼,可以在 http://www.xfocus.net/tools/200406/717.html下載查看。當(dāng)時的DRDoS攻擊不具備放大流量的能力,某種意義上說類似拿沖鋒槍打墻,依靠反射回來的彈殼傷人,攻擊力不升反降,因而并沒有流行開來。
但是從2013年開始,DRDoS已經(jīng)是互聯(lián)網(wǎng)上最流行、最吸引眼球的DDoS攻擊手段了,因?yàn)樗郊恿髁糠糯髮傩裕ㄟ^史無前例的海量流量擊敗了如日中天的云安全公司CloudFlare,引得大小黑客紛紛仿效。
DRDoS攻擊的原理是黑客偽造成受害者的IP地址,向互聯(lián)網(wǎng)上大量開放特定服務(wù)的主機(jī)發(fā)起請求,接收到請求的那些主機(jī)根據(jù)源IP地址將響應(yīng)數(shù)據(jù)包返回給受害者。整個過程中,大量的無辜主機(jī)完全不知情,成為黑客攻擊的幫兇。一般來說,黑客會使用響應(yīng)包遠(yuǎn)大于請求包的服務(wù)來利用,這樣才可以以較小的流量換取交大的流量去攻擊,幾十倍的放大攻擊。能利用來做放大反射攻擊的服務(wù),常見的有DNS服務(wù)、NTP服務(wù)、SNMP服務(wù)、Chargen服務(wù)等等,甚至某些online游戲服務(wù)器也被利用來參與攻擊。
CloudFlare在2013年遭受的300Gbps的攻擊屬于DNS反射攻擊,當(dāng)時導(dǎo)致他們?nèi)W(wǎng)故障。在2014年2月,它們遭受了前所未見的400Gbps的攻擊,黑客使用了NTP服務(wù)進(jìn)行放大。
互聯(lián)網(wǎng)上有非常多的時間服務(wù)器,通過NTP協(xié)議提供對時服務(wù)。但是它缺乏身份認(rèn)證手段,可以被任意使用。更重要的是,NTP協(xié)議有一個指令monlist可以列舉出最近同步過時間的600個主機(jī)列表,如下圖:
攻擊者發(fā)出的Monlist指令只有1個數(shù)據(jù)包,耗費(fèi)幾十個字節(jié),而返回包多達(dá)幾十個,耗費(fèi)2000-3000字節(jié)甚至更大,達(dá)到約50倍的放大。越是繁忙的NTP服務(wù)器,這個放大倍數(shù)越大。
攻擊者只需要100Mbps的請求流量,可以換來5Gbps的攻擊流量,效率非常高。其它的DNS放大、SNMP放大、Chargen放大與NTP放大原理一致,只是使用的協(xié)議有區(qū)別,不一一描述。
反射攻擊利用的協(xié)議,一般同時具有3種特征:容易偽造源IP地址、無身份認(rèn)證、響應(yīng)包遠(yuǎn)大于請求包。因此,基于UDP的DNS協(xié)議、NTP協(xié)議、Chargen協(xié)議、SNMP協(xié)議成為首選。那么,是不是只有基于UDP的上層協(xié)議才能夠用來做放大反射攻擊,需要完成三次握手才能開始業(yè)務(wù)會話的基于TCP的上層協(xié)議就無法利用了?其實(shí)不是。
Chargen是一個常見的測試網(wǎng)絡(luò)連通性服務(wù),同時工作在UDP協(xié)議和TCP協(xié)議上。對于它監(jiān)聽的TCP端口,只要有客戶端連上,就會源源不斷的向客戶端返回隨機(jī)字符串,永不停止。可以想象,如果這個東西可以利用起來做攻擊,無窮倍數(shù)的放大,是何等厲害。但是很遺憾,TCP不能偽造源IP地址,除非攻擊者能夠讓攻擊目標(biāo)主動連接到Chargen的TCP端口去。
這種事情,恰好是代理協(xié)議做的事情!如果攻擊目標(biāo)是HTTP Proxy或者Socks5 Proxy,攻擊者只需要連接上目標(biāo)的代理端口,然后去訪問Chargen服務(wù)并保持TCP連接不斷掉就行了。以HTTP代理為例,直接連接target的3128端口,然后發(fā)出類似 http://chargen_server.com:19這樣的請求即可,socks5代理類似。
使用Chargen攻擊代理服務(wù)器效果雖好,但是畢竟應(yīng)用范圍比較狹窄,一般的攻擊目標(biāo)都是網(wǎng)站。黑客的創(chuàng)意在這兒展露無遺,他們也有各種新奇的手法,比如利用Google的某些服務(wù)或者Wordpress之類的博客來做DDoS攻擊。
Google有一個叫做FeedFetcher的爬蟲,為Google Feed API提供后端支持,會定期抓取RSS以及其它各種數(shù)據(jù),如他們的電子表格服務(wù)spreadsheet中的鏈接。當(dāng)電子表格服務(wù)中存在內(nèi)容=image(“http://example.com/image.jpg”)時,Google就會“派出”FeedFetcher爬蟲去抓取這個圖片并保存到緩存中以將其顯示出來。
惡意攻擊者會找一個較大的文件,給文件名附加上隨機(jī)參數(shù),使FeedFetcher多次抓取這個文件。也就是說,如果一個網(wǎng)站有一個10MB的文件,將以下列表輸入到Google spreadsheet中,那么Google的爬蟲就會抓取該文件1000次,使網(wǎng)站產(chǎn)生大量出站流量。
=image(“http://targetname/file.pdf?r=0″)
=image(“http://targetname/file.pdf?r=1″)
=image(“http://targetname/file.pdf?r=2″)
=image(“http://targetname/file.pdf?r=3″)
…
=image(“http://targetname/file.pdf?r=1000″)
如果是帶寬比較小的站點(diǎn),面對這種攻擊時會非常痛苦。攔截會影響SEO效果,不攔截則需要付出更多的帶寬租賃費(fèi)用。
基于類似的原理,Wordpress博客的pingback功能也可以用來做反射攻擊。PingBack是用來通知blog系統(tǒng)有文章被引用的一種手段。向
http://www.anywordpresssite.com/xmlrpc.php
提交POST請求, 數(shù)據(jù)格式如下:
<methodCall><methodName>pingback.ping</methodName><params><param><value><string>http://victim.com/post.php?id=1</string></value></param><param><value><string>http://www.anywordpresssite.com/pst?id=111</string></value></param></params></methodCall>, 則服務(wù)器www.anywordpresssite.com會向 http://victim.com/post.php?id=1發(fā)起GET請求。如果攻擊者同時向大量的開啟了pingback的blog系統(tǒng)提交請求,則有大量的GET請求涌向攻擊目標(biāo),更多的更多細(xì)節(jié)可以參見 http://drops.wooyun.org/news/1062。
但是就我看來,pingback這樣的反射攻擊意義不大,因?yàn)榱髁亢驼埱蟠螖?shù)都沒有被放大,如果單純是為了隱藏自己,可以選擇通過proxy的方式發(fā)起攻擊。更好的做法應(yīng)該是向某個開啟了pingback的blog a發(fā)送大量的POST包(這里的POST包通過代理發(fā)起),讓它去ping大量的blog,然后大量的http response會同攻擊者發(fā)起的POST包一起淹沒blog a,這才是優(yōu)雅的反射放大攻擊――付出的代價是這種攻擊方式僅對有pingback功能的系統(tǒng)起作用
TCP的反射攻擊有可能發(fā)生,但是危害程度遠(yuǎn)不如UDP,而且發(fā)起難度較大,需要很多詭異的條件配合。因此,防御上無需做過多考慮,將目光主要集中到基于UDP的反射放大攻擊。
首先,我們需要足夠大的帶寬,沒有帶寬一切都枉然。一般的,帶寬可以通過CDN的方式提供,將業(yè)務(wù)分散到不同地區(qū)的不同機(jī)房。
其次,從DRDos的本質(zhì)知道,這種反射攻擊數(shù)據(jù)包的源端口一定是固定的,NTP放大攻擊源端口一定是UDP 123端口,DNS放大攻擊源端口一定是UDP 53端口。這其實(shí)是一個很好的特征,也是攻擊者不愿意卻不得不留下的特征――有得到就有代價。在帶寬足夠的情況下,可以在網(wǎng)絡(luò)邊界部署ACL策略,禁止外網(wǎng)進(jìn)來的源端口是UDP 123的報(bào)文,禁止外網(wǎng)進(jìn)來的源端口是UDP 161的報(bào)文,禁止外網(wǎng)進(jìn)來的源端口是UDP 19的報(bào)文,諸如此類。源端口是UDP 53的也可以過濾?也可以的,至少大部分IP地址可以無需請求外部的DNS服務(wù)。
這里涉及到一條防御準(zhǔn)則,可以三層過濾的不要在四層做,可以在四層做的過濾不要到七層做。越往上,解析開銷越大
最常見的SYN Flood防御手段是SYN Cookie和SYN Proxy,它們原理簡單,而且效果也非常好。
在正常情況下,服務(wù)器端接收到客戶端發(fā)送的SYN包,會分配一個連接請求塊(即request_sock結(jié)構(gòu))用于保存連接信息,然后發(fā)送SYN+ACK包給客戶端,并將連接請求塊添加到半連接隊(duì)列中,沒收到最后一個ACK的話就輪詢重發(fā)SYN+ACK包。
對于啟用了SYN Cookie的服務(wù)器,不會這樣處理,它不維持任何連接信息, 而是將源IP、目的IP、源端口、目的端口、SYN序列號等信息進(jìn)行hash運(yùn)算,生成一個數(shù)字稱之為cookie。服務(wù)端將這個cookie作為SYN+ACK包的ACK確認(rèn)號發(fā)送給客戶端,然后對這個IP發(fā)過來的后續(xù)ACK包的確認(rèn)號進(jìn)行驗(yàn)算,與Cookie吻合的說明是正確的報(bào)文,正常建立連接,而攻擊的報(bào)文直接沒有了任何后續(xù)動作,也沒有額外開銷。
SYN Proxy則是管家式的防御,它站在攻擊者和目標(biāo)服務(wù)器之間,偽裝成目標(biāo)服務(wù)器對所有的SYN報(bào)文進(jìn)行應(yīng)答,包括攻擊者在內(nèi)。當(dāng)三次握手正確的建立起來后,就偽裝成客戶端IP地址與后端的目標(biāo)服務(wù)器建立三次握手,然后轉(zhuǎn)發(fā)數(shù)據(jù),需要注意的是,TCP三次握手在這里變成了6次握手,而且兩個握手內(nèi)的ACK號肯定不一致,需要做一個修正。
SYN Cookie可以和SYN Proxy無縫集成,協(xié)同工作,提供更好的防御服務(wù),基本上100%無誤殺。那么使用這種防御手段,付出的代價是什么?
我們可以看到,SYN Cookie和SYN Proxy對每一個SYN包都會進(jìn)行答復(fù),如果攻擊者發(fā)送1Gbps的報(bào)文過來,防御方會發(fā)送1Gbps的報(bào)文回去。10Gbps就10Gbps,100Gbps就100Gbps。問題是,企業(yè)網(wǎng)絡(luò)禁得起這種折騰么?基本上,攻擊流量達(dá)到一定程度,網(wǎng)絡(luò)不攻自潰。
對于過大的反彈流量的問題,安全廠商想出了許多新的辦法,那就是在答復(fù)之前做一些測試,能輕易過濾的流量就不反彈了。最主要的是隨機(jī)丟包策略,直接粗暴的丟棄SYN包,按照TCP協(xié)議正常的用戶會在3秒內(nèi)重發(fā)這個SYN包,攻擊流量的源IP是偽造的,因此直接被丟棄了沒有任何后續(xù)。
這個方案看起來對SYN Cookie之類技術(shù)是一個很好的補(bǔ)充,但是也有一些問題。首先,正常用戶的體驗(yàn)受到影響,訪問業(yè)務(wù)的速度變慢了。其次是某些高級攻擊者可以利用這個手段,繞過防御,簡單的說,同樣的SYN包發(fā)兩次有可能被判定為正常訪問。一旦被防御設(shè)備加入白名單,后續(xù)的報(bào)文就直接漏過了。
除了SYN Cookie、Proxy技術(shù)之外,還有一種反向探測的技術(shù),也是頗為流行。防御設(shè)備接收到SYN包時,回復(fù)一個ACK確認(rèn)號錯誤的SYN+ACK報(bào)文。按照協(xié)議,客戶端會發(fā)一個RST報(bào)文過來重置連接。攻擊者一般是偽造源IP地址,沒有人會幫他做這個應(yīng)答,SYN包被直接過濾掉。
這個方案,在實(shí)際環(huán)境中會遇到一些問題。某些防火墻設(shè)備,包括iptables,會過濾掉ACK號錯誤的SYN+ACK包,導(dǎo)致正常用戶的RST包發(fā)不過來而導(dǎo)致被誤殺。因此,考慮到穩(wěn)定可靠,防御設(shè)備回復(fù)的SYN+ACK包的ACK確認(rèn)號需要滿足某些特征,比如小于或者等于SYN確認(rèn)號。
對于攻擊者而言,他們可以通過tcp ping的方式掃描到真實(shí)存活的主機(jī)列表,然后使用這些IP地址作為源IP地址發(fā)起攻擊,可以有效繞過這種防御手段。雖然一般的攻擊是要偽造不存在的源IP以達(dá)到更好的效果,但是這里則要反其道而行之。
總之,DDoS的防御和攻擊都是一件非常精巧的事情。要優(yōu)雅的攻擊,優(yōu)雅的防御。各種手法有符合常規(guī)的,也有要違背常規(guī)的。運(yùn)用之妙,存乎一心。
NTP攻擊的圖片來自網(wǎng)絡(luò),更多細(xì)節(jié)可以參見:
http://www.prolexic.com/kcresources/white-paper/white-paper-snmp-ntp-chargen-reflection-attacks-drdos/An_Analysis_of_DrDoS_SNMP-NTP-CHARGEN_Reflection_Attacks_White_Paper_A4_042913.pdf。
基于Google的攻擊來自freebuf,參見:
http://www.freebuf.com/articles/web/28273.html。
相關(guān)博文鏈接:
深入淺出DDoS攻擊防御――防御篇
深入淺出DDoS攻擊防御――攻擊篇
DDoS攻防補(bǔ)遺
以“
云計(jì)算大數(shù)據(jù) 推動智慧中國 ”為主題的
第六屆中國云計(jì)算大會 將于5月20-23日在北京國家會議中心隆重舉辦。產(chǎn)業(yè)觀察、技術(shù)培訓(xùn)、主題論壇、行業(yè)研討,內(nèi)容豐富,干貨十足。票價折扣截止日期為4月20日,過后將恢復(fù)原價,需要購買的朋友,請抓住這最后的機(jī)會,點(diǎn)擊報(bào)名!
上一篇 提高API采用率的六大方法