1. 程式人生 > >拒絕服務型攻擊

拒絕服務型攻擊

拷貝自百度百科,感覺這個對理解tcp很有幫助

拒絕服務攻擊即是攻擊者想辦法讓目標機器停止提供服務,是黑客常用的攻擊手段之一。其實對網路頻寬進行的消耗性攻擊只是拒絕服務攻擊的一小部分,只要能夠對目標造成麻煩,使某些服務被暫停甚至主機宕機,都屬於拒絕服務攻擊。拒絕服務攻擊問題也一直得不到合理的解決,究其原因是因為網路協議本身的安全缺陷,從而拒絕服務攻擊也成為了攻擊者的終極手法。攻擊者進行拒絕服務攻擊,實際上讓伺服器實現兩種效果:一是迫使伺服器的緩衝區滿,不接收新的請求;二是使用IP欺騙,迫使伺服器把非法使用者的連線復位,影響合法使用者的連線

原理

編輯

SYN Flood

SYN Flood是當前最流行的
DoS
(拒絕服務攻擊)與DDoS(Distributed Denial Of Service分散式拒絕服務攻擊)的方式之一,這是一種利用TCP協議缺陷,傳送大量偽造的TCP連線請求,使被攻擊方資源耗盡(CPU滿負荷或記憶體不足)的攻擊方式。 SYN Flood攻擊的過程在TCP協議中被稱為三次握手(Three-way Handshake),而SYN Flood拒絕服務 典型的分散式拒絕服務攻擊網路結構圖典型的分散式拒絕服務攻擊網路結構圖 攻擊就是通過三次握手而實現的。 (1) 攻擊者向被攻擊伺服器傳送一個包含SYN標誌的TCP報文,SYN(Synchronize)即同步報文。同步報文會指明客戶端使用的以及TCP連線的初始序號。這時同被攻擊伺服器建立了第一次握手。 (2) 受害伺服器在收到攻擊者的SYN報文後,將返回一個SYN+ACK的報文,表示攻擊者的請求被接受,同時TCP序號被加一,ACK(Acknowledgment)即確認,這樣就同被攻擊伺服器建立了
第二次握手
。 (3) 攻擊者也返回一個確認報文ACK給受害伺服器,同樣TCP序列號被加一,到此一個TCP連線完成,三次握手完成。 具體原理是:TCP連線的三次握手中,假設一個使用者向伺服器傳送了SYN報文後突然宕機或掉線,那麼服 分散式拒絕服務攻擊網路結構圖分散式拒絕服務攻擊網路結構圖 務器在發出SYN+ACK應答報文後是無法收到客戶端的ACK報文的(第三次握手無法完成),這種情況下伺服器端一般會重試(再次傳送SYN+ACK給客戶端)並等待一段時間後丟棄這個未完成的連線。這段時間的長度我們稱為SYN Timeout,一般來說這個時間是分鐘的數量級(大約為30秒~2分鐘);一個使用者出現異常導致伺服器的一個執行緒等待1分鐘並不是什麼很大的問題,但如果有一個惡意的攻擊者大量模擬這種情況(偽造IP地址),伺服器端將為了維護一個非常大的半連線列表而消耗非常多的資源。即使是簡單的儲存並遍歷也會消耗非常多的
CPU
時間和記憶體,何況還要不斷對這個列表中的IP進行SYN+ACK的重試。實際上如果伺服器的TCP/IP棧不夠強大,最後的結果往往是堆疊溢位崩潰—— 即使伺服器端的系統足夠強大,伺服器端也將忙於處理攻擊者偽造的TCP連線請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之小),此時從正常客戶的角度看來,伺服器失去響應,這種情況就稱作:伺服器端受到了SYN Flood攻擊(SYN洪水攻擊)。 SYN COOKIE 防火牆是SYN cookie的一個擴充套件,SYN cookie是建立在TCP堆疊上的,他為linux作業系統提供保護。SYN cookie防火牆是linux的 一大特色,你可以使用一個防火牆來保護你的網路以避免遭受SYN洪水攻擊。 下面是SYN cookie防火牆的原理 client firewall server ------ ---------- ------ 1. SYN----------- - - - - - - - - - -> 2. <------------SYN-ACK(cookie) 3. ACK----------- - - - - - - - - - -> 4. - - - - - - -SYN---------------> 5. <- - - - - - - - - ------------SYN-ACK 6. - - - - - - -ACK---------------> 7. -----------> relay the -------> <----------- connection <------- 1:一個SYN包從C傳送到S 2:防火牆在這裡扮演了S的角色來回應一個帶SYN cookie的SYN-ACK包給C 3:C傳送ACK包,接著防火牆和C的連線就建立了。 4:防火牆這個時候扮演C的角色傳送一個SYN給S 5:S返回一個SYN給C 6:防火牆扮演C傳送一個ACK確認包給S,這個時候防火牆和S的連線也就建立了 7:防火牆轉發C和S間的資料 如果系統遭受SYN Flood,那麼第三步就不會有,而且無論在防火牆還是S都不會收到相應在第一步的SYN包,所以我們就擊退了這次SYN洪水攻擊。