TCP SYN洪水攻擊

2021-06-29 04:50:19 字數 2387 閱讀 6625

在檢視tcp標識位syn時,順便關注了一下syn flood,從網上查閱一些資料加以整理,syn洪水攻擊利用tcp三次握手。

1.syn洪水介紹

當乙個系統(客戶端c)嘗試和乙個提供了服務的系統(伺服器s)建立tcp連線,客戶端c和服務端s會交換一系列報文。 

正常的3次握手連線:首先是c傳送乙個syn報文給服務端s,然後這個服務端傳送乙個syn-ack包以回應c,接著,c就返回乙個ack包來實現一次完整的tcp連線。就這樣,c到服務端的連線就建立了,這時c和服務端就可以互相交換資料了。

syn洪水:在s返回乙個確認的syn-ack包的時候,s可能由於各種原因不會接到c回應的ack包。這個也就是所謂的半開放連線,s需要 耗費一定的數量的系統記憶體來等待這個未決的連線,雖然這個數量是受限,但是惡意者可以通過建立很多的半開放式連線來發動syn洪水攻擊 。

攻擊者可以通過ip欺騙傳送syn包給受害者系統,這個看起來是合法的,但事實上所謂的c根本不會進行ack回應服務端s的syn-ack報文,這意味著受害者將永遠不會接到ack報文。 而此時,半開放連線將最終耗用受害者所有的系統資源(即使等待ack包有超時限制),受害者將不能再接收任何其他的請求。

2.syn cookie

syn cookie用乙個cookie來響應tcp syn請求的tcp實現,在正常的tcp實現中,當s接收到乙個syn資料報,他返回 乙個syn-ack包來應答,然後進入tcp-syn-recv(半開放連線)狀態來等待最後返回的ack包。s用乙個資料空間來描述所有未決的連線, 然而這個資料空間的大小是有限的,所以攻擊者將塞滿這個空間。 在tcp syn cookie的執行過程中,當s接收到乙個syn包的時候,他返回乙個syn-ack包,這個資料報的ack序列號是經過加密的,也就是說,它由源位址,埠源次序,目標位址,目標埠和乙個加密種子計算得出。然後s釋放所有的狀態。如果乙個ack包從c返回, s將重新計算它來判斷它是不是上個syn-ack的返回包。如果這樣,s就可以直接進入tcp連線狀態並開啟連線。這樣,s就可以避免守侯半開放連線。(檢驗加密資料可能會帶來一定的cpu運算)

以上只是syn cookie的基本思路,它在應用過程中仍然有許多技巧,本人也沒有具體的實戰經驗。

3.syn cookie 防火牆

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 <------- 

####################c與防火牆建立連線開始####################

1:syn包從c傳送到s(計畫建立連線)

2:防火牆在這裡扮演s的角色來回應乙個帶syn cookie的syn-ack包給c 

3:如果c傳送ack包,接著防火牆和c的連線就建立了

####################c與防火牆建立連線結束###################

####################防火牆與s建立連線開始####################

4:防火牆這個時候扮演c的角色傳送乙個syn給s 

5:s返回乙個syn給c 

6:防火牆扮演c傳送乙個ack確認包給s,這個時候防火牆和s的連線也就建立了

###################防火牆與s建立連線結束####################

7:防火牆**c和s間的資料

如果系統遭受syn flood,那麼第三步就不會有,s不會收到相應在第一步的syn包,所以擊退了這次syn洪水攻擊。

Linux網路程式設計 ICMP洪水攻擊

一 icmp洪水攻擊的原理 icmp flood 是一種在ping基礎上形成的,但是用ping程式很少能造成目標機宕機的問題,這裡邊最大的問題是提高處理的速度,icmp洪水攻擊主要有以下3種方式。1 直接洪水攻擊 這樣做需要本地主機的頻寬與目標主機之間頻寬進行比拼,可以採用多執行緒的方法一次性得傳送...

Linux網路程式設計 UDP洪水攻擊

udp攻擊,又稱udp洪水攻擊或udp淹沒攻擊 英文 udp flood attack 是導致基於主機的服務拒絕攻擊的一種。udp 是一種無連線的協議,而且它不需要用任何程式建立連線來傳輸資料。當受害系統接收到乙個 udp 資料報的時候,它會確定目的埠正在等待中的 應用程式。當它發現該埠中並不存在正...

Linux網路程式設計之UDP洪水攻擊

1.概述 udp攻擊向目標主機的udp埠傳送大量的udp報文,造成目標主機的埠堵塞,達到攻擊的目的。建立多執行緒,利用原始套接字封裝udp與ip的首部,然後傳送udp報文,攻擊目標主機.2.udp攻擊例項 include include include include include include...