暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

华为Anti-DDoS技术漫谈--第四篇 tcp(二)

原创 愤怒的蜗牛 2022-10-08
851

4.1.3 华为Anti-DDoS系统的解决方案

SYN Flood这种没有明显攻击特征的报文,工程师不能通过特征识别或者指纹学习的方式对SYN报文进行过滤。我们可以从SYN报文建立连接的“行为”入手,判定其是否由真实源所发出的请求。

对于面向连接的DDoS攻击,最有效的防御方式是源认证。源认证有3个层面,分别为TCP/IP源认证、应用层源认证和用户源认证。

针对SYN Flood攻击的源认证,是整个源认证防御系统中的第一层TCP/IP源认证,如图4-5所示。在TCP三次握手还没有建立成功之前,Anti-DDoS会验证攻击源的TCP/IP是否真实可信。

从报文交互过程看出,Anti-DDoS设备代替Web服务器向客户端反弹一个错误序列号的SYN-ACK报文,等待客户端的回应。

① 如果是虚假源,网络中不存在这个源IP,或者源IP存在于网络但没有发送过SYN请求,源IP无故收到一个SYN-ACK报文,不会做任何响应,也无法通过源认证。

② 如果是真实源,当它收到一个错误的SYN-ACK报文,会回应一个RST报文,要求服务器重传。这时Anti-DDoS设备判定客户端是真实源,并加入白名单。后续这个源在一定时间内发送的SYN报文,会直接匹配白名单,并送达服务器。

当黑客发动10GB的变换源IP和源端口的攻击流量,服务器又反弹10GB的认证报文时,会造成网络严重拥塞。源认证的反弹机制会导致二次攻击的情况,因此Anti-DDoS设置了首包丢弃功能。

TCP之所以可靠,除了三次握手机制,还有一个是处理数据超时和重传的机制,如图4-6所示。TCP要求在发送端每发送一个报文段,就启动一个定时器并等待确认信息;接收端成功接收新数据后回复确认信息。若定时器在超时前数据未能被确认,TCP会认为报文段中的数据已丢失或损坏,并对报文段中的数据进行重新组织和重传。

首包丢弃便是利用TCP重传机制,对收到的第一个SYN报文直接丢弃,然后判定客户端是否重传。如果重传,再对第二个包进行源认证反弹。这样可以大大减少反弹包的数量,同时提高设备的处理性能,以达到最佳防御效果。

Anti-DDoS 设备判定这个报文是不是重传报文,有两个依据:三元组和时间间隔。三元组包含源IP地址、源端口和协议。

当 Anti-DDoS 设备收到一个 SYN 报文,首先会查询有没有匹配到三元组,如果没有,就认为该报文是首包,将其丢弃,并记录三元组信息。当 SYN 报文匹配到三元组时,再继续计算该报文与匹配到三元组的上一个报文到达的时间间隔。如果时间间隔不匹配,则认为是首包,将其丢弃;如果时间间隔匹配,则认为是后续包,将其放行。

源认证要和首包丢弃功能一起配合使用,对于虚假源攻击,尤其是针对不断变换源IP和源端口的虚假源攻击,可以达到最佳防御效果。其中,源认证是对IP层面的校验,认证这个源是不是真实存在的源;首包丢弃是对于TCP栈层面的校验,用于判断是否是这个源发出的真实请求。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论