基本介紹
- 中文名:分散式拒絕服務攻擊
- 外文名:Distributed denial of service attack
- 目標:DoS攻擊
- 藉助:伺服器技術
定義
攻擊方式
- IP Spoofing
- LAND attack
- ICMP floods
- Application
攻擊現象
攻擊特點
分散式拒絕服務攻擊採取的攻擊手段就是分散式的,在攻擊的模式改變了傳統的點對點的攻擊模式,使攻擊方式出現了沒有規律的情況,而且在進行攻擊的時候,通常使用的也是常見的協定和服務,這樣只是從協定和服務的類型上是很難對攻擊進行區分的。在進行攻擊的時候,攻擊數據包都是經過偽裝的,在源IP 地址上也是進行偽造的,這樣就很難對攻擊進行地址的確定,在查找方面也是很難的。這樣就導致了分散式拒絕服務攻擊在檢驗方法上是很難做到的。
攻擊特性
對分散式攻擊進行必要的分析,就可以得到這種攻擊的特性。分散式拒絕服務在進行攻擊的時候,要對攻擊目標的流量地址進行集中,然後在攻擊的時候不會出現擁塞控制。在進行攻擊的時候會選擇使用隨機的連線埠來進行攻擊,會通過數千連線埠對攻擊的目標傳送大量的數據包,使用固定的連線埠進行攻擊的時候,會向同一個連線埠傳送大量的數據包。
分類
按照TCP/IP協定的層次可將DDOS攻擊分為基於ARP的攻擊、基於ICMP的攻擊、基於IP的攻擊、基於UDP的攻擊、基於TCP的攻擊和基於套用層的攻擊。
基於ARP
ARP是無連線的協定,當收到攻擊者傳送來的ARP應答時。它將接收ARP應答包中所提供的信息。更新ARP快取。因此,含有錯誤源地址信息的ARP請求和含有錯誤目標地址信息的ARP應答均會使上層套用忙於處理這種異常而無法回響外來請求,使得目標主機喪失網路通信能力。產生拒絕服務,如ARP重定向攻擊。
基於ICMP
攻擊者向一個子網的廣播地址傳送多個ICMP Echo請求數據包。並將源地址偽裝成想要攻擊的目標主機的地址。這樣,該子網上的所有主機均對此ICMP Echo請求包作出答覆,向被攻擊的目標主機傳送數據包,使該主機受到攻擊,導致網路阻塞。
基於IP
TCP/IP中的IP數據包在網路傳遞時,數據包可以分成更小的片段。到達目的地後再進行合併重裝。在實現分段重新組裝的進程中存在漏洞,缺乏必要的檢查。利用IP報文分片後重組的重疊現象攻擊伺服器,進而引起伺服器核心崩潰。如Teardrop是基於IP的攻擊。
基於TCP
基於套用層
流程
蒐集資料
占領
實際攻擊
防範
主機設定
網路設定
系統防禦
下列值確定觸發 SYN 保護的閾值。這一部分中的所有註冊表項和值都位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的下面。這些註冊表項和值是:
建議值: 5
有效值: 0 – 65535
說明:指定觸發 SYN 洪水攻擊保護所必須超過的 TCP 連線請求數的閾值。
值名稱: TcpMaxHalfOpen
建議的數值數據: 500
有效值: 100 – 65535
說明:在啟用 SynAttackProtect 後,該值指定處於 SYN_RCVD 狀態的 TCP 連線數的閾值。在超過 SynAttackProtect 後,將觸發 SYN 洪水攻擊保護。
值名稱: TcpMaxHalfOpenRetried
建議的數值數據: 400
有效值: 80 – 65535
說明:在啟用 SynAttackProtect 後,該值指定處於至少已傳送一次重傳的 SYN_RCVD 狀態中的 TCP 連線數的閾值。在超過 SynAttackProtect 後,將觸發 SYN 洪水攻擊保護。
這一部分中的所有註冊表項和值都位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的下面。這些註冊表項和值是:
建議的數值數據: 2
有效值: 0 – 255
說明:控制在回響一次 SYN 請求之後、在取消重傳嘗試之前 SYN-ACK 的重傳次數。
值名稱: TcpMaxDataRetransmissions
建議的數值數據: 2
有效值: 0 – 65535
說明:指定在終止連線之前 TCP 重傳一個數據段(不是連線請求段)的次數。
值名稱: EnablePMTUDiscovery
建議的數值數據: 0
有效值: 0, 1
說明:將該值設定為 1(默認值)可強制 TCP 查找在通向遠程主機的路徑上的最大傳輸單元或最大數據包大小。攻擊者可能將數據包強制分段,這會使堆疊不堪重負。對於不是來自本地子網的主機的連線,將該值指定為 0 可將最大傳輸單元強制設為 576 位元組。
值名稱: KeepAliveTime
建議的數值數據: 300000
有效值: 80 – 4294967295
說明:指定 TCP 嘗試通過傳送持續存活的數據包來驗證空閒連線是否仍然未被觸動的頻率。
建議的數值數據: 1
有效值: 0, 1
說明:指定計算機在收到名稱發布請求時是否發布其 NetBIOS 名稱。
值名稱 | 值 (REG_DWORD) |
SynAttackProtect | 2 |
TcpMaxPortsExhausted | 1 |
TcpMaxHalfOpen | 500 |
TcpMaxHalfOpenRetried | 400 |
TcpMaxConnectResponseRetransmissions | 2 |
TcpMaxDataRetransmissions | 2 |
EnablePMTUDiscovery | 0 |
KeepAliveTime | 300000(5 分鐘) |
NoNameReleaseOnDemand | 1 |
建議的數值數據: 0
有效值:0(禁用),1(啟用)
說明:通過將此註冊表值修改為 0,能夠在收到 ICMP 重定向數據包時禁止創建高成本的主機路由。
值名稱 | 值 (REG_DWORD) |
EnableICMPRedirect | 0 |
建議的數值數據: 0
有效值:0(禁用),1(啟用)
說明:禁止攻擊者強制切換到備用網關
值名稱 | 值 (REG_DWORD) |
EnableDeadGWDetect | 0 |
建議的數值數據: 1
有效值:0(禁用),1(啟用)
說明:指定 AFD.SYS 功能,以有效處理大量的 SYN_RCVD 連線。有關詳細信息,請參閱“Internet Server Unavailable Because of Malicious SYN Attacks”,
值名稱: MinimumDynamicBacklog
建議的數值數據: 20
有效值: 0 – 4294967295
說明:指定在偵聽的終結點上所允許的最小空閒連線數。如果空閒連線的數目低於該值,執行緒將被排隊,以創建更多的空閒連線
值名稱:MaximumDynamicBacklog
建議的數值數據: 20000
有效值: 0 – 4294967295
說明:指定空閒連線以及處於 SYN_RCVD 狀態的連線的最大總數。
值名稱: DynamicBacklogGrowthDelta
建議的數值數據: 10
有效值: 0 – 4294967295
默認情況下是否出現:否
說明:指定在需要增加連線時將要創建的空閒連線數。
值名稱 | 值 (REG_DWORD) |
EnableDynamicBacklog | 1 |
MinimumDynamicBacklog | 20 |
MaximumDynamicBacklog | 20000 |
DynamicBacklogGrowthDelta | 10 |
網路地址轉換 (NAT) 用於將網路與傳入連線禁止開來。攻擊者可能規避此禁止,以便使用 IP 源路由來確定網路拓撲。
建議的數值數據: 1
有效值:0(轉發所有數據包),1(不轉發源路由數據包),2(丟棄所有傳入的源路由數據包)。
說明:禁用 IP 源路由,後者允許傳送者確認數據報在網路中應採用的路由。
處理數據包片段可以是高成本的。雖然拒絕服務很少來自外圍網路內,但此設定能防止處理數據包片段。
建議的數值數據: 1
有效值:0(禁用),1(啟用)
說明:禁止 IP 堆疊接受數據包片段。
多播數據包可能被多台主機回響,從而導致回響淹沒網路。
建議的數值數據: 0
有效範圍:0 (false),1 (true)
說明:路由服務使用此參數來控制是否轉發 IP 多播。此參數由路由和遠程訪問服務創建。
多主機伺服器切勿在它所連線的網路之間轉發數據包。明顯的例外是防火牆。
建議的數值數據: 0
有效範圍:0 (false),1 (true)
說明:將此參數設定為 1 (true) 會使系統在它所連線的網路之間路由 IP 數據包。
可以使用 ICMP 數據包請求主機的子網掩碼。只泄漏此信息是無害的;但是,可以利用多台主機的回響來了解內部網路的情況。
建議的數值數據: 0
有效範圍:0 (false),1 (true)
說明:此參數控制計算機是否回響 ICMP 地址禁止請求。
值名稱 | 值 (REG_DWORD) |
DisableIPSourceRouting | 1 |
EnableFragmentChecking | 1 |
EnableMulticastForwarding | 0 |
IPEnableRouter | 0 |
EnableAddrMaskReply | 0 |
缺陷
攻擊原理
DDOS(分散式拒絕服務):凡是能導致合法用戶不能夠訪問正常網路服務的行為都算是拒絕服務攻擊。 也就是說拒絕服務攻擊的目的非常明確,就是要阻止合法用戶對正常網路資源的訪問,從而達成攻擊者不可告人的目的。
雖然同樣是拒絕服務攻擊,但是DDOS 和DOS 還是有所不同,DDOS的攻擊策略側重於通過很多“殭屍主機”(被攻擊者入侵過或可間接利用的主機)向受害主機傳送大量看似合法的網路包, 從而造成網路阻塞或伺服器資源耗盡而導致拒絕服務, 分散式拒絕服務攻擊一旦被實施, 攻擊網路包就會猶如洪水般湧向受害主機, 從而把合法用戶的網路包淹沒, 導致合法用戶無法正常訪問伺服器的網路資源, 因此, 拒絕服務攻擊又被稱之為 “洪水式攻擊” ,常見的 DDOS 攻擊手段有 SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood 等;而 DOS 則側重於通過對主機特定漏洞的利用攻擊導致網路棧失效、系統崩潰、 主機當機而無法提供正常的網路服務功能, 從而造成拒絕服務, 常見的 DOS 攻擊手段有 T earDrop、 Land、 Jolt、 IGMP Nuker、 Boink、 Smurf、 Bonk、OOB 等。就這兩種拒絕服務攻擊而言,危害較大的主要是 DDOS 攻擊,原因是很難防範,至於 DOS 攻擊,通過給主機伺服器打補丁或安裝防火牆軟體就可以很好地防範DDOS 的表現形式主要有兩種,一種為流量攻擊,主要是針對網路頻寬的攻擊,即大量攻擊包導致網路頻寬被阻塞, 合法網路包被虛假的攻擊包淹沒而無法到達主機; 另一種為資源耗盡攻擊,主要是針對伺服器主機的攻擊,即通過大量攻擊包導致主機的記憶體被耗盡或CPU 被核心及應用程式占完,造成的無法提供網路服務。
相對於流量攻擊而言, 資源耗盡攻擊要容易判斷一些, 假如平時 Ping 網站主機和訪問網站都是正常的,發現突然網站訪問非常緩慢或無法訪問了,而 Ping 還可以 Ping 通,則很可能遭受了資源耗盡攻擊 ,此時若在伺服器上用Nistat -na命令觀察到有大量的SYN_RECEIVED、TIME_W AIT、FIN_W AIT_1 等狀態存在,而EST BLISHED 很少,則可判定肯定是遭受了資源耗盡攻擊。還有一種屬於資源耗盡攻擊的現象是,Ping 自己的網站主機 Ping 不通或者是丟包嚴重,而 Ping 與自己的主機在同一交換機上的伺服器則正常,造成這種原因是網站主機遭受攻擊後導致系統核心或某些應用程式 CPU 利用率達到 100%無法回應 Ping 命令,其實頻寬還是有的,否則就 Ping 不通接在同一交換機上的主機了。
攻擊手段
當前主要有三種流行的 DDOS:
這種攻擊方法是經典最有效的 DDOS 方法, 可通殺各種系統的網路服務, 主要是通過向
受害主機傳送大量偽造源 IP 和源連線埠的 SYN 或 ACK 包,導致主機的快取資源被耗盡或忙
於傳送回應包而造成拒絕服務, 由於源都是偽造的故追蹤起來比較困難, 缺點是實施起來有
一定難度, 需要高頻寬的殭屍主機支持。 少量的這種攻擊會導致主機伺服器無法訪問, 但卻
可以 Ping 的通, 在伺服器上用 Netstat -na 命令會觀察到存在大量的 SYN_RECEIVED 狀態,
大量的這種攻擊會導致 Ping 失敗、TCP/IP 棧失效,並會出現系統凝固現象,即不回響鍵盤
和滑鼠。普通防火牆大多無法抵禦此種攻擊。
2、TCP 全連線攻擊:
這種攻擊是為了繞過常規防火牆的檢查而設計的,一般情況下,常規防火牆大多具備過
濾 T earDrop、Land 等 DOS 攻擊的能力,但對於正常的 TCP 連線是放過的,殊不知很多網
絡服務程式(如:IIS、Apache 等 W eb 伺服器)能接受的 TCP 連線數是有限的,一旦有大
量的 TCP 連線,即便是正常的,也會導致網站訪問非常緩慢甚至無法訪問,TCP 全連線攻
擊就是通過許多殭屍主機不斷地與受害伺服器建立大量的 TCP 連線,直到伺服器的記憶體等
資源被耗盡而被拖跨, 從而造成拒絕服務, 這種攻擊的特點是可繞過一般防火牆的防護而達
到攻擊目的,缺點是需要找很多殭屍主機,並且由於殭屍主機的 IP 是暴露的,因此容易被
追蹤。
3、刷 Script 腳本攻擊:
這種攻擊主要是針對存在 ASP、JSP、PHP、CGI 等腳本程式,並調用 MSSQLServer、
MySQLServer、Oracle 等資料庫的網站系統而設計的,特徵是和伺服器建立正常的 TCP 連
接, 並不斷的向腳本程式提交查詢、 列表等大量耗費資料庫資源的調用, 一般來說, 提交一
個 GET 或 POST 指令對客戶端的耗費和頻寬的占用是幾乎可以忽略的,而伺服器為處理此
請求卻可能要從上萬條記錄中去查出某個記錄, 這種處理過程對資源的耗費是很大的, 常見
的資料庫伺服器很少能支持數百個查詢指令同時執行,而這對於客戶端來說卻是輕而易舉
的, 因此攻擊者只需通過 Proxy 代理向主機伺服器大量遞交查詢指令, 只需數分鐘就會把服
務器資源消耗掉而導致拒絕服務,常見的現象就是網站慢如蝸牛、ASP 程式失效、PHP 連
接資料庫失敗、資料庫主程式占用 CPU 偏高。這種攻擊的特點是可以完全繞過普通的防火
牆防護, 輕鬆找一些 Proxy 代理就可實施攻擊, 缺點是對付只有靜態頁面的網站效果會大打
折扣,並且有些 Proxy 會暴露攻擊者的 IP 地址。
怎么抵禦 DDOS
僅僅依靠某種系統或產品防住 DDOS 是不現實的, 可以肯定的是, 完全杜絕 DDOS
是不可能的,但通過適當的措施抵禦 90%的 DDOS 攻擊是可以做到的,基於攻擊和防禦都
有成本開銷的緣故,若通過適當的辦法增強了抵禦 DDOS 的能力,也就意味著加大了攻擊
者的攻擊成本,那么絕大多數攻擊者將無法繼續下去而放棄,也就相當於成功的抵禦了
DDOS 攻擊。
防禦基礎
- 儘可能對系統載入最新補丁,並採取有效的合規性配置,降低漏洞利用風險;
- 採取合適的安全域劃分,配置防火牆、入侵檢測和防範系統,減緩攻擊。
- 採用分散式組網、負載均衡、提升系統容量等可靠性措施,增強總體服務能力。