TCP报文 Flood攻击原理与防御方式

TCP交互过程中包含SYN、SYN-ACK、ACK、FIN和RST报文,这几类报文也可能会被攻击者利用,海量的攻击报文会导致被攻击目标系统资源耗尽、网络拥塞,无法正常提供服务。接下来我们介绍几种常见的Flood攻击的原理和防御方式。

SYN Flood攻击与防御

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

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

基本源认证

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

  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高级源认证过程如下图所示:

  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报文的数量,缓解网络拥塞情况。

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报文,相当于发起了第一次握手,以探测该地址是否真实存在。

SYN-ACK Flood源认证过程如下:

  1. 在连续一段时间内去往目标服务器的SYN-ACK 报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS 系统向发送 SYN-ACK 报文的源地址发送SYN报文。

  2. Anti-DDoS设备通过源IP地址对探测报文的响应报文校验源是否真实存在,以防止虚假源攻击。

  • 如果没有响应报文,则表示之前的SYN-ACK报文为攻击, Anti-DDoS设备不会将该SYN-ACK报文发给被防护目标,有效终止了攻击。

  • 如果有响应报文, Anti-DDoS设备验证响应报文是否为探测报文的回应报文,如果是,则Anti-DDoS设备将该源IP地址加入白名单,同时会向源地址发送RST报文,断开自己和这个源地址的连接。在白名单老化前,从此源IP地址发出的SYN-ACK报文都直接被Anti-DDoS设备转发。

ACK Flood 攻击与防御原理

在 TCP 三次的握手过程中,ACK 报文出现在第三次握手时,用以确认第二次握手中的SYN-ACK报文。ACK Flood攻击指的是攻击者利用工具或者操控僵尸主机,向目标服务器发送大量的 ACK 报文,服务器忙于回复这些凭空出现的第三次握手报文,导致资源耗尽,无法响应正常的请求。

华为Anti-DDoS解决方案使用会话检查的方式防御ACK Flood攻击。一次正常的TCP连接建立过程,必须先有SYN报文,接着是 SYN-ACK 报文,然后才是 ACK 报文。只有ACK 报文命中了会话,才能说明该报文是正常交互过程中的报文,是真实的报文。

Anti-DDoS系统对ACK报文进行会话检查时,支持基本和严格两种模式。

1.基本模式

使用基本模式时,Anti-DDoS系统对ACK报文进行会话检查,如果ACK报文没有命中会话,Anti-DDoS 系统会允许第一个 ACK 报文通过,并建立会话,以此来对后续ACK报文进行会话检查;如果ACK报文命中了会话,则继续检查报文的序号,允许序号正确的报文通过,序号不正确的报文则被丢弃。

基本模式允许第一个 ACK 报文通过,检查条件比较宽松。如果攻击者发送变源或变端口的 ACK 报文,基本模式会允许报文通过并建立会话,这样会导致攻击报文被放过,影响防御效果。为此,Anti-DDoS 系统还提供了严格模式,检查条件更加严格,防御效果也会更好一些。

2.严格模式

严格模式指的是Anti-DDoS系统对ACK报文进行会话检查时,如果ACK报文没有命中会话,系统直接丢弃报文;如果 ACK 报文命中会话,并且序号正确,系统允许报文通过。

严格模式的检查条件比较苛刻,没有命中会话的 ACK 报文都会被丢弃。在旁路部署动态引流的场景,由于报文来回路径不一致,正常业务的 ACK 报文会因为没有命中会话而被丢弃,因此对正常业务有一定的影响。

FIN/RST Flood攻击与防御

TCP交互过程中还存在FIN报文和RST报文,FIN报文用来关闭TCP连接,RST报文用来断开TCP连接。这两种报文也可能会被攻击者利用来发起DDoS攻击,导致目标服务器资源耗尽,无法响应正常的请求。

华为Anti-DDoS解决方案同样使用会话检查的方式防御FIN/RST Flood攻击。如果FIN/RST报文没有命中会话,系统直接丢弃报文;如果FIN/RST报文命中会话,系统则根据会话创建原因和会话检查结果来判断该报文是否通过。

  • 如果会话是由SYN报文或SYN-ACK报文创建的,则允许该FIN/RST报文通过。

  • 如果会话是由其他报文创建的(例如 ACK 报文),则进一步检查报文序号是否正确,允许序号正确的报文通过,序号不正确的报文则被丢弃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/7734.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】项目开发遇到问题及解决总结

1.控件的触发:toggle()、triggered()、clicked() 区别: 都是按钮点击后发射的信号 clicked():用于Button发射的信号triggered():用于QAction发射的信号, trigger是一次性的。 点击后,无法改变状态。 要么…

【案例教程】基于RWEQ模型的土壤风蚀模数估算及其变化归因分析实践技术

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一,土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2,占国土总面积的16.7%,严重影响这些地区的资源开发和社会经…

论文笔记|ECCV2022:Self-Promoted Supervision for Few-Shot Transformer

论文地址:https://arxiv.org/abs/2203.07057 代码链接:https://github.com/DongSky/few-shot-vit 这篇论文在2022年发表在ECCV上,论文的题目是用于小样本Transformer的self-promoted supervision(自我推荐监督) 1 Mot…

求给定集合中好数对的个数

已知一个集合A,对A中任意两个不同的元素求和,若求得的和仍在A内,则称其为好数对。例如,集合A{1 2 3 4},123,134,则1,2和1,3 是两个好数对。 编写程序求给定集合中好数对的个数。 注:…

java设计模式(1) 适配器模式、装饰器模式

适配器模式 适配器就是一种适配中间件,它存在于不匹配的了两者之间,用于连接两者,使不匹配变得匹配。 手机充电需要将220V的交流电转化为手机锂电池需要的5V直流电 知识补充:手机充电器输入的电流是交流,通过变压整流…

XML复习

目录什么是XMLXML中的内容可以干什么XML文件的创建以及其格式XML的文档约束-DTD约数XML的文档约束-schema约束Dom4J 解析XML 文档什么是XML XML 全称(extensible Markup Lanage) 可扩展标记语言它是一种数据的表示形式, 可以存储复杂的数据格式以及我们自己定义的格式.XML经常…

windows安装ubuntu时错误WslRegisterDistribution failed with error: 0x8007023e的解决方法

cmd或者powershell安装,或者打开linux时 莫名的出现了如下错误: Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8007023e Error: 0x8007023e {Application Error} The exception s (0x尝试了很多的方法都不…

Qt图片显示有波纹

现象 Qt中当渲染显示的分辨率比原图片分辨率小时,就会有波纹。如下图所示,左边是正常显示,右边衬衫那里产生严重的波纹。这种波纹在计算机图形学叫摩尔纹,这是纹理贴图采样出现走样的现象,纹理分辨率过大时就会出现这…

解决Windows微信和 PowerToys 的键盘管理器冲突

Windows开机之后PowerToys能正常使用, 但是打开微信之后设置好的快捷键映射就全部失效了 打开微信 -> 左下角三条杠 -> 设置 -> 快捷键 首先我把微信的快捷键全部清空了,发现还是没用 然后发现了设置里默认勾选了检测快捷键,我在想程序肯定是一直在后台检测,而powerTo…

可以计算“如何把程序写好”吗?

其实简单理解这个问题就是“可不可以用机器来判断人的程序写得好不好? 后面我查阅了资料,历史上有一个对计算机领域影响颇深的可计算理论,“计算”应该就来源于这里。其实继续深挖还能找出很多涉及计算机本源的有趣的知识,比如图…

异构计算给我们带来了哪些思考?

虽然异构计算的快速发展给企业创新带来了更加强大的算力支撑,但真正推动异构计算的高速发展和应用落地,笔者认为还需要在以下三个方面做好功课。 从2022年火爆全球的元宇宙,到今年的ChatGPT,以人工智能为代表的科学技术正在创造出…

Unity Animation -- 改进动画效果

使用曲线(Curves)改善动画 在上一篇笔记中(Unity Animation -- Overview_亦枫Leonlew的博客-CSDN博客),我们制作了简单的小球弹跳的动画,但这个动画看起来很不自然,小球的弹跳看起来就像是不受…

Vue3信息提示(Modal)

Vue2信息提示(Modal) 可自定义设置以下属性: 标题描述(title),类型:string,默认 Title 内容描述(content),类型:string,…

盲盒经济下与社交电商结合,打造电商卖货新模式

如今,盲盒经济正在从线下延伸到线上,从潮流玩具扩展到美妆、食品、服装、数码等领域,形成了一种新的电商生态。 什么是盲盒电商? 盲盒电商是一种电商行业的营销模式,通过发起盲盒活动或拆盲盒,让参与者不…

MongoDB 查询文档(3)

我们之前讲解过,查询文档的语法: db.collection.find(query, projection, options) 其中 query 代表的是查询过滤器,projection 代表的是文档返回的字段,options 代表的是用于查询的其他选项; 我们已经对query进行了…

Ubuntu16.04虚拟机下安装Qt5.10.0

首先安装虚拟机Vmware,具体参见: Win10安装Vmware+Ubuntu16.04_芯片-嵌入式的博客-CSDN博客 安装完成后,下载qt-opensource-linux-x64-5.10.0.run,使用U盘来实现win10和ubuntu虚拟机之间的文件传输,cp到一个目录后,sudo ./qt-opensource-linux-x64-5.10.0.run进行运行,…

I/O多路转接之select

初识select 系统提供select函数来实现多路复用输入/输出模型.* select系统调用是用来让我们的程序监视多个文件描述符的状态变化的; * 程序会停在select这里等待,直到被监视的文件描述符有一个或多个发生了状态改变;select函数原型 select的函数原型如下: #include …

SpringCloud 使用sentinel

一、添加依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> 二、配置文件配置地址 spring:cloud:sentinel:transport:dashboard: localhost:8080三…

【CSS】课程网站 网格商品展示 模块制作 ① ( 网格商品展示模块盒子模型测量及样式 | 顶部文本标题盒子测量及样式 | 代码示例 )

文章目录一、网格商品展示模块盒子模型测量及样式1、盒子尺寸测量2、标题盒子尺寸测量和样式3、左侧文本盒子尺寸测量和样式4、右侧文本盒子尺寸测量和样式二、顶部文本标题盒子代码示例1、HTML 标签结构2、CSS 样式3、展示效果绘制矩形框中的部分 : 一、网格商品展示模块盒子…

【服务器数据恢复】NTFS分区被格式化如何恢复数据?

服务器数据恢复环境&故障&#xff1a; 误操作格式化服务器RAID5磁盘阵列下的分区&#xff08;NTFS文件系统&#xff09;。 服务器数据恢复过程&#xff1a; 1、将故障服务器连接到北亚企安备份服务器上&#xff0c;将故障服务器的所有硬盘设置为脱机状态&#xff0c;然后以…
最新文章