DDOS攻擊的治理和緩解

本文作者:Lemon

本文屬於安全脈搏原創現金獎勵計劃

轉載請參考:secpulse.com/archives/6

1.1 DDOS攻擊的治理


對DDOS攻擊的治理包括殭屍網路的治理、地址偽造攻擊的治理和攻擊反射點的治理。

對殭屍網路進行治理,能夠從源頭停止正在進行的DDOS攻擊;對地址偽造攻擊進行治理,能夠控制和阻止未來可能發生的一部分DDOS攻擊,並有利於定位攻擊源頭;而對攻擊反射點的治理則主要在於控制和減少DDOS攻擊的規模。

1.1.1 殭屍網路的治理

殭屍網路是一群被殭屍程序(bot)感染的殭屍主機(zombie)的集合,分布於家庭、企業、政府機構等各種場合,接收來自殭屍控制者(botmaster)的指令,進行DDoS、信息竊取、網路釣魚、垃圾郵件、廣告濫點、非法投票等多種攻擊行為。由於攻擊手段豐富多樣、隱蔽性強、有能力發動大規模攻擊、以經濟利益為目的等特點,殭屍網路已成為黑客產業鏈中的一個重要環節,受到新聞媒體、安全業界和學術機構的廣泛關注。

對殭屍網路進行治理,切斷DDOS攻擊的源頭,從理論上說這是對抗DDOS攻擊最有效的方法,然而,在實際操作過程中,治理殭屍網路需要面的諸多的困難和問題。

進行殭屍網路治理的首要困難在於,我們只有能夠檢測到網路異常,才能夠知道系統感染了殭屍程序。如果殭屍主機用戶發動DDOS攻擊,單位時間內產生大量的攻擊流量,那麼安裝於網路出口的檢測設備或許能提示異常,從部分主機的內存佔用上也可能看書端倪,但如果這些通信流量很小,並做了加密,那麼這些 通信極有可能被淹沒於正常的請求中而不被發覺,而我們也就幾乎不能夠察覺到受了感染,

檢測到感染後,一般就能提取到樣本,此刻遇到的另一個困難就是需要對樣本進行逆向分析,找出需要的信息,依據樣本的難易程度,這有可能要花費相當長的時間,不過走到這一步,治理就可以從兩方面著手。

一是根據逆向分析的結果,編寫殭屍網路程序的清楚工具,分發至企業區域網的其他感染主機進行清除處理,同時將C&C伺服器域名或地址以及通信包特徵加入規則予以攔截,迫於威脅響應的壓力,這種做法通常是優先選擇,這樣做的不足在於,清楚掉的可能只是殭屍網路的冰山一角,整個殭屍網路仍然可以維持運營,我們的網路仍然面臨被攻擊的風險,如來自這個殭屍網路的DDOS攻擊等。

二是接管或摧毀整個殭屍網路,這種做法往往非常困難,因為殭屍網路的分布通常不局限於一個地區、一個國家甚至一個洲,而常常分布於多個國家、多個洲,其相應的控制伺服器也分布廣泛,因此,這種跨區域的打擊行動就需要政府間的協調合作,這往往只有有實力、影響大的跨國公司才能做到。

作為網路犯罪的主要平台之一,黑客利用殭屍網路展開不同的攻擊,可以導致大量機密或個人隱私泄密,也可以通過DDOS攻擊使整個基礎信息網路癱瘓。因此,對殭屍網路進行治理顯得十分迫切而重要。

1.1.2 地址偽造攻擊的治理

在當前的互聯網環境中,偽造地址發起網路攻擊是一件非常容易的事,這一現場給DDOS的治理和防護帶來了諸多困難。

首先,偽造地址使得追查攻擊源變得更加困難,而攻擊者承擔的風險更小,也就更肆無忌憚。

其次,偽造地址使得DDOS能夠達到更大的攻擊規模,尤其是DNS反射式DDOS攻擊,可以將原始攻擊流量放大數十倍,加劇威脅的程度。

最後,偽造地址使得防護DDOS攻擊變得更困難,受害者難以使用源地址過濾的方式阻擋攻擊。

很明顯,減少地址偽造對DDOS的治理和防護有很大的幫助,而實現這一目標在技術層面並不困難,CERT和IETF都給出了簡單有效的解決方案。

1.1.2.1 CERT -- 計算機安全應急響應組(Computer Emergency Response Team)是專門處理計算機網路安全問題的組織。

路由過濾,具體而言,就是互聯網服務提供商在網路出入口處的路由器上,對符合以下條件的數據包進行過濾:

  1. 從外部介面進入內部網路的數據包,但源地址屬於內部網路;
  2. 由內部網路向外發送的數據包,但是源地址不屬於內部網路。

之後眾多網路設備和系統廠商都支持這種類型的過濾,包括Cisco、3COM、IBM、Sun等。

1.1.2.2 RFC 2827

Request For Comments(RFC),是一系列以編號排定的文件。文件收集了有關互聯網相關信息,以及UNIX和互聯網社區的軟體文件。目前RFC文件是由Internet Society(ISOC)贊助發行。基本的互聯網通信協議都有在RFC文件內詳細說明。RFC文件還額外加入許多的論題在標準內,例如對於互聯網新開發的協議及發展中所有的記錄。因此幾乎所有的互聯網標準都有收錄在RFC文件之中。

2000年5月,IETF發布了RFC2827「Network Ingress Filtering Defeating Denial of Service Attracks which employ IP Source Address Spoofing」。該文認為,只要對下游流量中的地址欺騙流量過濾,就可以近乎完全消除此類攻擊場景,RFC 2027提供了一個實例,如圖:

攻擊者位於204.69.207.0/24網段,屬於ISP D的區域中,通過路由器「router 2」,試圖攻擊其他主機,如果「router 2」執行了入口流量過濾,只允許源地址在204.69.207.0/24網段內的數據包流出,反之則全部禁止,那麼攻擊將無法進行。

此外, RFC2827提出在網路接入處設置入口過濾(Ingress Filting),來限制偽裝源IP的報文進入網路。這種方法更注重在攻擊的早期和從整體上防止DoS的發生,因而具有較好效果。使用這種過濾也能夠幫助ISP和網管來準確定位使用真實有效的源IP的攻擊者。ISP應該也必須採用此功能防止報文攻擊進入Internet;企業(校園網)的網管應該執行過濾來確保企業網不會成為此類攻擊的發源地,但由於缺乏激勵和動力,更大範圍的部署遲遲未能實現。

1.1.2.3 Unicast Reverse Path Forwarding

URPF-防止虛假地址攻擊

URPF (Unicast Reverse Path Forwarding)是單播逆向路徑轉發的簡稱,其主要功能是防止基於源地址欺騙的網路攻擊行為。之所以稱為「逆向」,是針對正常的路由查找而言的。一般情況下,路由器接收到包後,獲取包的目的地址,針對目的地址查找路由Pair(Dst-IP, NextHop),如果找到了就轉發包,否則丟棄該包。uRPF通過獲取包的源地址和入介面,以源地址為目的地址,在轉發表中查找源地址路由對應的出介面是否與入介面匹配,如果不匹配,認為源地址是偽裝的,丟棄該包。

Unicast Reverse Path Forwarding也是一種緩解地址偽造的技術,一旦開啟了這種功能,路由器會對進入的數據包檢查源地址和源埠是否在路由器表中,如果存在,則認為該數據包是通過最優路徑到達路由器,應該正常轉發,否則丟棄,具體分為5個步驟:

  1. 對於Input方向的數據包,檢查訪問控制列表ACL是否通過;
  2. 按照Unicast RPF檢查是否由最優路徑抵達;
  3. Forwarding Information Base(FIB)查找;
  4. 對於Output方向,檢查訪問控制列表ACL是否允許通過;
  5. 轉發數據包。

1.1.2.4 分散式過濾方式

除了上述方法外,還有很多研究者提出了其他方法來緩解和杜絕地址偽造,例如有學者提出了「基於路由的分散式包過濾方法」其原理是路由器根據數據包的源地址和目的地址判斷其轉發路徑是否經過自己。如果不經過,則丟棄數據包,如果所示:secpulse.com/archives/6

攻擊者位於AS 7中,試圖對AS 4的目標進行攻擊,於是將攻擊源地址偽造成AS 2中的成員。當攻擊數據包經過AS 6與AS 7之間的邊界路由器時,路由器會判斷從AS2到AS4的路徑,發現不會經過自己,就將數據包丟棄。

雖然類似的方法已廣泛提出,但偽造地址攻擊並未得到有效遏制,主要是因為ISP缺乏採用這些技術的動力。

1.1.3 攻擊反射點的治理

反射式DDOS攻擊,尤其是DDOS反射攻擊,已成為當前最具破壞力的攻擊形式之一。

反射式DDOS攻擊備受攻擊者青睞,主要原因有兩個。第一,通過偽造地址隱藏攻擊源;第二,大多數反射攻擊同時具有放大作用,可以將攻擊流量放大數十倍。反射攻擊包括ACK、DNS、SNMP、NTP、CHARGEN等種類,其中DNS反射攻擊最為普遍。這是因為互聯網中存在大量可作為反射點的DNS伺服器,而且DNS反射攻擊可以實現較大的反射倍數。

對於放大攻擊來說,流量一旦經過反射點放大,佔用寬頻就會急劇上升,而無論採用何種防護方法,也都意味著成本或代價急劇上升,所以,針對反射點進行治理,對於減少流量型DDOS攻擊具有事半功倍的效果。

治理反射點最直接有效的方法是提高DNS伺服器的安全性,而大多數DNS伺服器的管理員並非不想做到這一點只是無從入手,針對不同的需要,主要介紹三種方式:

  1. Open Resolver Project

    Open Resolver Project是一個國際組織,它致力於減少DNS放大攻擊造成的威脅,這個組織定期維護一份DNS伺服器列表。

    Open Resolver Project提供查詢功能,使用者可以查詢任何網段中開放的地址解析器,查詢結果包括從多個地址向其發送請求的相應結果,如果一個DNS伺服器可以被從任意地址訪問,並無限速地回應查詢請求,那麼它就可以被用做DDOS攻擊的反射點。

    Open Resolver Project建議DNS的維護者檢查以下配置:

    1)限制允許訪問的地址範圍,以防被濫用,具體操作可以參考Team CYMRU Website.

    2)採用RRL,Knot DNS和NSD已經將其作為標準選項,而BIND還需要安裝一個補丁程序。

    3)用戶端設備不應在廣域網介面監聽DNS數據包,包括網路和廣播地址。
  2. 響應速率限制

    2013年7月,互聯網系統協會宣布,為了防禦利用DNS發起的反射式DDOS攻擊,最新版的BIND軟體增加了響應速率限制模塊,並聲稱這會是緩解DNS反射攻擊的最有效方法。

    響應速率限制是對DNS協議的一種增強功能,目的是緩解DDOS放大攻擊,RRL官方網站認為,之所以DNS伺服器很容易被用於反射攻擊,是由於三個原因:

    1)DNS查詢通常使用UDP協議,因為這是一種不驗證來源的協議,所以很容易偽造,攻擊者可以將發送的請求數據包的源地址改為目標的地址,這樣DNS伺服器會向受害者發送回復,也就是反射式DDOS攻擊。

    2)大部分ISP不檢查發自他們的數據包中源地址是否真實,這使得互聯網中偽造地址盛行。

    3)幾個位元組的DNS請求數據包,就可以引發數倍甚至數十倍大小的響應,例如,查詢isc.org的ENDS0數據包只有36個位元組長,而觸發的相應數據包長達3576個位元組。攻擊者可以控制攻擊引發巨大的增幅。
  3. NIST SP 800-81

    NIST -- 美國國家標準與技術研究院(National Institute of Standards and Technology,NIST)直屬美國商務部,從事物理、生物和工程方面的基礎和應用研究,以及測量技術和測試方法方面的研究,提供標準、標準參考數據及有關服務,在國際上享有很高的聲譽。

NIST SP800系列標準

SP800是美國NIST(National Institute of Standards and Technology)發布的一系列關於信息安全的指南(SP是Special Publications的縮寫)。文檔很多,也很細,值得大家學習。

2006年5月,NIST發布了特別出版物SP 800-81 第1版,名為「安全域名系統部署指南」。2013年9月,第2版發布。

這份指南認為,由於DNS缺乏對系統邊界的定義,以及缺乏數據驗證,使得它會面臨以下威脅:

  1. 利用假冒身份欺騙DNS伺服器,藉以實施拒絕服務攻擊。
  2. 入侵者或虛假的DNS信息提供者可以毒化DNS的緩存,例如一個企業的DNS信息提供伺服器,這將導致錯誤訪問子域名。
  3. 篡改DNS伺服器中對歷史查詢的緩存,可能導致使用該DNS伺服器的用戶訪問有害的非法資源。
  4. 如果域名解析請求的數據違反了DNS規範的定義,就可能產生不良影響,例如增加系統的負載、保存過時的數據,甚至使系統無法提供服務,對於DNS,數據內容決定著整個系統的完整性。

對於這些威脅,SP 800-81提出了以下通用的建議:

  1. 實施適當額系統和網路安全控制,確保DNS託管環境,如操作系統和應用程序安裝補丁程序、進程隔離和網路的兼容性。
  2. 對於一個企業控制範圍內的DNS伺服器,對DNS事務進行保護,例如域名解析數據的更新和備份,保護的方法可以參考互聯網工程任務組的事務簽名規範,使用基於共享秘密的散列消息認證碼。
  3. 使用基於非對稱加密的數字簽名來保護DNS的請求/應答事務,具體內容可以參考IETE的域名系統安全擴展規範。

如何配置和部署DNS以防止DDOS攻擊:

  1. DNS協議和服務基礎組件;
  2. 討論DNS主機環境的威脅、安全對象和防護方法;
  3. 推薦的DNS請求/應答機制安全性;
  4. 減少DNS的信息泄露;
  5. DNS的安全管理操作。

1.2攻擊的緩解


前半部分介紹了治理對抗DDOS攻擊的方法,大部分的治理方法需要在DDOS攻擊發生之前就配置。並且需要世界範圍內的網路運營商、網路公司和網路組織進行有效合作,才能達到較好的對抗效果。然而,對於世界上許多中小型的企業和組織來說,他們並沒有能力進行大範圍的網路治理和殭屍網路打擊活動,卻比大型公司和組織更可能遭受DDOS攻擊,對於這些小中型企業和組織來說,在DDOS攻擊已經發生的情況下,可以通過一些緩解技術來減少攻擊對自身業務和服務的影響,從而在一定程度上保障業務正常運行。

緩解DDOS攻擊的主要方法是對網路流量進行清洗,即設法將惡意的網路流量從全部流量中去掉,只將正常的網路流量交付該伺服器,然而,隨著分散式拒絕服務攻擊的流量不斷增大,單一的流量清洗設備和流量清洗中心已經無法處理如此大規模的網路流量了,因此,面對DDOS攻擊時,在進行流量清洗前還需要進行流量稀釋。

1.2.1 攻擊流量的稀釋

在面對超大流量的分散式拒絕服務攻擊時,首先要做的就是將流量稀釋和分散,在流量被稀釋和分散後,攻擊情況就從多對一變成了多對多,這樣到達沒個流量清洗設備或流量清洗中心的網路流量都會下降到其能夠處理的範圍之內,也就能夠進行進一步的清洗工作了。

目前比較流量的攻擊流量稀釋的方法是使用內容分發網路或任播技術。

1.CDN

CDN技術的初衷是提高互聯網用戶對網站靜態資源的訪問速度,但是由於分散式多節點的特點,它也能夠對分散式拒絕服務攻擊的流量產生稀釋的效果。

CDN,就是在互聯網範圍內廣發設置多個節點作為代理緩存,並將用戶的訪問請求導向最近的緩存節點,以加快訪問速度的一種技術手段。

那麼,用戶的訪問請求是如何被導向最近的緩存節點的呢?這通常通過智能DNS來實現,在許多情況下,對於資源和服務的訪問請求是以域名的形式發出的,傳統的域名解析系統會將同一域名的解析請求解析成一個固定的IP,因此,整個互聯網對於該域名的訪問都會導向這個IP地址。

智能DNS則有所不同,在智能DNS系統中,一個域名會對應一張IP地址表,當收到域名解析請求時,智能DNS會查看解析請求的來源,並給出地址表中距離請求來源最接近的IP地址,這個地址通常也就是最接近用戶的CDN緩存節點的IP地址,在用戶收到域名解析應答時,認為該CDN節點就是他請求的域名所對應的IP地址,並向該CDN節點發起服務或資源請求。

CDN節點在收到用戶的請求時,會在其存儲的緩存內容中尋找用戶請求的資源,如果找到,就直接將資源響應給用戶;如果在CDN節點中找不到用戶請求的資源,則CDN節點會作為代理伺服器向源網站請求該資源,獲取資源後將結果緩存並返回給用戶,對於有大量靜態資源的網站,使用CDN進行代理緩存一般能減少源站80%的訪問流量。

可以看到,在使用CDN技術之後,互聯網上的用戶可以通過智能DNS利用CDN的節點快速獲取所需要的資源和服務,同時由於CDN節點的緩存作用,能夠在很大程度上減輕源站的網路流量負載。

在發生了分散式拒絕服務攻擊時,智能DNS會將來自不同位置的攻擊流量分散到對應位置的DNS節點上,這使得CDN節點成為區域性的流量吸收中心,從而達到流量稀釋的效果。在流量被稀釋到各個CDN節點後,就可以在每個節點處進行流量清洗,只將正常的請求交付給源站,從而達到防護源站的目的。

不過,利用智能DNS實現的CDN技術智能分散和稀釋通過域名發起的分散式拒絕服務攻擊的流量,如果攻擊者直接通過IP而不是通過域名進行攻擊,那麼不會進行智能DNS解析,攻擊流量也無法分散到各個CDN節點上。更好的流量稀釋方法是使用Anycast技術。

2.Anycast

Anycast技術是一種網路定址和路由的方法,通過使用Anycast,一組提供特定服務的主機可以使用相同的IP地址,同時,服務訪問方的請求報文將會被IP網路路由到這一組目標中拓撲結構最近的一台主機上。

Anycast通常是通過在不同的節點處同時使用BGP協議向外聲明同樣的目的IP地址的方式實現的,如圖,伺服器A和伺服器B是Anycast的兩個節點,他們通過BUG協議同時向外聲明其IP地址為10.0.0.1。

當客戶端位於路由器1的網路內時,他將會通過路由器1來選擇路由的下一跳,而在路由器1看來,到達伺服器IP地址10.0.0.1的網路拓撲如圖。

顯然,轉發到路由器2的距離最短,因此,路由器1會將請求報文轉發給路由器2而不是路由器3,從而實際上發送給伺服器A,達到發送給Anycast之中「最近」節點的目的。

對無狀態的服務Anycast通常用來提高可用性保障和負載均衡,例如NDS服務。幾乎全部的互聯網根域名伺服器都部署了Anycast。在各大洲不同位置的A,C,E,F,I,J,K,L和M根域名伺服器都使用了Anycast定址技術,以提供一種分散式的服務。同時,許多商業DNS服務提供商也部署了Anycast定址以便提高查詢性能,保障系統冗餘並實現負載均衡。

Anycast通常具有高度的可靠性,它可以提供自動故障恢復。Anycast應用通過外部「心跳」來監測伺服器的功能,如果伺服器出現故障,就會立即撤銷伺服器的理由公告。

使用Anycast技術能夠稀釋分散式拒絕服務攻擊流量,在Anycast定址過程中,流量會被導向網路拓撲結構上最近的節點,在這個過程中,攻擊者並不能對攻擊流量進行操控,因此攻擊流量將會被分散並稀釋到最近的節點上,每一個節點上的資源消耗都會減少(見圖)。

1.3 攻擊流量的清洗


流量清洗是指在全部的網路流量中區分出正常流量和惡意流量,將惡意流量阻斷和丟棄,而只將正常的流量交付給伺服器。

與其他的網路安全檢測和防護手段類似,流量清洗也需要考慮漏報率和誤報率的問題,通常,漏報率和誤報率是一對矛盾,需要通過對檢測和防護規則的調整來進行平衡。

如果流量清洗的漏報率太高,就會有大量的攻擊請求穿透流量清洗設備,如果無法有效地減少攻擊流量,也就達不到減輕伺服器壓力的效果。

相反,如果誤報率太高,就會出現大量的正常請求在清洗過程中被中斷,嚴重影響正常的服務和業務運行。

優秀的流量清洗設備,應該能同時將誤報率和漏報率降低到可以接受的成都,這樣就能夠在不影響網路或業務系統正常運行的情況下,最大限度的將惡意攻擊流量從全部網路流量中去除,要達到這個目的,需要同時使用多種準確而高效的清洗技術,這些技術包括:IP信譽檢查、攻擊特徵匹配、速度檢查與限制、TCP代理和驗證、協議完整性驗證和客戶端真實性驗證。

1.3.1 IP信譽檢查

IP信譽檢查原本是用於識別和對抗垃圾郵件的一種技術,不過這種技術也可以用來在網路層進行流量清洗。

IP信譽機制是指為互聯網上的IP地址賦予一定的信譽值,那些過去或限制經常被作為殭屍主機發送垃圾郵件或發動拒絕服務攻擊的IP地址會被賦予較低的信譽值,說明這些IP地址更有可能成為網路攻擊的來源。

當發生分散式拒絕服務攻擊時,流量清洗設備會對通過的網路流量進行IP信譽檢查,在其內部的IP地址信譽庫中查找每一個數據包來源的信譽值,並會優先丟棄信譽值低的IP地址所發來的數據包或建立的會話連接,以此保證信譽高的IP地址與伺服器的正常通信。

IP信譽檢查的極端情況就是IP黑名單機制,即如果數據包的來源存在於黑名單之中,則不進行任何處理,直接丟棄該數據包,這種方式一般會造成較多的誤報,影響正常服務的運行。

1.3.2 攻擊特徵匹配

在大多數情況下,發動分散式拒絕服務攻擊需要藉助攻擊工具,為了提高發送請求的效率,攻擊工具發出的數據包通常由編寫者偽造並固化到工具當中的,而不是在交互過程中產生的,因此一種攻擊工具所發出的數據包載荷會具有一種特徵。

流量清洗設備可以將這些數據包載荷中的特徵作為指紋,來識別工具發出的攻擊流量。指紋識別可以分為靜態指紋識別和動態指紋識別兩種。靜態指紋識別是指預先將多種攻擊工具的指紋特徵保存在流量清洗設備內部,設備將經過的網路數據包與內部的特徵庫進行對比,直接丟棄符合特性的數據包;動態指紋識別則需要清洗設備對流量的網路數據包進行分析,在分析到若干個數據包的載荷部分之後,將其指紋特徵記錄下來,後續命中這些指紋特徵的數據包會丟棄,而長期不被命中的指紋特徵會逐漸老化甚至消息。

1.3.3速度檢查與限制

一些攻擊方法在數據包載荷上可能並不存在明顯的特徵,沒有辦法進行攻擊特徵匹配,但卻在請求數據包發送的頻率和速度上有著明顯的異常,這些攻擊方法可以通過速度檢查與限制來清洗流量。

例如,在受到THC SSL DOS攻擊時,會在同一個SSL會話中多次進行加密秘鑰的重協商,而正常情況下是不會反覆重協商加密秘鑰的,因此,當流量清洗設備進行統計時,如果發現SSL會話中秘鑰重協商的次數超過了特定的閾值,就可以直接中斷這個會話並把來源加入黑名單中。

再如,在受到Slowloris和慢速POST請求攻擊時,客戶端和伺服器之間會以非常低的速率進行交互和數據傳輸,流量清洗設備在發現HTTP的請求長時間沒有完成傳輸時,就可以將會話中斷。

此外,對於UDP洪水攻擊等一些沒有明顯特徵、僅通過大流量進行攻擊的方法,可以通過限制流速的方式對其進行緩存。

1.3.4 TCP代理和驗證

SYN洪水攻擊等攻擊方式都是利用TCP協議的弱點,將被攻擊目標的連接表佔滿,使其無法創建新的連接而達到拒絕服務攻擊的目的,流量清洗設備可以通過TCP代理和驗證的方法來緩解這種攻擊造成的危害。

在一個TCP SYN請求到達流量清洗設備後,設備並不將它交給後面的伺服器,而是直接回復一個SYN+ACK響應,並等待客戶端回復。如果SYN請求來自合法的用戶,那麼他會對SYN+ACK進行響應,這時流量清洗設備會代替用戶與其保護的伺服器建立起TCP連接,並將這個連接加入到信任列表當中,如圖

合法的用戶和伺服器之間就可以透過流量清洗設備,進行正常數據通信。對於用戶來說整個過程是完全透明的,正常的交互沒有受到任何影響。

而如果這個SYN請求來自攻擊者,那麼他通常不會對SYN+ACK進行應答,從而形成半開連接。這樣流量清洗設備會暫時保留這個半開連接,並在經過短暫的超時時間之後丟棄這個連接。如圖所示

相比於所保護的伺服器,流量清洗設備對連接表操作進行了專門優化,能夠處理極其龐大的連接請求數量,因此即使有非常多的SYN請求同時湧向清洗設備,清洗設備也能夠處理,在這個過程中,由於清洗設備攔截在被保護的伺服器之前,伺服器並沒有消耗任何的連接資源,因此保證了伺服器的性能不受影響。

流量清洗設備在作為TCP代理進行防護時,除了攔截半開連接外,還可以進行TCP協議的一些互動式驗證。例如,在收到第一個SYN請求時,通過直接丟棄、發送POST包或發送錯誤序列號的ACK包的方式來中斷連接過程,並檢查客戶端是否重新發起連接請求,通過這種驗證,也可以識別並丟棄許多不合法的連接。

1.3.5協議完整性驗證

為了提高發送攻擊請求的頻率,大多數的攻擊方法都會只發送攻擊請求,而不接收伺服器響應的數據,或者無法完全理解和處理響應數據,因此,如果能夠對請求來源進行互動式驗證,就可以檢查請求來源協議實現的完整性,對於協議實現不完整的請求來源,通常可以將其作為攻擊主機丟棄其發送的數據。

在DNS解析的過程中,如果域名解析請求獲得的響應數據中Flags欄位的Truncated位被置位,通常客戶端就會使用TCP 53埠重新發送域名解析請求。如圖所示

而攻擊者使用的攻擊工具由於不接收或不處理解析請求的響應數據,也就不會使用TCP 53埠進行重新連接。流量清洗設備可以利用這個區別來有效地區分合法用戶與攻擊者,攔截惡意的DNS攻擊請求。如圖所所以

對於提供HTTP服務的web伺服器,也可以使用類似的方式類似的方式進行協議完整性驗證。例如,可以使用HTTP協議中的302重定向來驗證請求的來源是否接收了響應數據並完整實現了HTTP協議的功能,HTTP的302狀態碼錶示被請求的資源被臨時轉移,並會給出一個轉移後的地址,正常的合法用戶在接收到302重定向後會順著跳轉地址尋找對應的資源,如圖所示

而攻擊者的攻擊工具由於不接收或不處理響應數據,則不會進行跳轉,因此攻擊請求會被清洗設備攔截,Web伺服器不會受到任何影響。如圖所示

1.3.6客戶端真實性驗證

進行協議完整性驗證能夠清洗掉一部分簡單的攻擊工具所發送的攻擊流量,但是,一些攻擊工具在開發過程中使用了現成的協議庫,這樣就能夠完整實現協議交互,通過協議完整性驗證。對於這些攻擊工具,需要使用客戶端真實性驗證技術進行攻擊流量清洗。

客戶端真實性驗證是指對客戶端程序進行挑戰-應答式的交互驗證,檢查客戶端能否完整特定的功能,以此來確定請求數據是否來自真實的客戶端。

對基於頁面的web服務,可以通過檢查客戶端是否支持JavaScript來驗證請求是否來自真實的瀏覽器客戶端。當收到HTTP請求時,流量清洗設備會使用JavaScript等腳本語法發送一條簡單的運算操作。如果請求是由真實的瀏覽器發出的,那麼瀏覽器會進行正確運算並返回結果,流量清洗設備進行結果驗證後就會讓瀏覽器跳轉到web伺服器上真正的資源位置,不會影響正常用戶的訪問。如圖所示

當然,攻擊者也可以犧牲工具的一部分攻擊效率,並在工具中加入JavaScript的解析和執行能力,以便通過JavaScript驗證,這時,則需要使用驗證碼進行人機識別。

驗證碼的全稱是「全自動區分計算機和人類的圖靈測試」這是一種用於分辨人與計算機的反向圖靈測試。

常見的驗證碼是讓用戶輸入一個扭曲變形的圖片上所顯示的文字,對於真實的人類用戶來說,通常能夠比較容易的識別出這些文字,給出正確的識別結果,從而通過測試並繼續進行訪問。如圖所示

而對於計算機來說,想要識別驗證碼中的文字則相當困難。對於無法給出驗證碼正確識別結果的請求,流量清洗設備會直接丟棄,從而保護web伺服器不受影響,如圖所示

所有的防禦是不完美的正如攻擊是不完美的一樣,好的防禦者在提升自己的防禦能力趨於完美的同時也要善於尋找攻擊者的不完美,尋找一次攻擊中的漏洞,不要對攻擊心生恐懼,對於Ddos攻擊而言,發起一次攻擊一樣是存在漏洞的,如果我們都能夠擅長利用其中的漏洞並且抓住後面的攻擊者那麼相信以後的ddos攻擊案例將會減少很多,在針對目標發起攻擊之前攻擊者也會做更多的權衡,損失,利益和法律。


推薦閱讀:

dnsdun怎麼樣?
DDoS 的肉雞都是哪來的?
免費的DDoS防火牆有哪些
【雲棲公開課】互聯網安全—DDoS攻防原理及實戰
近日 Acfun 是否遭受了 DDoS 攻擊?

TAG:DDoS | 网络安全 | 信息安全 |