SYN Flood***的檢測和防範

netstat 工具來檢測SYN***

 

# netstat -n -p -t

tcp 0  0 10.11.11.11:23  124.173.152.8:25882  SYN_RECV -

tcp 0  0 10.11.11.11:23  236.15.133.204:2577  SYN_RECV -

tcp 0  0 10.11.11.11:23  127.160.6.129:51748  SYN_RECV -

...

LINUX系統中看到的,很多連接處於SYN_RECV狀態(在WINDOWS系統中是SYN_RECEIVED狀態),

IP地址都是隨機的,表明這是一種帶有IP欺騙的SYN***。

 

# netstat -n -p -t | grep SYN_RECV | grep :80 | wc -l

324

 

查看在LINUX環境下某個端囗的未連接隊列的條目數,顯示TCP端囗22的未連接數有324個,

雖然還遠達不到系統極限,但應該引起管理員的注意。

 

[root@pub wxjsr]# netstat -na | grep SYN_RECV

tcp        0      0 58.193.192.20:80            221.0.108.162:32383         SYN_RECV   

tcp        0      0 58.193.192.20:80            125.85.118.231:2601         SYN_RECV   

tcp        0      0 58.193.192.20:80            222.242.171.215:2696        SYN_RECV   

tcp        0      0 58.193.192.20:80            116.52.10.51:2629           SYN_RECV   

tcp        0      0 58.193.192.20:80            218.171.175.157:1117       

 

[root@pub wxjsr]# netstat -na | grep SYN_RECV |wc

     11      66     979

 

查看系統SYN相關的配置

 

Linux內核提供了若干SYN相關的配置,用命令: sysctl -a | grep syn

[root@metc apache2]# /sbin/sysctl -a | grep syn

net.ipv6.conf.default.max_desync_factor = 600

net.ipv6.conf.all.max_desync_factor = 600

net.ipv6.conf.eth0.max_desync_factor = 600

net.ipv6.conf.lo.max_desync_factor = 600

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120

net.ipv4.tcp_max_syn_backlog = 1280

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 5

fs.quota.syncs = 18

 

防範SYN***設置

 

#縮短SYN- Timeout時間:

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

iptables -A INPUT -i eth0 -m limit --limit 1/sec --limit-burst 5 -j ACCEPT

 

#每秒 最多3 syn 封包 進入 表達爲

iptables -N syn-flood

iptables -A INPUT -p tcp --syn -j syn-flood

iptables -A syn-flood -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j RETURN

iptables -A syn-flood -j REJECT

 

#設置syncookies

sysctl -w net.ipv4.tcp_syncookies=1

/sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=3000

/sbin/sysctl -w net.ipv4.tcp_synack_retries=1

/sbin/sysctl -w net.ipv4.tcp_syn_retries=1

 

sysctl -w net.ipv4.conf.all.send_redirects=0

sysctl -w net.ipv4.conf.all.accept_redirects=0

sysctl -w net.ipv4.conf.all.forwarding=0

/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

 

/sbin/sysctl -w net.ipv4.conf.default.accept_source_route=0   # 禁用icmp源路由選項

/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1         # 忽略icmp ping廣播包,應開啓

/sbin/sysctl -w net.ipv4.icmp_echo_ignore_all=1                      # 忽略所有icmp ping數據,覆蓋上一項

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章