攻击者会利用交互过程来对TCP进行攻击,可能使用的攻击方式有以下几种。
(1)Flood类攻击
例如,攻击者向攻击目标发送海量的 SYN、ACK、FIN 或 RST 报文,占用被攻击目标的系统资源,使其无法提供正常服务。
(2)连接耗尽类攻击
例如,攻击者与被攻击目标完成三次握手后不再发送报文但一直维持连接,或者立刻发送FIN或RST报文,在断开连接后快速发起新的连接等,消耗TCP连接资源。
(3)异常报文类攻击
例如,TCP报文中的标志位全都置为1或0,SYN和FIN标志位同时置为1等,这些不符合TCP规范的异常报文可能会导致被攻击目标的系统崩溃。
4.3 SYN Flood攻击与防御
SYN Flood 指的是攻击者利用工具或者操作僵尸主机,向目标服务器发起大量的TCP SYN报文,当服务器回应SYN-ACK报文时,攻击者不再继续回应ACK报文。这时服务器上存在大量的TCP半连接,服务器的资源会被这些半连接耗尽,无法响应正常的请求。
华为Anti-DDoS解决方案防御SYN Flood攻击的常用方式是源认证,从SYN报文建立连接的“行为”入手,判断是否为真实源发出的请求。源认证包括基本源认证和高级源认证,下面我们将介绍这两种认证方式。
4.3.1 基本源认证
基本源认证的原理是 Anti-DDoS 系统代替 Web 服务器向客户端响应 SYN-ACK 报文,报文中带有错误的确认序号。当真实的客户端收到带有错误确认序号的 SYN-ACK报文后,会向服务器发送RST报文,要求重新建立连接;而虚假源收到带有错误确认序号的SYN-ACK报文,不会做出任何响应。Anti-DDoS系统通过观察客户端的响应情况,来判断客户端的真实性,如图4-15所示。
SYN Flood基本源认证过程有以下4步。
① 当连续一段时间内去往目标服务器的SYN报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替Web服务器向客户端响应带有错误确认序号的SYN-ACK报文。
② 如果是虚假源,是一个不存在的地址或者是存在的地址但却没有发送过SYN报文,其不会做出任何响应。
③ 如果是真实客户端,则会向服务器发送RST报文,并要求重新建立连接。Anti-DDoS系统收到RST报文后,将该客户端的源IP地址加入白名单。
④ 后续真实客户端发出的SYN报文命中白名单直接通过。
基本源认证方式存在一定的局限性,如果网络中存在某些设备会丢弃带有错误确认序号的SYN-ACK报文,或者有的客户端不响应带有错误确认序号的SYN-ACK报文,基本源认证就不会生效。这时还可以使用高级源认证来验证客户端的真实性。




