SYN_RECV的奇怪連線

SYN攻擊是最常見又最容易被利用的一種攻擊手法。還記得2000年YAHOO網站遭受的攻擊事例,當時黑客利用的就是簡單而有效的SYN攻擊,有些網絡蠕蟲病毒配合SYN攻擊DDOS的破壞。

TCP握手協議在TCP/IP協議中,TCP協議提供可靠的連接服務,採用三次握手建立一個連接。 第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認; 第二次握手:服務器收到syn包,必須確認客戶的SYN(ack= j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態; 第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

SYN_RECV 表示正在等待處理的請求數;ESTABLISHED 表示正常數據傳輸狀態;TIME_WAIT 表示處理完畢,等待超時結束的請求數。

SYN_RECV是指,服務端被動開啟後,接收到了客戶端的SYN並且傳送了ACK時的狀態。再進一步接收到客戶端的ACK就進入ESTABLISHED狀態。

TCP SYN Flood是一種常見,而且有效的遠端(遠程)拒絕服務(Denial of Service)攻擊方式,它透過一定的操作破壞TCP三次握手建立正常連線,佔用並耗費系統資源,使得提供TCP服務的主機系統無法正常工作。

tcp_synack_retries默認為5,表示重發5次,每次等待30~40秒,即“半連接”默認hold住大約180秒。

tcp6       0      0 120.115.2.158:80        45.56.69.15:35842       SYN_RECV    -                   
tcp6       0      0 120.115.2.158:80        45.56.69.15:49813       SYN_RECV    -                   
tcp6       0      0 120.115.2.158:80        149.255.109.168:44657   SYN_RECV    -                   
tcp6       0      0 120.115.2.158:80        149.248.55.130:14794    SYN_RECV    -                   
tcp6       0      0 120.115.2.158:80        149.248.55.130:18994    SYN_RECV    -  

被攻擊了半連接=>hold住180秒,服務器遭受到大量的大量SYN_RECV,80port佔死,網站打不開

最簡易處理方式

echo 1 > /proc/sys/net/ipv4/tcp_synack_retries

cat /proc/sys/net/ipv4/tcp_max_syn_backlog
256

firewall處理並log:

根據log可以找到有問題的ip

經由log紀錄,此段C class的網段(美國ip)須封鎖

TCP洪水攻擊還沒完美解決方案

Last updated

Was this helpful?