Security ❀ UDP/TCP传输层常见DOS攻击详解

文章目录

  • 1. UDP协议基础
  • 2. UDP Flood
    • 2.1. 攻击原理
    • 2.2. 防护方法
  • 3. TCP三次握手和四次挥手
    • 3.1. 三次握手
    • 3.2. 四次挥手
  • 4. SYN Flood
    • 4.1. 攻击原理
    • 4.2. 防护方法
  • 5. SYN-ACK Flood
    • 5.1. 攻击原理
    • 5.2. 防护方法
  • 6. ACK Flood
    • 6.1. 攻击原理
    • 6.2. 防护方法
  • 7. FIN/RST Flood
    • 7.1. 攻击原理
    • 7.2. 防护方法
  • 8. TCP连接耗尽
    • 8.1. 攻击原理
    • 8.2. 防护方法
  • 9. 异常报文
    • 9.1. 攻击原理
    • 9.2. 防护方法

1. UDP协议基础

UDP - 用户数据报协议:是一种无连接的四层传输协议,不提供数据的校验机制。当报文成功发送之后不再关心此报文是否完整的到达对端。
在这里插入图片描述
可以简单理解为:以牺牲协议安全性为前提,减少了需要传输的内容,UDP报文资源消耗更小,处理和传输速度更快,因此大部分的音频和视频数据均使用UDP协议传输。

2. UDP Flood

2.1. 攻击原理

黑客发送大量UDP协议报文到目标,由于UDP协议无法进行数据校验,因此目标会处理大量UDP报文而占用其业务资源。

2.2. 防护方法

  • 常用端口限速:常见UDP协议,如DNS、NTP、SNMP等协议均有固定端口,可以对其端口进行阈值限速处理,防止流量过大;
  • 特征提取过滤:UDP报文伪造多为工具输出,因此具有一定的特征值,常位于协议包的尾部,因此可以尝试获取UDP协议包载荷的最后几个字节,这个字节数最好为递增值(如1-8内递增变动),还需要注意偏移量。

3. TCP三次握手和四次挥手

3.1. 三次握手

  • SYN:第一次握手,客户端向服务器发起连接请求,报文中设置SYN标志位为1,序号为0;
    在这里插入图片描述
  • SYN-ACK:第二次握手,服务器收到客户端请求后,向客户端回应报文,报文中设置SYN和ACK标志位为1,序号为0(服务器与客户端的序列号都是自维护递增关系,可以在Next Seq Number字段查看下一个序列号的值),确认序号为客户端的序号+1,即0+1=1;
    在这里插入图片描述
  • ACK:第三次握手,客户端收到服务器回应的报文后,检查报文中的确认序列号是否正常,如果正确则发送确认报文,确认报文中ACK标志位为1,确认序列号为服务器的序列号+1,即为0+1=1;
    在这里插入图片描述
    经过上述三次握手之后,TCP连接建立完成。若中间机制存在异常,则会发送RST报文(RST标志位为1)中断TCP连接会话,并重新建立新的连接。

3.2. 四次挥手

  • FIN:TCP断开连接时第一次握手由服务器发起,报文中FIN标和ACK标志位为1,序号为11;
  • ACK:第二次握手,客户端收到服务器发送的FIN报文之后,向服务器发送回应报文,报文中ACK标志位为1,确认序列号为服务器FIN报文中序列号+1,即为11+1=12;
  • FIN:第三次握手,此时客户端也需要关闭与服务器的连接,客户端向服务器发送FIN报文,报文中FIN标和ACK标志位为1,序号为22(服务器与客户端的序列号都是自维护递增关系,可以在Next Seq Number字段查看下一个序列号的值);
  • ACK:第四次握手,服务器收到客户端发送的FIN报文之后,向客户端发送回应报文,报文中ACK标志位为1,确认序列号为客户端FIN报文中序列号+1,即为22+1=23;

4. SYN Flood

4.1. 攻击原理

攻击者利用攻击或操纵僵尸网络主机发送大量TCP SYN报文,当服务器回应SYN-ACK报文后,攻击者不再回应ACK,导致三次握手连接无法建立,因此服务器上会残留大量的TCP半连接,导致其服务资源的浪费。

4.2. 防护方法

  • 基本源认证:当流量触发防护阈值时,新的SYN报文被防护设备拦截,防护设备向客户端发送一个SYN-ACK报文, 其携带了错误的ACK Seq,真实客户端收到了带错误的序号报文,会RST当前连接,重新发起新的连接,防护设备若收到此IP的RST报文,则对IP加白即可。
  • 高级源认证:与基本源认证不同的是,高级源认证发送的是正常的SYN-ACK报文,只不过连接的超时时间比TCP连接更加短,在限定时间内无法收到ACK时则断开此链接,不再进行多余的等待;
  • 首包丢弃:防护设备丢弃第一个SYN报文并且同时记录其报文的三元组信息,此时会触发TCP重传机制,当新的SYN报文匹配到已保存的三元组后进行加白即可。

5. SYN-ACK Flood

5.1. 攻击原理

在TCP连接中,SYN-ACK报文是用来确认第一次握手的机制,如果攻击者利用工具或者操纵僵尸主机发送大量SYN-ACK报文到目标机器,目标会首先判断该报文是否属于当前正在建立的三次握手范畴内,不属于的话会直接发送RST报文中断此次连接,目标机器忙于发送大量的RST报文而导致资源消耗。

5.2. 防护方法

  • 反向确认法:当流量触发防护阈值时,收到SYN-ACK报文时会记录其三元组信息,进行反向SYN连接探测,若源头做出响应,直接进行RST并将IP加白,反之无响应时则判断为虚假源。

6. ACK Flood

6.1. 攻击原理

在TCP连接中,ACK报文出现在第三次握手,用来确认第二次的SYN-ACK报文,攻击者利用工具或者操纵僵尸主机发送大量ACK报文,服务器忙于处理这些凭空出现的ACK报文而导致资源耗尽。

6.2. 防护方法

  • 会话匹配模式:对ACK进行会话检查,如果ACK报文没有命中会话,则以此ACK报文的三元组信息建立会话进行存储,后续ACK报文进行会话检查,若命中会话则继续检查报文的序列号Seq Number,正确则放过,反之丢弃;
  • 加强会话模式:不允许第一个ACK报文通过创建会话,只校验完成TCP三次握手的会话,没有命中的ACK均被丢弃,在引流场景下可能存在来回路径不一致问题(请求被代理,响应不过代理),会影响到因为转发的ACK报文。

7. FIN/RST Flood

7.1. 攻击原理

在TCP连接中,FIN和RST报文均用来关闭TCP连接,这两种报文仍然会被大量伪造用来消耗服务器资源。

7.2. 防护方法

  • 会话匹配模式:若会话由SYN或SYN-ACK建立,则允许FIN/RST通过;若会话由其他报文创建,则检查报文内序列号,正确则通过,反之丢弃。

8. TCP连接耗尽

8.1. 攻击原理

攻击者利用僵尸机器大量创建TCP连接,当连接建立完成后

  • 立即发送FIN或RST断开连接,同时快速发起新的连接,重复进行操作即可消耗服务器系统资源;
  • 攻击者发送很少的报文来维持连接状态,以消耗服务器系统资源。

8.2. 防护方法

  • 连接数监控:防护设备可以设置TCP连接速率,当受保护的TCP目标新建了连接,针对源IP进行统计,若某个IP在指定的时间内发起的TCP新建连接数超过了设置阈值,则进行拉黑操作。
  • 报文数量监控:防护设备监控受保护目标的TCP连接,设置在特定时间内通过报文的数量阈值,若时间段内若低于设置阈值的传输报文数量,则断开此异常TCP连接即可。

9. 异常报文

TCP特殊标志位:

  • URG:置1时表示紧急指针有效;
  • ACK:置1时表示确认序号有效;
  • PSH:置1时表示接收方收到数据段后应该尽快送到应用程序;
  • RST:置1时表示重新建立连接;
  • SYN:置1时表示发起一个连接;
  • FIN:置1时表示发送方完成发送任务,释放连接。

9.1. 攻击原理

TCP协议标志位置1严格遵守协议规范,其不遵循规范的报文即为异常报文。

9.2. 防护方法

监控标志位置1的情况:

  • 六个标志位都为1或0;
  • SYN和FIN同时为1;
  • SYN和RST同时为1;
  • FIN和RST同时为1;
  • 仅FIN为1;
  • 仅PSH为1;
  • 仅URG为1;
  • 带有载荷的SYN和SYN-ACK报文;
  • SYN、RST、FIN为1的分片报文;

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

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

相关文章

YOLOv5算法改进(22)— 更换主干网络MobileNetv3 + 添加CA注意力机制

前言:Hello大家好,我是小哥谈。本节课就让我们结合论文来对YOLOv5进行组合改进(更换主干网络MobileNetv3 + 添加CA注意力机制),希望同学们学完本节课可以有所启迪,并且后期可以自行进行YOLOv5算法的改进!🌈 前期回顾: YOLOv5算法改进(1)— 如何去改进YOLOv5算法

MySQL进阶_5.逻辑架构和SQL执行流程

文章目录 第一节、逻辑架构剖析1.1、服务器处理客户端请求1.2、Connectors1.3、第1层:连接层1.4、第2层:服务层1.5、 第3层:引擎层1.6、 存储层1.7、小结 第二节、SQL执行流程2.1、查询缓存2.2、解析器2.3、优化器2.4、执行器 第三节、数据库…

2023年度总结

2023年度总结 我准备用两张图来总结我的2023年 第一张图是达克效应 邓宁-克鲁格效应指的是能力欠缺的人在自己欠考虑的决定的基础上得出错误结论,但是无法正确认识到自身的不足,辨别错误行为,是一种认知偏差现象。这些能力欠缺者们沉浸在自…

计算机毕设 基于大数据的抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,…

YOLO系列环境配置及训练

目录 前言 一、下载所需 1、Anaconda安装 2、NVIDIA 驱动程序安装 3、CUDA安装 4、CUDNN下载及配置 二、环境配置 1、虚拟环境创建 2、Pytorch安装 3、pycharm环境切换及剩余库的安装 4、YOLO代码的测试及训练配置步骤 (1)测试 &#xff08…

PubDef:使用公共模型防御迁移攻击

对抗性攻击对机器学习系统的可靠性和安全性构成了严重威胁。通过对输入进行微小的变动,攻击者就可以导致模型生成完全错误的输出。防御这种攻击是一个很活跃的研究领域,但大多数提议的防御措施都存在重大的缺点。 这篇来自加州大学伯克利分校研究人员的…

初始JVM虚拟机

JVM组成 图解 程序计数器 在JVM线程私有的内存区域中。每个线程都有自己独立的程序计数器。 程序计数器用于存储当前线程正在执行的字节码指令的地址。指示着当前线程执行到了哪一条字节码指令。 堆 是线程共享的区域,用于存储对象的实例和数组对象; …

青翼科技-国产化ARM系列TES720D-KIT

板卡概述 TES720D-KIT是专门针对我司TES720D(基于复旦微FMQL20S400的全国产化ARM核心板)的一套开发套件,它包含1个TES720D核心板,加上一个TES720D-EXT扩展底板。 FMQL20S400是复旦微电子研制的全可编程融合芯片,在单…

K8S知识点(三)

(1)环境搭建-环境初始化 Centos的版本是有要求的必须是7.5或以上,否则安装出来的集群是有问题的Node节点可能加入不到集群中来 详细步骤 1.同时连接三台服务器:查看一下版本 是否正确 2.主机名解析,方便节点之间的…

【ARMv8 SIMD和浮点指令编程】浮点加减乘除指令——四则运算

浮点指令有专门的加减乘除四则运算指令,比如 FADD、FSUB、FMUL、FDIV 等。 1 FADD (scalar) 浮点加法(标量)。该指令将两个源 SIMD&FP 寄存器的浮点值相加,并将结果写入目标 SIMD&FP 寄存器。 该指令可以产生浮点异常。根据 FPCR 中的设置,异常会导致在 FPSR 中…

Vue Vue3

1、创建VUE3工程 使用vue-cli创建: ## 查看vue/cli版本,确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm install -g vue/cli ## 创建 vue create vue_test ## 启动 cd vue_test npm run serve 使用vite创建: …

ClickHouse 学习之从高级到监控以及备份(二)

第 一 部分 高级篇 第 1 章 Explain 查看执行计划 在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能可以看到,并且只能真正执行 sql,在执行日志里面查看。在 20.6 版本引入了原生的执行计划的语法。在 20.6.3 版本成…

计算机网络第4章-IPv4

IPv4数据报格式 IPv4数据报格式如下图所示 其中,有如下的关键字段需要特别注意: 版本(号): 版本字段共4比特,规定了数据报的IP协议版本。通过查看版本号吗,路由器能确定如何解释IP数据报的剩…

深度学习之基于Tensorflow卷积神经网络花卉识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习是一种机器学习方法,它通过模拟人脑神经网络的结构和功能来实现对数据的自动分析和学习。卷积神…

libpthread.so.0: cannot open shared object file: No such file or directory

linux 系统下 /lib64/libpthread so 库文件千万不要修改,不然后果很严重,像我好奇把/lib64/libpthread-2.17.so 改成 libpthread-2.17.so.old,因为 libpthread.so 和 libpthread.so.0 都是软链接,最终链接到的是 libpthread-2.17…

Docker安装Minio(稳定版)

1、安装 docker pull minio/minio:RELEASE.2021-06-17T00-10-46Z docker run -p 9000:9000 minio/minio:RELEASE.2021-06-17T00-10-46Z server /data 2、访问测试 3、MinIO自定义Access和Secret密钥 要覆盖MinIO的自动生成的密钥,您可以将Access和Secret密钥设为…

win10下.net framework 3.5 | net framework 4 无法安装解决方案

.net缺失解决方案 win10 .net framework 3.5组策略设置方案一方案二 win10 .net framework 4 参考文章 win10 .net framework 3.5 组策略设置 方案一 搜索组策略,依次展开“计算机配置”、“管理模板”,然后选择“系统”,找到指定可选组件…

SpringBoot整合Kafka (一)

📑前言 本文主要讲了SpringBoot整合Kafka文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:…

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队

引言 前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互,而前端框架的选择对于实现这些目标至关重要。然而,传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下,我们引入…

安全好用的远程协同运维软件重点推荐-行云管家

对于运维小伙伴而言,一个安全好用的远程协同运维软件至关重要,不仅可以提高工作率,降低工作风险,还能快速解决运维难题。目前市面上远程协同运维软件品牌比较多,这里我们小编给推荐行云管家IT远程协同运维平台。 安全…