SYN flood網路攻擊的原理及其防禦方法

2021-04-13 12:59:51 字數 4755 閱讀 3174

1 syn flood攻擊介紹:拒絕服務攻擊(denial of service,dos)是目前比較有效而又非常難於防禦的一種網路攻擊方式,它的目的就是使伺服器不能夠為正常訪問的使用者提供服務。所以,dos對一些緊密依靠網際網路開展業務的企業和組織帶來了致命的威脅。

syn flood是最為有效和流行的一種dos攻擊

形式。它利用tcp三次握手協議的缺陷,向目標主機傳送大量的偽造源位址的syn連線請求,消耗目標主機的資源,從而不能夠為正常使用者提供服務。

1.1 tcp連線建立的過程

要掌握syn flood攻擊的基本原理,必須先介紹tcp的三次握手機制。

tcp三次握手過程如下:

1)客戶端向伺服器端傳送乙個syn置位的tcp報文,包含客戶端使用的埠號和初始序列號

x;2)伺服器端收到客戶端傳送來的syn報文後,向客戶端傳送乙個syn和ack都置位的tcp報文,包含確認號為x+1和伺服器的初始序列號y;  

tcp客戶端

客戶端埠

(1024-65535)

tcp伺服器端

伺服器端口

(1-1023)

syn

syn/ack

ack3)客戶端收到伺服器返回的syn+ack報文後,向伺服器返回乙個確認號為y+1序號為x+1的ack報文,乙個標準的tcp連線完成。如圖1所示:

1.2 攻擊原理

在syn flood攻擊中,黑客機器向受害主機傳送大量偽造源位址的tcp syn報文,受害主機分配必要的資源,然後向源位址返回syn+ack包,並等待源端返回ack包,如圖2所示。由於源位址是偽造的,所以源端永遠都不會返回ack報文,受害主機繼續傳送syn+ack包,並將半連線放入埠的積壓佇列中,雖然一般的主機都有超時機制和預設的重傳次數,但是由於埠的半連線佇列的長度是有限的,如果不斷的向受害主機傳送大量的tcp syn報文,半連線佇列就會很快填滿,伺服器拒絕新的連線,將導致該埠無法響應其他機器進行的連線請求,最終使受害主機的資源耗盡。

tcp客戶端

客戶端埠

(1024-65535)

tcp伺服器端

伺服器端口

(1-1023)

syn

syn/ack

偽造源位址

2幾種防禦技術

syn flood攻擊給網際網路造成重大影響後,針對如何防禦syn flood攻擊出現了幾種比較有效的技術。

2.1   syn-cookie技術

一般情況下,當伺服器收到乙個tcp syn報文後,馬上為該連線請求分配緩衝區,然後返回乙個syn+ack報文,這時形成乙個半連線。syn flood正是利用了這一點,傳送大量的偽造源位址的syn連線請求,而不完成連線。這樣就大量的消耗的伺服器的資源。

syn-cookie技術針對標準tcp連線建立過程資源分配上的這一缺陷,改變了資源分配的策略。當伺服器收到乙個syn報文後,不立即分配緩衝區,而是利用連線的資訊生成乙個cookie,並將這個cookie作為將要返回的syn+ack報文的初始序列號。當客戶端返回乙個ack報文時,根據包頭資訊計算cookie,與返回的確認序列號(初始的序列號+1)的前24位進行對比,如果相同,則是乙個正常連線,然後,分配資源,建立連線。

該技術的巧妙之點在於避免了在連線資訊未完全到達前進行資源分配,使syn flood攻擊的資源消耗失效。實現的關鍵之處在於cookie的計算。cookie的計算應該做到包含本次連線的狀態資訊,使攻擊者不能偽造cookie。cookie的計算過程如下:

1)伺服器收到乙個syn包後,計算乙個訊息摘要mac:

mac = mac(a,k);

mac是密碼學中的乙個訊息認證碼函式,也就是滿足某種安全性質的帶金鑰的hash函式,它能夠提供cookie計算中需要的安全性。

a為客戶和伺服器雙方的ip位址和埠號以及引數t的串聯組合:

a = source_ip || source_port || dst_ip || dst_port || t

k為伺服器獨有的金鑰;

時間引數t為32比特長的時間計數器,每64秒加1;

2)生成cookie:

cookie = mac(0:24):表示取mac值的第0到24位元位;

3)設定將要返回的syn+ack報文的初始序列號,設定過程如下:

i.              高24位用cookie代替;

ii.              接下來的3位元位用客戶要求的最大報文長度mms代替;

iii.              最後5位元位為t mod 32。

客戶端收到來自伺服器syn+ack報文後,返回乙個ack報文,這個ack報文將帶乙個cookie(確認號為伺服器傳送過來的syn ack報文的初始序列號加1,所以不影響高24位),在伺服器端重新計算cookie,與確認號的前24位比較,如果相同,則說明未被修改,連線合法,然後,伺服器完成連線的建立過程。

syn-cookie技術由於在連線建立過程中不需要在伺服器端儲存任何資訊,實現了無狀態的三次握手,從而有效的防禦了syn flood攻擊。但是該方法也存在一些弱點。由於cookie的計算只涉及了包頭的部分信心,在連線建立過程中不在伺服器端儲存任何資訊,所以失去了協議的許多功能,比如,超時重傳。此外,由於計算cookie有一定的運算量,增加了連線建立的延遲時間,因此,syn-cookie技術不能作為高效能伺服器的防禦手段。通常採用動態資源分配機制,當分配了一定的資源後再採用cookie技術,linux就是這樣實現的。還有乙個問題是,當我們避免了syn flood攻擊的同時,同時也提供了另一種拒絕服務攻擊方式,攻擊者傳送大量的ack報文,使伺服器忙於計算驗證。儘管如此,在預防syn flood攻擊方面,syn-cookie技術仍然是一種有效的技術。

2.2  位址狀態監控的解決方法

位址狀態監控的解決方法是利用監控工具對網路中的有關tcp連線的資料報進行監控,並對監聽到的資料報進行處理。處理的主要依據是連線請求的源位址。

每個源位址都有乙個狀態與之對應,總共有四種狀態:

初態:任何源位址剛開始的狀態;

new狀態:第一次出現或出現多次也不能斷定存在的源位址的狀態;

good狀態:斷定存在的源位址所處的狀態;

bad狀態:源位址不存在或不可達時所處的狀態。

具體的動作和狀態轉換根據tcp頭中的位碼值決定:

1)監聽到syn包,如果源位址是第一次出現,則置該源位址的狀態為new狀態;如果是new狀態或bad狀態;則將該包的rst位置1然後重新發出去,如果是good狀態不作任何處理。

2)監聽到ack或rst包,如果源位址的狀態為new狀態,則轉為good狀態;如果是good狀態則不變;如果是bad狀態則轉為new狀態;如果是bad狀態則轉為new狀態。

3)監聽到從伺服器來的syn ack報文(目的位址為addr),表明伺服器已經為從addr發來的連線請求建立了乙個半連線,為防止建立的半連線過多,向伺服器傳送乙個ack包,建立連線,同時,開始計時,如果超時,還未收到ack報文,證明addr不可達,如果此時addr的狀態為good則轉為new狀態;如果addr的狀態為 new狀態則轉為bad狀態;如果為addr的狀態為bad狀態則不變。

狀態的轉換圖如圖3所示:

初態 good

new

bad

ack/rst

syn

ack/rst

ack包確認超時

ack/rst

ack包確認超時

下面分析一下基於位址狀態監控的方法如何能夠防禦syn flood攻擊。

1)對於乙個偽造源位址的syn報文,若源位址第一次出現,則源位址的狀態為new狀態,當監聽到伺服器的syn+ack報文,表明伺服器已經為該源位址的連線請求建立了半連線。此時,監控程式代源位址傳送乙個ack報文完成連線。這樣,半連線佇列中的半連線數不是很多。計時器開始計時,由於源位址是偽造的,所以不會收到ack報文,超時後,監控程式傳送rst資料報,伺服器釋放該連線,該源位址的狀態轉為bad狀態。之後,對於每乙個來自該源位址的syn報文,監控程式都會主動傳送乙個rst報文。

2)對於乙個合法的syn報文,若源位址第一次出現,則源位址的狀態為new狀態,伺服器響應請求,傳送syn+ack報文,監控程式傳送 ack報文,連線建立完畢。之後,來自客戶端的ack很快會到達,該源位址的狀態轉為good狀態。伺服器可以很好的處理重複到達的ack包。

從以上分析可以看出,基於監控的方法可以很好的防禦syn flood攻擊,而不影響正常使用者的連線。

3   小結

本文介紹了syn flood攻擊的基本原理,然後詳細描述了兩種比較有效和方便實施的防禦方法:syn-cookie技術和基於監控的源位址狀態技術。syn- cookie技術實現了無狀態的握手,避免了syn flood的資源消耗。基於監控的源位址狀態技術能夠對每乙個連線伺服器的ip位址的狀態進行監控,主動採取措施避免syn flood攻擊的影響。這兩種技術是目前所有的防禦syn flood攻擊的最為成熟和可行的技術。

參考文獻

1.   顏學雄,王清賢,李梅林.  syn flood攻擊原理與預防方法.  計算機應用,2000

2.   孫  曦,朱曉妍,王育林. ddos下的tcp洪流攻擊及對策. 網路安全技術與應用,2004

3.   李  磊,趙永祥,陳常嘉. tcp syn flooding原理及其應對策略. 網路與應用,2003

4.   陳  波. syn flood攻擊的原理、實現與防範. 計算機應用與研究,2003

原理,詳細地描述了目前幾種比較有效的兩種防禦措施:syn-

cookie

技術和位址狀態監控技術。 

SYN flood網路攻擊的原理及其防禦方法 zt

1.2 攻擊原理 在syn flood攻擊中,黑客機器向受害主機傳送大量偽造源位址的tcp syn報文,受害主機分配必要的資源,然後向源位址返回syn ack包,並等待源端返回ack包,如圖2所示。由於源位址是偽造的,所以源端永遠都不會返回ack報文,受害主機繼續傳送syn ack包,並將半連線放入...

Cisco 防止SYN Flood 攻擊原理

dos denial of service拒絕服務 和ddos distributed denial of service分布式拒絕服務 攻擊是大型 和網路伺服器的安全威脅之一。2000年2月,yahoo 亞馬遜 cnn被攻擊等事例,曾被刻在重大安全 事件的歷史中。syn flood由於其攻擊效果好...

什麼是SYN Flood攻擊

syn flood syn洪水 是種典型的dos denial of service,拒絕服務 攻擊。效果就是伺服器tcp連線資源耗盡,停止響應正常的tcp連線請求。說到原理,還得從tcp如何建立連線 connection 講起。通訊的雙方最少得經過3次成功的資訊交換才能進入連線全開狀態 full ...