SCTP防止SYN Flooding攻擊的原理

來源:互聯網
上載者:User

1.       TCP中的SYN
Flooding攻擊原理:

 要明白這種攻擊的基本原理,還是要從TCP串連建立的過程開始說起。由於 TCP基於串連的,為了在服務端和用戶端之間傳送TCP資料,必須先建立一個虛擬電路,也就是TCP串連,建立TCP串連的過程也就是我們熟悉的“三向交握”過程:首先,請求端(用戶端)發送一個包含SYN標誌的TCP報文,表示用戶端欲發起通訊串連;第二步,伺服器在收到用戶端的SYN報文後,將返回一個SYN+ACK的報文,表示用戶端的請求被接受;第三步,用戶端也返回一個確認報文ACK給伺服器端,到此一個TCP串連完成。問題就出在TCP串連的三向交握中,假設一個使用者向伺服器發送了SYN報文後突然死機或掉線,那麼伺服器在發出SYN+ACK應答報文後是無法收到用戶端的ACK報文的,這種情況下伺服器端一般會重試(再次發送SYN+ACK給用戶端)並等待一段時間後丟棄這個未完成的串連,這段時間的長度我們稱為SYN
Timeout,一般來說這個時間是分鐘的數量級(大約為30秒-2分鐘);如果有一個惡意的攻擊者大量類比這種情況,伺服器端將為了維護一個非常大的半串連列表而消耗非常多的資源,最終導致伺服器端忙於處理攻擊者偽造的TCP串連請求而無暇理睬客戶的正常請求,此時從正常客戶的角度看來,伺服器失去響應,這種情況我們稱作:伺服器端受到了SYN
Flooding攻擊。

 

2.       SCTP是如何防止SYN
Flooding攻擊的:

SCTP是通過“四次握手”的方法來建立一個SCTP連結的。具體過程如下:首先請求端發送一個INIT訊息到服務端;服務端收到這個INIT訊息後,準備好建立本次串連所需要的相關資訊,並將這些資訊放在一個叫“State
Cookie”的資料區塊中,接下來服務端給請求端發送一個INIT_ACK的訊息,INIT_ACK中包含了這個“State
Cookie”,同時服務端會把和本次連結相關的所有資源釋放掉,不維護任何資源和狀態;請求端收到INIT_ACK後會把裡面的“State
Cookie”資訊取出來重新封裝一個COOKIE_ECHO發往服務端;服務端收到COOKIE_ECHO訊息後再次去除其中的“State
Cookie”,依據“State Cookie”中儲存的資訊建立本次連結,並向請求端發送COOKIE_ACK訊息。由此可見SCTP為了避免SYN
Flooding攻擊採用了一種比較聰明的辦法就是:服務端不維護半連結資訊,而是把半連結資訊發送給請求端(存放在“State Cookie”中),如果請求端確實需要建立這個連結,那麼請求端需要再把半連結資訊回送給服務端,這時服務端便可以根據返回的半連結資訊建立串連了。

3.       TCP和SCTP建立串連過程:

   

轉自 http://blog.csdn.net/minico/article/details/5706861

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.