如何判斷
一般情況下,可以一些簡單步驟進行檢查,來判斷系統是否正在遭受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 1>/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的
並發數 也會有一定的幫助。
2. 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次,可以根據自己的需要修改