簡介
SYN_RECV是指,服務端被動打開後,接收到了客戶端的SYN而且發送了ACK時的狀態。再進一步接收到客戶端的ACK就進入ESTABLISHED狀態。
TCP SYN Flood是一種常見,並且有效的遠端(遠程)拒絕服務(Denial of Service)***方式,它透過必定的操做破壞TCP三次握手創建正常鏈接,佔用並耗費系統資源,使得提供TCP服務的主機系統沒法正常工做。因爲TCP SYN Flood是透過網路底層對服務器Server進行***的,它能夠在任意改變本身的網路IP地址的同時,不被網路上的其餘設備所識別,這樣就給防範網路犯罪部門追查犯罪來源形成很大的困難。在國內外的網站中,這種***家常便飯。在一個拍賣網站上,曾經有犯罪分子利用這種手段,在低價位時阻止其餘用戶繼續對商品拍賣,干擾拍賣過程的正常運做。
簡單判斷是否SYN_RECV
通常狀況下,能夠一些簡單步驟進行檢查,來判斷系統是否正在遭受TCP SYN Flood***。
一、 服務端沒法提供正常的TCP服務。鏈接請求被拒絕或超時。
二、透過 netstat -an 命令檢查系統,發現有大量的SYN_RECV鏈接狀態。
檢查服務器連接,SYN_RECV狀態最高時有200多個,訪問服務器網頁特別慢,甚至超時,因此基本斷定是SYN_RECV***。
緩解處理方案(只是延緩了 治標不治本)
增長隊列長度
啓動syn_cookies
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_max_syn_backlog = 65536
iptables花式拒絕
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -m limit --limit 1/sec --limit-burst 10 -j ACCEPT
-A INPUT -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
-A syn-flood -j REJECT --reject-with icmp-port-unreachable