本文由 網易雲 發佈。安全
原文地址:反射型 DDoS 攻擊的原理和防範措施-網易雲博客服務器
隨着僵屍網絡的興起,同時因爲攻擊方法簡單、影響較大、難以追查等特色,分佈式拒絕服務攻擊(DDoS,Distributed Denial of Service)獲得快速壯大和日益氾濫。
成千上萬主機組成的僵屍網絡爲 DDoS 攻擊提供了所需的帶寬和主機,造成了規模巨大的攻擊和網絡流量,對被攻擊網絡形成了極大的危害。更加可怕的是 DDoS 並無完全的解決辦法,只能依靠各類手段和各個層次的防禦進行緩解。網絡
2015 年 12 月,國內一家雲廠商聲稱部署在其雲平臺上的一家知名遊戲公司遭遇了峯值流量達到每秒 453.8Gbps 的 DDoS 攻擊。
2016 年 9 月,爲全世界範圍內提供網站託管服務的法國公司 OVH 的創始人兼 CTO 在 Twitter 上發出了一張截圖,圖中顯示了 OVH 的多個服務器同時遭到了峯值接近 1Tbps 的 DDoS 攻擊。以下圖所示,能夠發現此次 DDoS 攻擊中單一攻擊的吞吐量最高就可達每秒 9300 萬個包,即 799Gbps。
分佈式
2016 年 10 月,黑客經過互聯網控制了美國大量的網絡攝像頭和相關的 DVR 錄像機,而後操縱這些肉雞攻擊了美國多個知名網站,包括 Twitter、Paypal、Spotify 在內的網站被迫中斷服務,這次攻擊影響了大半個美國互聯網。
工具
因而可知,DDoS 攻擊正變得愈來愈嚴重,動輒上百 Gbps 的攻擊都十分常見,而且,這樣的攻擊只會愈來愈大型。並且,隨着網絡安全界和黑帽子掌握愈來愈多的互聯網資源,攻擊複雜性也一直在增長,相應的,業務和應用所面臨的網絡 DDoS 挑戰也不斷增多。
所以,咱們必須在 DDoS 威脅、影響關鍵業務和應用以前,對流量進行檢測並加以清洗,確保網絡正常穩定的運行以及業務的正常開展。網站
通常而言,咱們會根據針對的協議類型和攻擊方式的不一樣,把 DDoS 分紅 SYN Flood、ACK Flood、UDP Flood、NTP Flood、SSDP Flood、DNS Flood、HTTP Flood、ICMP Flood、CC 等各種攻擊類型。
每一種攻擊類型都有其特色,而反射型的 DDoS 攻擊是一種新的變種。攻擊者並不直接攻擊目標服務 IP,而是利用互聯網的某些特殊服務開放的服務器,經過僞造被攻擊者的 IP 地址、向有開放服務的服務器發送構造的請求報文,該服務器會將數倍於請求報文的回覆數據發送到被攻擊 IP,從而對後者間接造成 DDoS 攻擊。
以下圖所示,這裏的攻擊者(Attacker,實際狀況中更多的會利用傀儡機進行攻擊)不直接把攻擊包發給受害者,而是冒充受害者給放大器(Amplifiers)發包,而後經過放大器再反射給受害者。
ui
在反射型攻擊中,攻擊者利用了網絡協議的缺陷或者漏洞進行 IP 欺騙,主要是由於不少協議(例如 ICMP,UDP 等)對源 IP 不進行認證。同時,要達到更好的攻擊效果,黑客通常會選擇具備放大效果的協議服務進行攻擊。總結一下就是利用 IP 欺騙進行反射和放大,從而達到四兩撥千斤的效果。spa
Smurf 攻擊是經典的 DDoS 攻擊,Smurf 攻擊是以最初發動這種攻擊的程序名 Smurf 來命名。這種攻擊方法結合使用了 IP 欺騙和 ICMP 回覆方法使大量網絡傳輸充斥目標系統,引發目標系統拒絕爲正常系統進行服務。
命令行
攻擊的過程大體是這樣的:Attacker 向一個具備大量主機和因特網鏈接的網絡廣播地址發送一個欺騙性 Ping 包,而欺騙性 Ping 分組的源地址就是 Victim(9.9.9.9)但願攻擊的目標。路由器接收到這個發送給 IP 廣播地址(1.1.1.255)的分組後,因爲 ICMP 並不會進行握手而驗證源 IP 地址,路由器認爲這就是廣播分組,進而會對本地網段中的全部主機(1.1.1.2,1.1.1.3,1.1.1.4,1.1.1.5,1.1.1.6) 進行廣播。網段中的全部主機都會向欺騙性分組的 IP 地址發送 echo 響應信息。若是這是一個很大的以太網段,可能會有上百臺主機對收到的 echo 請求進行回覆,這些目標系統很快就會被大量的 echo 信息吞沒,這樣就能垂手可得地阻止該系統處理其它任何網絡傳輸,從而達到拒絕爲正常系統服務的結果。
這種攻擊不只影響目標系統,還影響目標公司的因特網鏈接。那麼如何防止這種類型的攻擊?
a. 阻塞 Smurf 攻擊的源頭。Smurf 攻擊依靠攻擊者的力量使用欺騙性源地址發送 echo 請求,用戶可使用路由器的訪問控制來保證內部網絡中發出的全部傳輸信息都具備合法的源地址,以防止這種攻擊。
b. 阻塞 Smurf 的反彈站點。用戶能夠有兩種選擇以阻塞 Smurf 攻擊的反彈站點。第一種方法能夠經過 ACL 阻止全部入站 echo 請求,這樣能夠防止這些分組到達本身的網絡。若是不能阻塞全部入站 echo 請求,用戶就須要讓本身的路由器把網絡廣播地址映射成爲 LAN 廣播地址。3d
DNS 服務是整個互聯網的基礎服務,在咱們連接互聯網的時候,須要經過 DNS 解析將域名轉化成對應的 IP 地址。理論上來講 ISP 的 DNS 服務器只響應來自它本身客戶 IP 的 DNS Query 響應,但事實上互聯網上大量 DNS 服務的默認配置缺失,致使了會響應全部 IP 的 DNS Query 請求。
同時,DNS 大部分使用 UDP 協議,UDP 協議沒有握手過程讓其去驗證請求的源 IP。以下圖所示,攻擊者(其實是攻擊者控制的傀儡機)發送大量僞造了 Victim IP 的請求給 DNS 服務器,DNS 服務器成爲放大器將 DNS 響應回覆給受害者。
下面再來看一下 DNS 如何將請求數據包進行放大,輸入(x.x.x.x爲 DNS 服務器 IP):
dig ANY isc.org @x.x.x.x
返回結果,這裏爲了節約篇幅,咱們省略了大部分的響應內容。咱們能夠看到,響應的內容遠遠大於請求的數據包內容,這裏就產生了放大的效果。
; <<>> DiG 9.7.3 <<>> ANYisc.org @x.x.x.x
;; global options: +cmd
;; Got answer:
………………………………….此處省略具體請求內容…………………………………………
isc.org. 484 IN RRSIG A 5 2 7200 20121125230752 20121026230752 4442 isc.org. ViS+qg95DibkkZ5kbL8vCBpRUqI2/M9UwthPVCXl8ciglLftiMC9WUzq Ul3FBbri5CKD/YNXqyvjxyvmZfkQLDUmffjDB+ZGqBxSpG8j1fDwK6n1 hWbKf7QSe4LuJZyEgXFEkP16CmVyZCTITUh2TNDmRgsoxrvrOqOePWhp 8+E=
不幸的是,目前互聯網上存在大量的 DNS 服務器能夠被利用,黑客使用網絡掃描器工具能夠很容易的發現這些 DNS 服務器並加以利用。這須要:
a. 若是您是 DNS 的管理員,須要加固 DNS 服務器,能夠按照下面的配置關閉遞歸功能和限制可查詢的 IP 地址。
options { recursion no;};
options { allow-query {192.168.1.0/24;};};
b. 若是是受害者,首先能夠經過網絡層的 ACL 規則來防護, 或者使用抗 DDoS 系統進行流量清洗,目前大部分的雲服務商都有這類功能。
NTP 是網絡時間協議(Network Time Protocol)的簡稱,是用來使計算機時間同步化的網絡協議。NTP 包含一個 monlist 功能,也被稱爲 MON_GETLIST,主要用於監控 NTP 服務器,NTP 服務器響應 monlist 後就會返回與 NTP 服務器進行過期間同步的最後 600 個客戶端的 IP,響應包按照每 6 個 IP 進行分割,最多有 100 個響應包。咱們能夠經過 ntpdc 命令向一個 NTP 服務器發送 monlist 以及結合抓包來看下實際的效果。
ntpdc -n -c monlist x.x.x.x | wc -l
602
在上面的命令行中咱們能夠看到一次含有 monlist 的請求收到了 602 行數據,除去頭兩行是無效數據外,正好是 600 個客戶端 IP 列表,而且從上圖中的 wireshark 中咱們也可看到顯示有 101 個 NTP 協議的包,除去一個請求包,正好是 100 個響應包。
a. 若是做爲 NTP 管理員,須要加固 NTP 服務,NTP 服務器升級到 4.2.7p26 或者更高的版本。關閉如今 NTP 服務的 monlist 功能,在ntp.conf 配置文件中增長選項
disable monitor
b. 若是是受害者,如何防護 NTP 反射和放大攻擊?首先能夠經過網絡層的 ACL 規則來防護, 或者使用抗 DDoS 系統進行流量清洗,目前大部分的雲服務商都有這類功能。
互聯網上家用路由器、網絡攝像頭、打印機、智能家電等智能設備廣泛採用 UPnP(即插即用)協議做爲網絡通信協議, 而 UPnP 設備的發現是經過源端口爲 1900 的 SSDP(簡單服務發現協議)進行相互感知。
利用 SSDP 協議進行反射攻擊的原理與利用 DNS 服務、NTP 服務相似,都是僞形成被攻擊者的 IP 地址向互聯網上大量的智能設備發起 SSDP 請求,接收到請求的智能設備根據源 IP 地址將響應數據包返回給受害者。隨着物聯網和智能設備的快速發展和普及,利用智能設備展開 DDoS 攻擊會愈來愈廣泛。SSDP 的請求報文示例以下:
M-SEARCH * HTTP/1.1
HOST: 1.2.2.3:1900
MAN: 「ssdp:discover」
MX: 1
ST: urn:dial-multiscreen-org:service:dial:1
返回的報文以下:
HTTP/1.1 200 OK
CACHE-CONTROL: max-age = 60
EXT:
LOCATION: 1.2.3.4:5200/Printer.xml
SERVER: Network Printer Server UPnP/1.0 OS 1.29.00.44 06-17-2009
ST: upnp:rootdevice
USN: uuid:Samsung-Printer-1_0-mrgutenberg::upnp:rootdevice
那麼該如何防禦 SSDP 攻擊呢?
a. 對於不須要即插即用服務的設備,關閉即插即用服務。
b. 在被 SSDP DDoS 攻擊的時候,經過網絡設備的 ACL 規則過濾 SSDP 指紋過濾。或者引入 DDoS 防禦系統。
這裏咱們引入一個學術名詞,帶寬放大因子(BAF, Bandwidth Amplification Factor),它表示的是請求報文與響應報文的比例。對於各類協議的反射放大攻擊,因爲其不一樣版本的實現機制各不相同,加上對請求數據支持的多樣性,同一服務的 BAF 值也會存有必定的差別,咱們經過實驗對比了各類協議的實驗 BAF,可讓你們直觀感覺各類反射攻擊的威力,瞭解攻擊放大的倍數。
反射 DDoS 攻擊因爲難以追蹤、且不須要大量的肉雞等特色,愈來愈流行,勢必會對業務形成很大的威脅。除了須要各方通力合做對互聯網上的設備和服務進行安全管理和安全配置消除反射站點以外,還須要在服務端作好防護準備,好比增長 ACL 過濾規則和 DDoS 清洗服務。目前大量的雲廠商都提供 DDoS 流量的清洗服務,能夠直接使用。
瞭解 網易雲 :
網易雲官網:https://www.163yun.com/
新用戶大禮包:https://www.163yun.com/gift
網易雲社區:https://sq.163yun.com/