㈠ 怎樣防止ACK攻擊
拒絕服務攻擊(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;
3)
TCP客戶端
客戶端埠
(1024-65535)
TCP伺服器端
伺服器埠
(1-1023)
SYN
SYN/ACK
ACK
客戶端收到伺服器返回的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
【轉自世紀安全網 http://www.21safe.com】
㈡ 關於防火牆論文的參考文獻!急!急急!
隨著計算機網路的飛速發展,網路安全越來越被人們所認識和重視,在維護網路正常運行方面越來越起到舉足輕重之作用,已成為當代信息社會的一個重要特徵。在眾多安全措施中,防火牆首當其中。以網路安全為中心,考慮網路的各個層面,整體把握網路在應用中的安全性。在構造防火牆的過程中,闡述進行設計防火牆的大部分概念和重要理論依據。介紹TCP/IP(傳輸控制協議/網際協議)協議以及防火牆常用的IP消息類型TCP(傳輸控制協議)、UDP(用戶數據報協議)、ICMP(網際控制報文協議)及其在網路傳輸中的作用、介紹數據輸出包、數據輸入包的概念及其基於防火牆中的思想。 從防火牆設計的邏輯關系來看,文中總體把握包過濾防火牆的思想,深入細致地介紹了網路會話的細節,基於輸入包和輸出包的過濾思想,如何有選擇性地開放Internet公共服務三方面重要的內容,並提供相關實例。文章在介紹相關安全防禦的同時對於常見的黑客攻擊原理也做了說明,包括TCP SYN湮沒攻擊、Ping湮沒攻擊、UDP湮沒攻擊等。 在防火牆實現上,本文是基於Redhat Linux操作系統,主要用Linux2.4內核中ipchains構造不同網路拓樸結構的防火牆。文中對防火牆工具ipchains及其參數進行了詳細的說明與描述,給出了具體的數據包過濾流程。從對防火牆機器的具體設置說起,介紹不同的網路體系結構並利用防火牆設計工具ipchains針對其各自設計,闡述防火牆設計的兩種安全策略:默認禁止一切和默認接受一切,並對其進行相互的比較,給出相關的腳本語言。文中針對單系統、堡壘防火牆屏蔽子網、帶DMZ(非軍事化區)防禦帶三種不同網路拓撲結構加以說明,闡述NAT(網路地址轉換)的原理和DMZ工作原理以及它們的相應網路拓撲結構。同時給出基於DNS服務的相關腳本。 本文主要針對中小型網路而設計基於Linux操作系統的包過濾防火牆,旨在保護其網路安全並節儉網路費用,為此實現NAT共享IP,屏蔽保護子網共享防火牆外網真實IP,達到偽裝保護且節儉網路費用之功效,從而減輕網路負擔;構造DMZ,將保護子網與網路伺服器分離,有效地解決伺服器提供網路服務與子網安全保護這一對矛盾,從而規劃有效的防火牆設計適應更加復雜的安全策略。 本論文設計的包過濾防火牆體系兼結構簡單、針對性強、投入費用少等特點,同時 為中小型企業構建和維護防火牆提供了相關的理論依據和參考。 試問你是大學生不,這是大學生防火牆論文的。我去年用的