why
- SYNC FLOOD
SYNC FLOOD 就是在 TCP 三次握手過程中吩案,發(fā)送給服務器海量的 sync 包秀又,不應答服務
器返回的 ACK∑床裕客戶端可以簡單的不發(fā)送對應的 ACK笑诅,也可以偽裝 SYN 發(fā)送的 ip 地址调缨,
將其設置為不存在的 ip,比如內(nèi)網(wǎng) ip吆你,這樣服務器發(fā)送的 SYN/ACK 永遠都得不到回應弦叶。
這樣服務器就需要維護海量的 半開連接 ,等待客戶端的 ACK, 最終導致服務器資源耗
盡(sync queue 滿)而丟棄新的連接妇多。
實現(xiàn)
要創(chuàng)建一個新的 tcp 連接伤哺,client 端必須發(fā)送一個 TCP SYN 包給服務器,服務器返回一
個 TCP SYN/ACK 報文者祖,這個報文中的一個參數(shù)是 序列號立莉,用來重新拼接數(shù)據(jù)流。根據(jù)
TCP 協(xié)議七问,這個序列號可以由服務器端任意決定蜓耻。 SYNC COOKIES 就是這個序列號的一
個特殊實現(xiàn)
* 初始 5 位: t mod 32,t 是時間戳
* 接下 3 位: mss 的編碼值
* 最后 24 位: 服務器 Port/ip械巡,客戶端 Port/ip 值的 hash
客戶端收到這個序列號 n 之后刹淌,發(fā)送 n + 1 給服務器,服務器通過 n 來比對 sync
cookie
在開啟了 sync cookie 的情況下讥耗,sync queue 滿了的時候有勾,連接再也不被丟掉,而是直
接返回相應的 SYN/ACK 報文古程,看起來就像 sync queue 增大了一樣蔼卡。
sync cookie 防火墻
對于防火墻來說,它可以開啟 sync cookie 的功能籍琳。此時 client 的三次握手是和防火墻
進行的菲宴,防火墻相當于起到了一個檢驗 client 的功能。client 通過驗證之后趋急,防火墻主
動和 server 端進行三次握手的連接的初始化過程。Junos 的相關(guān)文檔在此