SYN攻擊基本原理與防範技術方法
一、TCP握手協議
在TCP/IP協議中,TCP協議提供可靠的連接服務,採用三次握手建立一個連接。
駭客,免費軟體,程式設計,資訊安全,開源碼,教學,JAVA,VB,C#,程式教學%C6U$J5J'`1g!Z
第二次握手︰伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手︰客戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。
完成三次握手,客戶端與伺服器開始傳送數據,在上述過程中,還有一些重要的概念︰www.phate.tw8['~ ~*~8?$W4[
0b&[8X,f8L*h未連接隊列︰在三次握手協議中,伺服器維護一個未連接隊列,該隊列為每個客戶端的 SYN包(syn=j)開設一個條目,該條目表明伺服器已收到SYN包,並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連接在伺服器處於 Syn_RECV狀態,當伺服器收到客戶的確認包時,刪除該條目,伺服器進入ESTABLISHED狀態。
SYN-ACK 重傳次數 伺服器發送完SYN-ACK包,如果未收到客戶確認包,伺服器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連接訊息從半連接隊列中刪除。注意,每次重傳等待的時間不一定相同。Phate Technology6x0o-h:|-r"C)a&z7Q(O
半連接存活時間︰是指半連接隊列的條目存活的最長時間,也即服務從收到SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和。有時我們也稱半連接存活時間為Timeout時間、SYN_RECV存活時間。
三、SYN攻擊工具
SYN攻擊實現起來非常的簡單,互聯網上有大量現成的SYN攻擊工具。
以 synkill.exe為例,營運工具,選擇隨機的原位址和原端 ,並填寫目標機器位址和TCP端 ,激活營運,很快就會發現目標系統營運緩慢。如果攻擊效果不明顯,可能是目標機器並未開啟所填寫的TCP端 或者防火牆拒絕訪問該端 ,此時可選擇允許訪問的TCP端 ,通常,Windows系統開放tcp139端 ,UNIX系統開放tcp7、21、23等端 。
四、檢測SYN攻擊
檢測SYN攻擊非常的方便,當你在伺服器上看到大量的半連接狀態時,特別是原IP位址是隨機的,基本上可以斷定這是一次SYN攻擊。我們使用系統自帶的netstat 工具來檢測SYN攻擊︰
R&v5|"P2u
# netstat -n -p TCP tcp 0 0
Phate Technology4@6n*h @ y$u:P
駭客,免費軟體,程式設計,資訊安全,開源碼,教學,JAVA,VB,C#,程式教學,@'[4_!\'e-f
上面是在LINUX系統中看到的,很多連接處於SYN_RECV狀態(在WINDOWS系統中是SYN_RECEIVED狀態),原IP位址都是隨機的,表明這是一種帶有IP欺騙的SYN攻擊。
是一個開放的技術交流區,討論內容包含資訊安全、高階程式語言、腳本語言、韌體設計......等0e _8r&J,v0A/w$Q y7S
我們也可以透過下面的命令直接檢視在LINUX環境下某個端 的未連接隊列的條目數︰
顯示TCP端 22的未連接數有324個,雖然還遠達不到系統極限,但應該引起管理員的注意。
五、SYN攻擊防範技術
關於SYN攻擊防範技術,人們研究得比較早。歸納起來,主要有兩大類,一類是透過防火牆、路由器等過濾通訊閘防護,另一類是透過加固TCP/IP協議棧防範.但必須清楚的是,SYN攻擊不能完全被阻止,我們所做的是儘可能的減輕SYN攻擊的危害,除非將TCP協議重新設計。
1、過濾通訊閘防護
www.phate.tw,]'Y+K$w%G:O/o,A)\0[
防火牆設定SYN轉發超時參數(狀態檢測的防火牆可在狀態表裡面設定),該參數遠小於伺服器的timeout時間。當客戶端發送完SYN包,服務端發送確認包後(SYN+ACK),防火牆如果在計數器到期時還未收到客戶端的確認包(ACK),則往伺服器發送RST包,以使伺服器從隊列中刪去該半連接。值得注意的是,通訊閘超時參數設定不宜過小也不宜過大,超時參數設定過小會影響正常的通訊,設定太大,又會影響防範SYN攻擊的效果,必須根據所處的網路應用環境來設定此參數。
Phate Technology1M!m-C+].j
‧SYN通訊閘︰
SYN通訊閘收到客戶端的SYN包時,直接轉發給伺服器;SYN通訊閘收到伺服器的 SYN/ACK包後,將該包轉發給客戶端,同時以客戶端的名義給伺服器發ACK確認包。此時伺服器由半連接狀態進入連接狀態。當客戶端確認包到達時,如果有數據則轉發,否則丟棄。事實上,伺服器除了維持半連接隊列外,還要有一個連接隊列,如果發生SYN攻擊時,將使連接隊列數目增加,但一般伺服器所能承受的連接數量比半連接數量大得多,所以這種方法能有效地減輕對伺服器的攻擊。
‧SYN代理︰
當客戶端 SYN包到達過濾通訊閘時,SYN代理並不轉發SYN包,而是以伺服器的名義主動回複SYN/ACK包給客戶,如果收到客戶的ACK包,表明這是正常的訪問,此時防火牆向伺服器發送ACK包並完成三次握手。SYN代理事實上代替了伺服器去處理SYN攻擊,此時要求過濾通訊閘自身具有很強的防範SYN攻擊能力。
2、加固tcp/ip協議棧資訊安全|免費軟體|程式設計8f$s8e&g"]3I,m4{
防範SYN攻擊的另一項主要技術是調整tcp/ip協議棧,修改tcp協議實現。主要方法有SynAttackProtect保護機製、SYN cookies技術、增加最大半連接和縮短超時時間等。tcp/ip協議棧的調整可能會引起某些功能的受限,管理員應該在進行充分了解和測試的前提下進行此項工作。