DDOS攻擊攻擊種類和原理

一、攻擊方式linux

到目前爲止,進行DDoS攻擊的防護仍是比較困難的。首先,這種攻擊的特色是它利用了TCP/IP協議的漏洞,
除非你不用TCP/IP,纔有可能徹底抵禦住DDoS攻擊。不過這不等於咱們就沒有辦法阻擋DDoS攻擊,
咱們能夠盡力來減小DDoS的攻擊。數據庫

二、攻擊種類分爲三種:一、Denial of Service(簡稱DoS攻擊也就是拒絕服務)

二、Distributed Denial of Service(簡稱DDoS攻擊也就是分佈式拒絕服務)windows

三、Distributed Reflection Denial of Service(簡稱DRDoS攻擊也就是分佈反射式拒絕服務)緩存

目前這三種攻擊方法最厲害的是第二種Distributed Denial of Service(簡稱DDoS攻擊也就是分佈式拒絕服務),
雖然第三種Distributed Reflection Denial of Service(簡稱DRDoS攻擊也就是分佈反射式拒絕服務)是最近
新出的攻擊方法,可是他只是DDoS也就是分佈式拒絕服務的變形,惟一的區別是不用佔領大量的「肉雞」
(肉雞也稱傀儡機,是指能夠被黑客遠程控制的機器。好比用"灰鴿子"等誘導客戶點擊或者電腦被黑客攻破或用戶電腦有漏洞被種植了木馬,
黑客能夠隨意操縱它並利用它作任何事情。肉雞一般被用做DDOS攻擊。能夠是各類系統,如windows、linux、unix等,更能夠是一家公司、企業、
學校甚至是政府軍隊的服務器。) 以上三種攻擊方式都是利用TCP三次握手的漏洞進行攻擊的服務器

tcp握手的簡單解釋:第一次握手:主機A發送位碼爲syn=1,隨機產生seq number=1234567的數據包到服務器,主機B由SYN=1知道,A要求創建聯機;網絡

第二次握手:主機B收到請求後要確認聯機信息,向A發送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq=7654321的包tcp

第三次握手:主機A收到後檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否爲1,若正確,主機A會再發送
ack number=(主機B的seq+1),ack=1,主機B收到後確認seq值與ack=1則鏈接創建成功。分佈式

完成三次握手,主機A與主機B開始傳送數據 seq(序列號) syn(tcp/ip創建鏈接時的握手信號) ack(能確認信息的傳輸控制字符)工具


三、攻擊原理網站

SYN攻擊是當前網絡上最爲常見DDos攻擊,也是最爲經典的拒絕服務攻擊,它利用了TCP協議實現上的一個缺陷,
經過向網絡服務所在端口發送大量的僞造源地址的攻擊報文,就可能形成目標服務器中的半開鏈接隊列被佔滿,
從而阻止其它合法用戶進行訪問。

這種攻擊從1996年至今不少操做系統,甚至防火牆、路由器都沒法有效地防護這種攻擊,並且因爲它能夠方便地僞造源地址,追查起來很是困難。
它的數據包特徵一般是,源發送了大量的SYN包,而且缺乏三次握手的最後一步握手ACK回覆。

DDoS攻擊它的原理說白了就是羣毆,用好多的機器對目標機器一塊兒發動DoS攻擊,可是這種攻擊並非多名黑客同時攻擊而大可能是由一名黑客獨自操做來完成
而它所用到的攻擊方法就是經過網絡佔領不少的「肉雞」也就是她以前感染的所中病毒的電腦並進行控制來發動DDoS攻擊因此咱們稱它爲分佈式拒絕服務。


四、防護方法

1. 確保服務器的系統文件是最新的版本,並及時更新系統補丁。

2. 關閉沒必要要的服務。

3. 限制同時打開的SYN半鏈接數目。

4. 縮短SYN半鏈接的time out 時間。

5. 正確設置防火牆

禁止對主機的非開放服務的訪問
限制特定IP地址的訪問
啓用防火牆的防DDoS的屬性
嚴格限制對外開放的服務器的向外訪問
運行端口映射程序禍端口掃描程序,要認真檢查特權端口和非特權端口。

6. 認真檢查網絡設備和主機/服務器系統的日誌。只要日誌出現漏洞或是時間變動,那這臺機器就可能遭到了攻擊。

7. 限制在防火牆外與網絡文件共享。(這樣會給黑客截取系統文件的機會,主機的信息暴露給黑客無疑是給了對方入侵的機會。)

8. 路由器

以Cisco路由器爲例
Cisco Express Forwarding(CEF)
使用 unicast reverse-path(單播反向路徑)
訪問控制列表(ACL)過濾
設置SYN數據包流量速率
升級版本太低的ISO
爲路由器創建log server

DRDoS分佈反射式拒絕服務攻擊這是DDoS攻擊的變形,它與DDoS的不一樣之處就是DrDoS不須要在攻擊以前佔領大量的"肉雞"。它的攻擊原理和Smurf攻擊原理相近,不過DRDoS是能夠在廣域網上進行的,而Smurf攻擊是在局域網進行的。它的做用原理是基於廣播地址與迴應請求的。一臺計算機向另外一臺計算機發送一些特殊的數據包如ping請求時,會接到它的迴應;若是向本網絡的廣播地址發送請求包,實際上會到達網絡上全部的計算機,這時就會獲得全部計算機的迴應。這些迴應是須要被接收的計算機處理的,每處理一個就要佔用一份系統資源,若是同時接到網絡上全部計算機的迴應,接收方的系統是有可能吃不消的,就象遭到了DDoS攻擊同樣。不過是沒有人笨到本身攻擊本身,不過這種方法被黑客加以改進就具備很大的威力了。黑客向廣播地址發送請求包,全部的計算機獲得請求後,卻不會把迴應發到黑客那裏,而是發到被攻擊主機。這是由於黑客冒充了被攻擊主機。黑客發送請求包所用的軟件是能夠僞造源地址的,接到僞造數據包的主機會根據源地址把迴應發出去,這固然就是被攻擊主機的地址。黑客同時還會把發送請求包的時間間隔減少,這樣在短期能發出大量的請求包,使被攻擊主機接到從被欺騙計算機那裏傳來的洪水般的迴應,就像遭到了DDoS攻擊致使系統崩潰。駭客藉助了網絡中全部計算機來攻擊受害者,而不須要事先去佔領這些被欺騙的主機,這就是Smurf攻擊。而DRDoS攻擊正是這個原理,黑客一樣利用特殊的發包工具,首先把僞造了源地址的SYN鏈接請求包發送到那些被欺騙的計算機上,根據TCP三次握手的規則,這些計算機會向源IP發出SYN+ACK或RST包來響應這個請求。同Smurf攻擊同樣,黑客所發送的請求包的源IP地址是被攻擊主機的地址,這樣受欺騙的主機就都會把迴應發到被攻擊主機處,形成被攻擊主機忙於處理這些迴應而癱瘓。

DDoS究竟如何攻擊?目前最流行也是最好用的攻擊方法就是使用SYN-Flood進行攻擊,SYN-Flood也就是SYN洪水攻擊。SYN-Flood不會完成TCP三次握手的第三步,也就是不發送確認鏈接的信息給服務器。這樣,服務器沒法完成第三次握手,但服務器不會當即放棄,服務器會不停的重試並等待必定的時間後放棄這個未完成的鏈接,這段時間叫作SYN timeout,這段時間大約30秒-2分鐘左右。如果一個用戶在鏈接時出現問題致使服務器的一個線程等待1分鐘並非什麼大不了的問題,可是如有人用特殊的軟件大量模擬這種狀況,那後果就可想而知了。一個服務器如果處理這些大量的半鏈接信息而消耗大量的系統資源和網絡帶寬,這樣服務器就不會再有空餘去處理普通用戶的正常請求(由於客戶的正常請求比率很小)。這樣這個服務器就沒法工做了,這種攻擊就叫作:SYN-Flood攻擊。

到目前爲止,進行DDoS攻擊的防護仍是比較困難的。首先,這種攻擊的特色是它利用了TCP/IP協議的漏洞,除非你不用TCP/IP,纔有可能徹底抵禦住DDoS攻擊。不過這不等於咱們就沒有辦法阻擋DDoS攻擊,咱們能夠盡力來減小DDoS的攻擊。下面就是一些防護方法:

1. 確保服務器的系統文件是最新的版本,並及時更新系統補丁。

2. 關閉沒必要要的服務。

3. 限制同時打開的SYN半鏈接數目。

4. 縮短SYN半鏈接的time out 時間。

5. 正確設置防火牆

  • 禁止對主機的非開放服務的訪問
  • 限制特定IP地址的訪問
  • 啓用防火牆的防DDoS的屬性
  • 嚴格限制對外開放的服務器的向外訪問
  • 運行端口映射程序禍端口掃描程序,要認真檢查特權端口和非特權端口。

6. 認真檢查網絡設備和主機/服務器系統的日誌。只要日誌出現漏洞或是時間變動,那這臺機器就可   能遭到了攻擊。

7. 限制在防火牆外與網絡文件共享。這樣會給黑客截取系統文件的機會,主機的信息暴露給黑客,   無疑是給了對方入侵的機會。

8. 路由器

以Cisco路由器爲例

  • Cisco Express Forwarding(CEF)
  • 使用 unicast reverse-path
  • 訪問控制列表(ACL)過濾
  • 設置SYN數據包流量速率
  • 升級版本太低的ISO
  • 爲路由器創建log server

可以瞭解DDoS攻擊的原理,對咱們防護的措施在加以改進,咱們就能夠擋住一部分的DDoS攻擊。

ACK Flood攻擊

ACK Flood攻擊是在TCP鏈接創建以後,全部的數據傳輸TCP報文都是帶有ACK標誌位的,主機在接收到一個帶有ACK標誌位的數據包的時候,須要檢查該數據包所表示的鏈接四元組是否存在,若是存在則檢查該數據包所表示的狀態是否合法,而後再向應用層傳遞該數據包。若是在檢查中發現該數據包不合法,例如該數據包所指向的目的端口在本機並未開放,則主機操做系統協議棧會迴應RST包告訴對方此端口不存在。

UDP Flood攻擊

UDP Flood是日漸猖厥的流量型DoS攻擊,原理也很簡單。常見的狀況是利用大量UDP小包衝擊DNS服務器或Radius認證服務器、流媒體視頻服務器。 100k pps的UDP Flood常常將線路上的骨幹設備例如防火牆打癱,形成整個網段的癱瘓。因爲UDP協議是一種無鏈接的服務,在UDP FLOOD攻擊中,攻擊者可發送大量僞造源IP地址的小UDP包。可是,因爲UDP協議是無鏈接性的,因此只要開了一個UDP的端口提供相關服務的話,那麼就可針對相關的服務進行攻擊。

ICMP Flood攻擊

ICMP Flood 的攻擊原理和ACK Flood原理相似,屬於流量型的攻擊方式,也是利用大的流量給服務器帶來較大的負載,影響服務器的正常服務。因爲目前不少防火牆直接過濾ICMP報文,所以ICMP Flood出現的頻度較低。

Connection Flood攻擊

Connection Flood是典型的而且很是有效的利用小流量衝擊大帶寬網絡服務的攻擊方式,,這種攻擊方式目前已經愈來愈猖獗。這種攻擊的原理是利用真實的IP地址向服務器發起大量的鏈接,而且創建鏈接以後很長時間不釋放,佔用服務器的資源,形成服務器服務器上殘餘鏈接(WAIT狀態)過多,效率下降,甚至資源耗盡,沒法響應其餘客戶所發起的鏈接。

其中一種攻擊方法是每秒鐘向服務器發起大量的鏈接請求,這相似於固定源IP的SYN Flood攻擊,不一樣的是採用了真實的源IP地址。一般這能夠在防火牆上限制每一個源IP地址每秒鐘的鏈接數來達到防禦目的。但如今已有工具採用慢速鏈接的方式,也即幾秒鐘才和服務器創建一個鏈接,鏈接創建成功以後並不釋放並定時發送垃圾數據包給服務器使鏈接得以長時間保持。這樣一個IP地址就能夠和服務器創建成百上千的鏈接,而服務器能夠承受的鏈接數是有限的,這就達到了拒絕服務的效果。

HTTP Get攻擊

用MSSQLServer、MySQLServer、Oracle等數據庫的網站系統而設計的,特徵是和服務器創建正常的TCP鏈接,並不斷的向腳本程序提交查詢、列表等大量耗費數據庫資源的調用,典型的以小博大的攻擊方法。通常來講,提交一個GET或POST指令對客戶端的耗費和帶寬的佔用是幾乎能夠忽略的,而服務器爲處理此請求卻可能要從上萬條記錄中去查出某個記錄,這種處理過程對資源的耗費是很大的,常見的數據庫服務器不多能支持數百個查詢指令同時執行,而這對於客戶端來講倒是垂手可得的,所以攻擊者只需經過Proxy代理向主機服務器大量遞交查詢指令,只需數分鐘就會把服務器資源消耗掉而致使拒絕服務,常見的現象就是網站慢如蝸牛、ASP程序失效、PHP鏈接數據庫失敗、數據庫主程序佔用CPU偏高。這種攻擊的特色是能夠徹底繞過普通的防火牆防禦,輕鬆找一些Proxy代理就可實施攻擊,缺點是對付只有靜態頁面的網站效果會大打折扣,而且有些Proxy會暴露攻擊者的IP地址。

UDP DNS Query Flood攻擊

UDP DNS Query Flood攻擊採用的方法是向被攻擊的服務器發送大量的域名解析請求,一般請求解析的域名是隨機生成或者是網絡世界上根本不存在的域名,被攻擊的DNS 服務器在接收到域名解析請求的時候首先會在服務器上查找是否有對應的緩存,若是查找不到而且該域名沒法直接由服務器解析的時候,DNS 服務器會向其上層DNS服務器遞歸查詢域名信息。域名解析的過程給服務器帶來了很大的負載,每秒鐘域名解析請求超過必定的數量就會形成DNS服務器解析域名超時。

根據微軟的統計數據,一臺DNS服務器所能承受的動態域名查詢的上限是每秒鐘9000個請求。而咱們知道,在一臺P3的PC機上能夠輕易地構造出每秒鐘幾萬個域名解析請求,足以使一臺硬件配置極高的DNS服務器癱瘓,因而可知DNS 服務器的脆弱性。同時須要注意的是,蠕蟲擴散也會帶來大量的域名解析請求。

相關文章
相關標籤/搜索