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 数据,覆盖上一项
 
 
 

你可能感兴趣的:(职场,syn,休闲,flood)