天天看點

linux阻擋簡單的弱syn攻擊

抵禦SYN SYN攻擊是利用TCP/IP協定3次握手的原理,發送大量的建立連接配接的網絡包,但不實際建立連接配接,最終導緻被攻擊伺服器的網絡隊列被占滿,無法被正常使用者通路。

Linux核心提供了若幹SYN相關的配置,用指令: sysctl -a | grep syn 看到:

net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_syncookies = 0

net.ipv4.tcp_synack_retries = 5 net.ipv4.tcp_syn_retries = 5

tcp_max_syn_backlog是SYN隊列的長度,tcp_syncookies是一個開關,是否打開SYN Cookie 功能,該功能可以防止部分SYN攻擊。tcp_synack_retries和tcp_syn_retries定義SYN 的重試次數。加大SYN隊列長度可以容納更多等待連接配接的網絡連接配接數,打開SYN Cookie功能可以阻止部分 SYN攻擊,降低重試次數也有一定效果。

調整上述設定的方法是:

增加SYN隊列長度到2048:

sysctl -w net.ipv4.tcp_max_syn_backlog=2048

打開SYN COOKIE功能:

sysctl -w net.ipv4.tcp_syncookies=1

降低重試次數:

sysctl -w net.ipv4.tcp_synack_retries=3 sysctl -w net.ipv4.tcp_syn_retries=3

為了系統重新開機動時保持上述配置,可将上述指令加入到/etc/rc.d/rc.local檔案中。

防止同步包洪水(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

寫成這樣效果更好點:

例如将SYN請求的次數限制在30次每分鐘,系統預設是5次/秒,顯然太高,同時将burst從預設的5個降低到2個。

/sbin/iptables -A INPUT -p tcp –tcp-flags SYN,ACK,FIN,RST SYN -m \

limit –limit 30/m –limit-burst 2 -j ACCEPT

Ping洪水攻擊(Ping of Death)

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

繼續閱讀