SYN flood網絡攻擊的原理及其防備方法
發表時間:2023-05-31 來源:明輝站整理相關軟件相關文章人氣:
[摘要]拒絕服務攻擊(Denial of Service, dos)是目前比較有效而又非常難于防御的一種網絡攻擊方式, 它的目的就是使服務器不能夠為正常訪問的用戶提供服務。 所以, dos對一些緊密依靠互...
拒絕服務攻擊(Denial of Service, dos)是目前比較有效而又非常難于防御的一種網絡攻擊方式, 它的目的就是使服務器不能夠為正常訪問的用戶提供服務。 所以, dos對一些緊密依靠互聯網開展業務的企業和組織帶來了致命的威脅。
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;
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報文, 半連接隊列就會很快填滿, 服務器拒絕新的連接, 將導致該端口無法響應其他機器進行的連接請求, 最終使受害主機的資源耗盡。
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攻擊的最為成熟和可行的技術。
上面是電腦上網安全的一些基礎常識,學習了安全知識,幾乎可以讓你免費電腦中毒的煩擾。