4.4 SYN-ACK&ACK&FIN&RST
Flood攻击与防御
除了SYN报文之外,TCP交互过程中还存在SYN-ACK、ACK、FIN和RST报文,这几类报文也可能会被攻击者利用,海量的攻击报文会导致被攻击目标系统资源耗尽、网络拥塞,无法正常提供服务。接下来我们介绍几种常见的Flood攻击的原理和防御方式。
4.4.1 SYN-ACK Flood攻击与防御
通信双方通过三次握手建立一个TCP连接的过程时,SYN-ACK报文出现在第二次握手中,是用来确认第一次握手的。一方收到SYN-ACK报文后,首先会判断该报文是不是属于三次握手范畴之内的报文。如果还在进行第一次握手便又收到了第二次握手的报文,向对方发送RST报文,告知对方其发来的报文有误,不能建立连接。
SYN-ACK Flood攻击是攻击者利用工具或者操控僵尸主机,向目标服务器发送大量的SYN-ACK报文,这些报文都属于凭空出现的第二次握手报文,服务器忙于回复RST报文,导致资源耗尽,无法响应正常的请求。
华为 Anti-DDoS 解决方案使用源认证方式防御 SYN-ACK Flood 攻击,其原理是Anti-DDoS系统向发送SYN-ACK报文的源地址发送SYN报文,相当于发起了第一次握手,以探测该地址是否真实存在。如图4-18所示,真实的源会向Anti-DDoS系统响应正确的 SYN-ACK 报文,即第二次握手的报文;而虚假的源则不会响应正确的 SYN-ACK报文。
SYN-ACK Flood源认证过程有以下4步。
① 在连续一段时间内去往目标服务器的SYN-ACK 报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS 系统向发送 SYN-ACK 报文的源地址发送SYN报文。
② 如果这个源是虚假源,其不会向Anti-DDoS系统响应正确的SYN-ACK报文。
③ 如果这个源是真实源,其会向 Anti-DDoS 系统响应正确的 SYN-ACK 报文。Anti-DDoS系统收到该SYN-ACK报文后,将该源IP地址加入白名单,同时会向源地址发送RST报文,断开自己和这个源地址的连接。
④ 后续这个源发出的SYN-ACK报文命中白名单直接通过,而对于那些未匹配白名单的SYN-ACK报文则继续进行源认证。
Anti-DDoS系统防御SYN-ACK Flood攻击与防御SYN Flood攻击时所采用的方式类似,都是采用源认证的方式。




