1 .个人资料SYN Flood是目前最流行的拒绝服务攻击(DoS )和分布式拒绝服务攻击(DDoS )方式之一。 它利用TCP协议的缺陷,发送大量的伪造TCP连接请求,经常从伪造IP或IP号码段发送大量连接请求的第一个握手包) SYN分组), 由攻击服务器响应的第二个握手包) SYN分组)导致被攻击服务器保持大量SYN_RECV状态的“半连接”,重试默认5次响应,响应第二个握力分组,填充等待TCP的连接队列
的详细原理在网上有很多介绍,也有很多应对方法,但大部分效果不大。 这里介绍一下我们是如何诊断和应对的。
2 .诊断我们看到业务曲线大跌时,检查机器和DNS,发现对外web机响应慢、CPU负荷高、ssh登录慢或部分机器无法登录,检查系统syslog。
复制代码就是:
# tail -f /var/log/messages
apr 1811336021:56 web5 kernel :50 possiblesynfloodingonport 80.sending cookies。
检查连接数增加,SYN_RECV连接特别多:
复制代码就是:
# netstat-n|awk '/^ TCP/{ s [ $ nf ] ] end { for (ains ) print a,s(a ) }
TIME_WAIT 16855
CLOSE_WAIT 21
SYN_SENT 99
FIN_WAIT1 229
FIN_WAIT2 113
ESTABLISHED 8358
SYN_RECV 48965
关闭3
LAST_ACK 313
根据经验,正常时的检查连接数如下。
复制代码就是:
# netstat-n|awk '/^ TCP/{ s [ $ nf ] ] end { for (ains ) print a,s(a ) }
TIME_WAIT 42349
CLOSE_WAIT 1
SYN_SENT 4
FIN_WAIT1 298
FIN_WAIT2 33
ESTABLISHED 12775
SYN_RECV 259
关闭6
LAST_ACK 432
以上是TCP洪水攻击的两大特点。 运行netstat -na指定文件,留下罪证。
3 .在优化Linux阻止SYN洪水攻击的Linux服务器下受到SYN洪水攻击时,可以进行以下设置:
复制代码就是:
缩短同步退出时间:
iptables-aforward-ptcpsyn-m limitlimit1/s-j accept
iptables-a input-ieth0- m limit-limit1/sec-limit-burst5- j accept
#1秒钟最多有3个syn数据包进入,如下所示:
iptables-n同步浮动
iptables-a输入- ptcpsyn-jsyn-flood
iptables-asyn-flood-ptcp-syn-m limit-limit1/s-limit-burst3- j return
iptables -A syn-flood -j REJECT
syncookies设置:
sysctl-wnet.IP v4.TCP _ syn cookies=1
sysctl-wnet.IP v4.TCP _ max _ syn _ backlog=3072
sysctl-wnet.IP v4.TCP _ synack _ retries=0
sysctl-wnet.IP v4.TCP _ syn _ retries=0
sysctl-wnet.IP v4.conf.all.send _ redirects=0
sysctl-wnet.IP v4.conf.all.accept _ redirects=0
sysctl-wnet.IP v4.conf.all.forwarding=0
sysctl-wnet.IP v4.icmp _ echo _ ignore _ broadcasts=1
防止PING :
sysctl-wnet.IP v4.icmp _ echo _ ignore _ all=1
#阻止特定IP范围:
iptables-a input-s 10.0.0.0/8-ieth0- j drop