TCP三次握手SYN_RECV

2016年6月22日14:36:40 發表評論 4,842 ℃

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

TCP SYN Flood是一種常見,而且有效的遠端(遠程)拒絕服務(Denial of Service)攻擊方式,它透過一定的操作破壞TCP三次握手建立正常連接,占用并耗費系統資源,使得提供TCP服務的主機系統無法正常工作。由于TCP SYN Flood是透過網路底層對服務器Server進行攻擊的,它可以在任意改變自己的網路IP地址的同時,不被網路上的其他設備所識別,這樣就給防范網路犯罪部門追查犯罪來源造成很大的困難。在國內內外的網站中,這種攻擊屢見不鮮。在一個拍賣網站上,曾經有犯罪分子利用這種手段,在低價位時阻止其他用戶繼續對商品拍賣,干擾拍賣過程的正常運作。

如何判斷

一般情況下,可以一些簡單步驟進行檢查,來判斷系統是否正在遭受TCP SYN Flood攻擊。

1.服務端無法提供正常的TCP服務。連接請求被拒絕或超時。

2.透過 netstat -an 命令檢查系統,發現有大量的SYN_RECV連接狀態。

檢查服務器鏈接,SYN_RECV狀態最高時有200多個,訪問服務器網頁特別慢,甚至超時,所以基本判定是SYN_RECV攻擊。

解決方法

這個攻擊的解決方法如下:

1.增加未完成連接隊列(q0)的最大長度。

echo 1280 /proc/sys/net/ipv4/tcp_max_syn_backlog

2.啟動SYN_cookie。

echo /proc/sys/net/ipv4/tcp_syncookies

這些是被動的方法,治標不治本。而且加大了服務器的負擔,但是可以避免被拒絕攻擊(只是減緩)。

治本的方法是在防火墻上做手腳,但是現在能在一定程度上防住syn flood攻擊的防火墻都不便宜。并且把這個命令加入"/etc/rc.d/rc.local"文件中

如果對 /proc/sys/net/ipv4 下的配置文件進行解釋,可以參閱 LinuxAid技術站的文章。查看本文全文也可以參閱。

關于 syn cookies, 請參閱 http://cr點yp點to/syncookies.html

也許 使用mod_limitipconn.c來限制apache的并發數 也會有一定的幫助。

iptables的設置,引用自CU

防止同步包洪水(Sync Flood)

#iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

也有人寫作

#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

--limit 1/s 限制syn并發數每秒1次,可以根據自己的需要修改

防止各種端口掃描

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Ping洪水攻擊(Ping of Death)

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

【騰訊云】云服務器、云數據庫、COS、CDN、短信等云產品特惠熱賣中

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: