共找到2條詞條名為SYN的結果 展開
- SYN
- 合成技術及應用
SYN
SYN
SYN:同步序列編號(Synchronize Sequence Numbers)。是TCP/IP建立連接時使用的握手信號。在客戶機和伺服器之間建立正常的TCP網路連接時,客戶機首先發出一個SYN消息,伺服器使用SYN+ACK應答表示接收到了這個消息,最後客戶機再以ACK消息響應。這樣在客戶機和伺服器之間才能建立起可靠的TCP連接,數據才可以在客戶機和伺服器之間傳遞。
TCP連接的第一個包,非常小的一種數據包。SYN 攻擊包括大量此類的包,由於這些包看上去來自實際不存在的站點,因此無法有效進行處理。每個機器的欺騙包都要花幾秒鐘進行嘗試方可放棄提供正常響應。
在黑客攻擊事件中,SYN攻擊是最常見又最容易被利用的一種攻擊手法。
SYN攻擊屬於DDoS攻擊的一種,它利用TCP協議缺陷,通過發送大量的半連接請求,耗費CPU和內存資源。SYN攻擊除了能影響主機外,還可以危害路由器、防火牆等網路系統,事實上SYN攻擊並不管目標是什麼系統,只要這些系統打開TCP服務就可以實施。伺服器接收到連接請求(syn= j),將此信息加入未連接隊列,併發送請求包給客戶(syn=k,ack=j+1),此時進入SYN_RECV狀態。當伺服器未收到客戶端的確認包時,重發請求包,一直到超時,才將此條目從未連接隊列刪除。配合IP欺騙,SYN攻擊能達到很好的效果,通常,客戶端在短時間內偽造大量不存在的IP地址,向伺服器不斷地發送syn包,伺服器回復確認包,並等待客戶的確認,由於源地址是不存在的,伺服器需要不斷地重發直至超時,這些偽造的SYN包將長時間佔用未連接隊列,正常的SYN請求被丟棄,目標系統運行緩慢,嚴重者引起網路堵塞甚至系統癱瘓。
SYN Flood利用TCP協議缺陷,發送了大量偽造的TCP連接請求,使得被攻擊方資源耗盡,無法及時回應或處理正常的服務請求。一個正常的TCP連接需要三次握手,首先客戶端發送一個包含SYN標誌的數據包,其後伺服器返回一個SYN/ACK的應答包,表示客戶端的請求被接受,最後客戶端再返回一個確認包ACK,這樣才完成TCP連接。在伺服器端發送應答包后,如果客戶端不發出確認,伺服器會等待到超時,期間這些半連接狀態都保存在一個空間有限的緩存隊列中;如果大量的SYN包發到伺服器端后沒有應答,就會使伺服器端的TCP資源迅速耗盡,導致正常的連接不能進入,甚至會導致伺服器的系統崩潰。
SYN攻擊實現起來非常的簡單,網際網路上有大量現成的SYN攻擊工具。
windows系統下的SYN工具
以synkill.exe為例,運行工具,選擇隨機的源地址和源埠,並填寫目標機器地址和TCP埠,激活運行,很快就會發現目標系統運行緩慢。如果攻擊效果不明顯,可能是目標機器並未開啟所填寫的TCP埠或者防火牆拒絕訪問該埠,此時可選擇允許訪問的TCP埠,通常,windows系統開放tcp139埠,UNIX系統開放tcp7、21、23等埠。
檢測SYN攻擊非常的方便,當你在伺服器上看到大量的半連接狀態時,特別是源IP地址是隨機的,基本上可以斷定這是一次SYN攻擊。我們使用系統自帶的netstat 工具來檢測SYN攻擊:
# netstat -n -p TCP
tcp 0 0 10.11.11.11:23 124.173.152.8:25882 SYN_RECV -
tcp 0 0 10.11.11.11:23 236.15.133.204:2577 SYN_RECV -
tcp 0 0 10.11.11.11:23 127.160.6.129:51748 SYN_RECV -
tcp 0 0 10.11.11.11:23 222.220.13.25:47393 SYN_RECV -
tcp 0 0 10.11.11.11:23 212.200.204.182:60427 SYN_RECV -
tcp 0 0 10.11.11.11:23 232.115.18.38:278 SYN_RECV -
tcp 0 0 10.11.11.11:23 239.116.95.96:5122 SYN_RECV -
tcp 0 0 10.11.11.11:23 236.219.139.207:49162 SYN_RECV -
...
上面是在LINUX系統中看到的,很多連接處於SYN_RECV狀態(在WINDOWS系統中是SYN_RECEIVED狀態),源IP地址都是隨機的,表明這是一種帶有IP欺騙的SYN攻擊。
我們也可以通過下面的命令直接查看在LINUX環境下某個埠的未連接隊列的條目數:
#netstat -n -p TCP | grep SYN_RECV | grep :22 | wc -l
324
顯示TCP端囗22的未連接數有324個,雖然還遠達不到系統極限,但應該引起管理員的注意。
關於SYN攻擊防範技術,人們研究得比較早。歸納起來,主要有兩大類,一類是通過防火牆、路由器等過濾網關防護,另一類是通過加固TCP/IP協議棧防範
在“開始->運行->鍵入regedit”
啟用 SYN 攻擊保護的命名值位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters之下。值名稱:SynAttackProtect。推薦值:2。
以下部分中的所有項和值均位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters 之下。
指定必須在觸發 SYN flood 保護之前超過的 TCP 連接請求閾值。值名稱:TcpMaxPortsExhausted。推薦值:5。
啟用 SynAttackProtect 后,該值指定 SYN_RCVD 狀態中的 TCP 連接閾值,超過 SynAttackProtect 時,觸發 SYN flood 保護。值名稱:TcpMaxHalfOpen。推薦值數據:500。
啟用 SynAttackProtect 后,指定至少發送了一次重傳的 SYN_RCVD 狀態中的 TCP 連接閾值。超過 SynAttackProtect 時,觸發 SYN flood 保護。值名稱:TcpMaxHalfOpenRetried。推薦值數據:400
不難看出syn攻擊時消耗大量帶寬資源,所以要想防禦syn洪水攻擊,一個豐富的帶寬資源是非常有必要的,通常的流量攻擊,攻擊者也是利用肉雞的帶寬資源來堵死目標網路的,所以這個也是一個重要的防禦前提。
利用防火牆來進行防護攻擊是目前最有效的方法,當然前提是攻擊在防護帶寬範圍之內,也就是為什麼第二條推薦帶寬資源,這是保證在防火牆前面不會造成堵塞,來達到防火牆的防護目的。