SYN Flood攻击与防御

​SYN Flood 指的是攻击者利用工具或者操作僵尸主机,向目标服务器发起大量的TCP SYN报文,当服务器回应SYN-ACK报文时,攻击者不再继续回应ACK报文。这时服务器上存在大量的TCP半连接,服务器的资源会被这些半连接耗尽,无法响应正常的请求。

华为Anti-DDoS解决方案防御SYN Flood攻击的常用方式是源认证,从SYN报文建立连接的“行为”入手,判断是否为真实源发出的请求。源认证方法包括基本源认证和高级源认证两种认证方式。

基本源认证

SYN Flood基本源认证过程如下图所示:

SYN Flood攻击与防御_第1张图片

  1. 当连续一段时间内去往目标服务器的SYN报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替Web服务器向客户端响应带有错误确认序号的SYN-ACK报文。

  2. Anti-DDoS 设备通过校验接收到的对探测报文的响应报文的真实性来确认源 IP 地址的真实性,以防止虚假源攻击。

  • 如果没有响应报文,则表示之前的 SYN 报文为攻击, Anti-DDoS 设备不会将该 SYN 报文发给被防护服务器,有效终止了攻击。未匹配白名单的源 IP 地址发出的 SYN 报文则继续被探测。

  • 如果有响应报文, Anti-DDoS 设备验证响应报文是否为真实的报文,如果真
    实,则表示该源 IP 地址通过源认证, Anti-DDoS 设备将该源 IP 地址加入白名单,在白名单老化前,从此源 IP 地址发出的 SYN 报文都直接被 Anti-DDoS设备转发。

基本源认证方式存在一定的局限性,如果网络中存在某些设备会丢弃带有错误确认序号的SYN-ACK报文,或者有的客户端不响应带有错误确认序号的SYN-ACK报文,基本源认证就不会生效。这时还可以使用高级源认证来验证客户端的真实性。

高级源认证

SYN Flood高级源认证过程如下图所示:

SYN Flood攻击与防御_第2张图片

  1. 当在连续一段时间内去往目标服务器的 SYN 报文超过告警阈值时,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替Web服务器向客户端响应带有正确确认序号的SYN-ACK报文。

  2. Anti-DDoS系统通过观察客户端的响应情况,来判断客户端的真实性。

  • 如果这个源是虚假源,是一个不存在的地址或者是存在的地址但却没有发送过SYN报文,其不会做出任何响应。

  • 如果这个源是真实客户端,其会向服务器发送ACK报文,并对收到的SYN-ACK报文进行确认。Anti-DDoS系统收到ACK报文后,将该客户端的源IP地址加入白名单。同时,Anti-DDoS系统会向客户端发送RST报文,要求重新建立连接。后续这个客户端发出的SYN报文命中白名单直接通过。

无论是基本源认证还是高级源认证,其原理都是Anti-DDoS系统发送SYN-ACK报文来对源进行认证。Anti-DDoS系统收到SYN报文后会反弹SYN-ACK报文。如果网络中存在海量的SYN报文,同样Anti-DDoS系统也会反弹出去海量的SYN-ACK报文,这样势必会造成网络拥塞更加严重。为了避免这个问题,减少反弹的SYN-ACK报文对网络拥塞的影响,Anti-DDoS系统提供了首包丢弃功能。

首包丢弃

TCP 的可靠性保证了面向连接(三次/四次握手),还体现在超时与重传机制。TCP规范要求发送端每发送一个报文,就启动一个定时器并等待确认信息;如果在定时器超时前还没有收到确认,就会重传报文。

首包丢弃功能就是利用了 TCP 的超时重传机制,Anti-DDoS 系统对收到的第一个SYN报文直接丢弃,然后观察客户端是否重传。如果客户端重传了SYN报文,再对重传的SYN报文进行源认证,即反弹SYN-ACK报文,这样就可以大大减少了反弹报文的数量。

实际部署时,将首包丢弃和源认证结合使用。防御SYN Flood攻击时,先通过首包丢弃功能过滤一些攻击报文,当重传的 SYN 报文超过告警阈值后,再启动源认证。这样可以减少反弹的 SYN-ACK报文的数量,缓解网络拥塞情况。对于虚假源攻击,尤其是对于不断变换源IP和源端口的虚假源攻击,可以达到最佳防御效果。

你可能感兴趣的:(网络,服务器,运维)