SYN包與SYN攻擊原理

什麼是SYN包?SYN包是什麼意思?
TCP連接的第一個包,非常小的一種數據包。SYN攻擊包括大量此類的包,由於這些包看上去來自實際不存在的站點,因此無法有效進行處理。
當兩臺計算機在TCP連接上進行會話時,連接一定會首先被初始化。完成這項任務的包叫作SYN。一個SYN包簡單的表明另一臺計算機已經做好了會話的準備。只有發出服務請求的計算機才發送SYN包。所以如果你僅拒絕進來的SYN包,它將終止其它計算機打開你計算機上的服務,但是不會終止你使用其它計算機上的服務,如果它沒有拒絕你發送的SYN包的話。
SYN攻擊
最近對SYN Flood特別感興趣,看到一個關於SYN cookie firewall的文章,在google搜了一下,沒中文的,翻譯他一下  本文介紹了4個概念 一:介紹SYN 二:什麼是SYN洪水攻擊 三:什麼是SYN cookie 四:什麼是SYN cookie防火牆 C=client(客戶器) S=Server(服務器) FW=Firewall(防火牆) 一:介紹SYN SYN cookie是一個防止SYN洪水攻擊技術。他由D. J. BernsteinEric Schenk發明。現在SYN COOKIE已經是linux內核的一部分了(我插一句 ,默認的statno,但是在linux系統的執行過程中它只保護linux系統。我們這裏只是說創建一個linux防火牆,他可以爲整個網絡和所有的網 絡操作系統提供SYN COOKIE保護你可以用這個防火牆來阻斷半開放式tcp連接,所以這個受保護的系統不會進入半開放狀態(TCP_SYN_RECV)。當 連接完全建立的時候,客戶機到服務器的連接要通過防火牆來中轉完成。 二:什麼是SYN洪水攻擊?(來自CERT的警告) 當一個系統(我們叫他客戶端)嘗試和一個提供了服務的系統(服務器)建立TCP連接,C和服務端會交換一系列報文。 這種連接技術廣泛的應用在各種TCP連接中,例如telnet,Web,email,等等。 首先是C發送一個SYN報文給服務端,然後這個服務端發送一個SYN-ACK包以迴應C,接着,C就返回一個ACK包來實現一次完 整的TCP連接。就這樣,C到服務端的連接就建立了,這時C和服務端就可以互相交換數據了。下面是上文的圖片說明:) Client Server ------ ------ SYN--------------------> <--------------------SYN-ACK ACK--------------------> Client and server can now send service-specific data S返回一個確認的SYN-ACK包的時候有個潛在的弊端,他可能不會接到C迴應的ACK包。這個也就是所謂的半開放連接,S需要 耗費一定的數量的系統內存來等待這個未決的連接,雖然這個數量是受限的,但是惡意者可以通過創建很多的半開放式連接來發動SYN洪水攻擊 通過ip欺騙可以很容易的實現半開放連接。攻擊者發送SYN包給受害者系統,這個看起來是合法的,但事實上所謂的C根本不會迴應這個 SYN-ACK報文,這意味着受害者將永遠不會接到ACK報文。 而此時,半開放連接將最終耗用受害者所有的系統資源,受害者將不能再接收任何其他的請求。通常等待ACK返回包有超時限制,所以半開放 連接將最終超時,而受害者系統也會自動修復。雖然這樣,但是在受害者系統修復之前,攻擊者可以很容易的一直髮送虛假的SYN請求包來持續 攻擊。 在大多數情況下,受害者幾乎不能接受任何其他的請求,但是這種攻擊不會影響到已經存在的進站或者是出站連接。雖然這樣,受害者系統 還是可能耗盡系統資源,以導致其他種種問題。 攻擊系統的位置幾乎是不可確認的,因爲SYN包中的源地址多數都是虛假的。當SYN包到達受害者系統的時候,沒有辦法找到他的真實地址 ,因爲在基於源地址的數據包傳輸中,源ip過濾是唯一可以驗證數據包源的方法。 三:什麼是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就可以 避免守侯半開放連接了。 以上只是SYN COOKIE的基本思路,它在應用過程中仍然有許多技巧。請在前幾年的kernel郵件列表查看archive of discussions的相關詳細 內容。 4,什麼是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 <------- 1:一個SYN包從C發送到S 2:防火牆在這裏扮演了S的角色來回應一個帶SYN cookieSYN-ACK包給C 3C發送ACK包,接着防火牆和C的連接就建立了。 4:防火牆這個時候扮演C的角色發送一個SYNS 5S返回一個SYNC 6:防火牆扮演C發送一個ACK確認包給S,這個時候防火牆和S的連接也就建立了 7:防火牆轉發CS間的數據 如果系統遭受SYN Flood,那麼第三步就不會有,而且無論在防火牆還是S都不會收到相應在第一步的SYN包,所以我們就擊退了這次SYN洪水攻擊。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章