Security ❀ DNS协议常见DOS攻击详解

文章目录

  • 1. DNS协议基础概述
  • 2. DNS报文详解
    • 2.1. DNS Request 请求包
    • 2.2. DNS Reply 响应包
  • 3. DNS Request Flood
    • 3.1. 攻击原理
    • 3.2. 防护方法
      • 3.2.1. TC源认证
      • 3.2.2. 被动防御
      • 3.2.3. CNAME防护模式
      • 3.2.4. *CANME类型解析过程**
  • 4. DNS Reply Flood
    • 4.1. 攻击原理
    • 4.2. 防护方法
  • 5. DNS 反射攻击
    • 5.1. 攻击原理
    • 5.2. 防护方法
  • 6. DNS 缓存投毒
    • 6.1. 攻击原理
    • 6.2. 防护方法
  • 7. 总结

1. DNS协议基础概述

DNS - Domain Name System 域名解析服务,提供客户端域名解析服务,将域名解析成网络上能够访问的IP地址。
参考文档:Linux系统DNS服务部署参考

2. DNS报文详解

2.1. DNS Request 请求包

Client发送请求到Server侧,请求某个域名的解析IP地址。
在这里插入图片描述

  • QR标识位:为0代表为DNS请求,为1代表DNS响应;
  • TC标识位:表示“可截断的”。如果使用UDP时,当应答报文超过512字节时,只返回前512个字节;

通常情况下,DNS查询都是使用UDP查询,UDP提供无连接服务器,查询速度快,可降低服务器的负载。当客户端发送DNS请求,并且返回响应中TC位设置为1时,就意味着响应的长度超过512个字节,而仅返回前512个字节。这种情况下,客户端通常采用TCP重发原来的查询请求,并允许返回的响应报文超过512个字节。直白点说,就是UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志位会置1,这时则使用TCP发送。

  • Queries:请求域名与请求类型,常见类型有A、AAAA、CNAME、NS、MX等。

2.2. DNS Reply 响应包

Server侧收到Client请求后,做出域名解析的回应报文。
在这里插入图片描述

  • TTL:客户端保留该解析资源记录的时间,上图为5s;
  • TYPE:DNS解析类型,常见类型有A、AAAA、CNAME、NS、MX等。

3. DNS Request Flood

3.1. 攻击原理

黑客控制僵尸网络向DNS服务器发送大量的不存在的域名解析请求,消耗解析资源,直至服务器无法正常响应合理的解析请求。

3.2. 防护方法

3.2.1. TC源认证

(TC标识位作用参考本文2.1章节内容)当DNS请求达到设置防护的阈值时,开启TC位源认证,当新的一个DNS请求到达时,防护设备修改TC=1,并返回到Client,使得Client使用TCP连接请求DNS域名解析操作,此时防护设备与Client进行三次握手,Client发送SYN到防护设备,防护设备将Client IP加白并且返回错误序列号,Client触发TCP机制发送RST,且重新发送SYN连接三次握手,此时由于加白,报文直接转发到DNS服务器侧,此时建立三次握手成功,可正常请求。

  • 优点:避免无效不合理域名的请求,同时可防止无效IP的地址发送DNS请求(无效IP无法发送TCP连接);
  • 缺点:部分Client无法使用TCP连接请求DNS解析(多适用于客户端是浏览器的解析请求),无法防止肉机多点请求(肉机可以正常发送TCP连接)。

3.2.2. 被动防御

当DNS请求达到设置的防护阈值时,去掉修改TC=1的机制,直接丢弃新收到第一个DNS请求包并同时记录其HASH值(通常为报文三元组信息和时间戳),查看是否会重新发送(DNS重传机制),若重传的报文可以命中前面保存的HASH值和时间戳,则正常转发并提供解析。

  • 优点:适用于攻击源不断变化的DNS请求攻击手段,对客户端的类型并无任何限制;
  • 缺点:会产生丢包现象,但属于合理丢包。

3.2.3. CNAME防护模式

此防护需要理解CNAME类型的使用方法。当DNS请求达到设置的防护阈值时,防护设备使用CNAME类型指定Client请求某个域名的别名,若Client继续请求该域名的别名解析地址,则通过源认证且重新使用CNAME类型指定为正确的域名(即正常请求的域名),且后续某个时间段内不在进行拦截(类比会话保持效果)。

  • 优点:可以防护较多场景下的DNS请求Flood攻击;
  • 缺点:解析多了两次CNAME别名解析,整体解析耗时更久。

3.2.4. CANME类型解析过程*

CNAME解析类型解释:域名b、c、d分别为域名a的别名1、2、3,当解析域名d时,域名d返回解析结果会携带CNAME类型为域名a,域名a解析类型为A类型,解析IP为1.1.1.1,若需要替换解析IP,只需要将域名a的映射IP 1.1.1.1替换为2.2.2.2即可,其他CNAME域名均不需要进行修改(具体可参考本文2.2章节请求包图例中的CNAME类型)。
在这里插入图片描述

4. DNS Reply Flood

4.1. 攻击原理

黑客控制僵尸网络机器发出大量的伪造DNS Reply报文,由于UDP协议为无连接状态的,DNS服务器收到大量Reply报文时,无论有没有发出过解析请求,都会对这些Reply作出处理动作,导致资源消耗巨大而影响到正常服务功能。

4.2. 防护方法

当达到防护阈值时,开启源认证功能,防护设备构造Query ID和源端口的DNS请求包,若Client正常返回Reply包,则认证通过(伪造源无法回复Reply),短时间内不再拦截此IP。

5. DNS 反射攻击

DNS反射攻击属于DNS Reply Flood的一种变异方式,属于更高级的DNS Reply Flood。

5.1. 攻击原理

黑客将自己的SIP伪造成被攻击目标的IP地址,然后向一系列网络中开放的DNS服务器发送大量的查询请求,通过伪造DNS请求报文的SIP控制DNS回应流量的流向,引导到被攻击的目标,导致其发生网络拥塞从而产生拒绝服务现象。

5.2. 防护方法

反射攻击的DNS请求均为合理请求,而DNS Reply也全部为真实报文,因此源认证方式就无法进行防护了。此时可以借鉴防火墙的会话表机制,利用DNS交互过程中Request报文首包建立会话机制来做防护手段。防护设备设置会话检查机制,使用五元组校验DNS请求,若匹配成功则允许通过,反之丢弃;

会话检查之后可以结合限速机制来约束流量拥塞,常见的有两种:

  • 限速流量TOP的域名请求;
  • 限速流量TOP的SIP。

6. DNS 缓存投毒

6.1. 攻击原理

DNS缓存服务器并不需要知道IP和域名的映射关系,只需要缓存到Client请求到的授权服务器上的解析记录即可,等到TTL老化时间到达后清理缓存,并重新缓存新的记录,若此时黑客伪造了大量的恶意的DNS Reply报文发送给缓存服务器抢先命中Query ID,导致缓存服务器无意将恶意的域名和IP的映射关系存储到缓存中,当Client再次通过缓存解析时,就会被指向恶意目标。

6.2. 防护方法

仍可以以五元组方式进行防护,防护设备可记录缓存服务器的Query ID等信息,若Reply报文中携带的信息与所记录的信息一致时放行,反之丢弃即可。

7. 总结

常见的DNS DOS防护手段的方法:

  • 若攻击源随机且不存在,则推荐使用构造数据包以是否可以触发重传机制进行防护;
  • 若攻击源随机且为肉机,则推荐使用五元组方法记录会话,成功匹配的流量方可放行;
  • 若攻击源单一则推荐直接进行限制源IP进行防护;
  • 若避免被攻击服务影响其他相关服务,则推荐使用限制流量占用TOP服务以降低影响范围。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年【R1快开门式压力容器操作】最新解析及R1快开门式压力容器操作复审考试

题库来源:安全生产模拟考试一点通公众号小程序 R1快开门式压力容器操作最新解析是安全生产模拟考试一点通生成的,R1快开门式压力容器操作证模拟考试题库是根据R1快开门式压力容器操作最新版教材汇编出R1快开门式压力容器操作仿真模拟考试。2023年【R1快…

Express框架开发接口之书城商店原型图

这是利用Axure画的,简单画一下原型图,根据他们的业务逻辑我们完成书城商店API开发 首页 分类 购物车 个人中心

批量采集各类自媒体平台内容为word文档带图片软件【支持18家自媒体平台的爬取采集】

批量采集各类自媒体平台内容为word文档带图片软件介绍: 1、支持头条号、大鱼号、企鹅号、一点号、凤凰号、搜狐号、网易号、趣头条、东方号、时间号、惠头条、WiFi万能钥匙、新浪看点、简书、QQ看点、快传号、百家号、微信公众号的文章批量采集为docx文档并带图片。…

分布式事务(再深入)——分布式事务理论基础 Java分布式事务解决方案

前言 事务(TRANSACTION)是一个不可分割的逻辑单元,包含了一组数据库操作命令,并且把所有的命令作为一个整体向系统提交,要么都执行、要么都不执行。 事务作为系统中必须考虑的问题,无论是在单体项目还是在分布式项目中都需要进行…

力扣:147. 对链表进行插入排序(Python3)

题目: 给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中&#xff0c…

c++ Vector 学习

vevtor 是c 中自带得动态数组&#xff0c;dynamic array array can hold different values/objects of same type 可以装不同得类型或者对象 dynamic size can be changed at runtime 可以运行得时候改变 要使用的话&#xff0c;先引入 #include <vector> std::vector…

性能压力测试主要目标及步骤

性能压力测试是软件开发生命周期中至关重要的一部分&#xff0c;旨在评估应用程序或系统在高负载和极端条件下的性能表现。这种测试有助于发现性能瓶颈、资源耗尽和错误&#xff0c;以确保应用程序在真实使用情况下的可靠性和稳定性。本文将探讨性能压力测试的概念、方法和最佳…

ps提示vcruntime140.dll无法继续执行此代码的多种解决方法分享

我在安装Photoshop软件时遇到了一个问题&#xff0c;即在运行过程中弹出了一个错误提示框&#xff0c;显示“由于找不到vcruntime140.dll&#xff0c;无法继续执行此代码”&#xff0c;我通过查找资料了解到vcruntime140.dll是一个动态链接库文件&#xff0c;它是Visual C Redi…

AI时代,ChatGPT与文心一言选哪一个?

&#x1f388;个人公众号:&#x1f388; :✨✨✨ 可为编程✨ &#x1f35f;&#x1f35f; &#x1f511;个人信条:&#x1f511; 为与不为皆为可为&#x1f335; 你们平时都是在什么情况下使用GPT的呢&#xff1f;为何使用&#xff1f;都使用什么平台的&#xff1f; 针对以上问…

模板引擎技术---FreeMarker

什么是模板引擎 模板引擎是一种用于生成动态内容的工具&#xff0c;它将数据和静态模板结合起来&#xff0c;生成最终的文档&#xff08;通常是HTML、XML、JSON等格式&#xff09;&#xff0c;这些文档可以被浏览器或其他客户端解析并展示给用户。模板引擎的主要目的是将数据和…

树结构及其算法-二叉树遍历

目录 树结构及其算法-二叉树遍历 一、中序遍历 二、后序遍历 三、前序遍历 C代码 树结构及其算法-二叉树遍历 我们知道线性数组或链表都只能单向从头至尾遍历或反向遍历。所谓二叉树的遍历&#xff08;Binary Tree Traversal&#xff09;&#xff0c;简单的说法就是访问树…

大长案例 - 经典长连接可水平扩容高可用架构

文章目录 需求设计 需求 支撑百万充电桩充电业务的长连接可水平扩容高可用架构需求如下&#xff1a; 可扩展性&#xff1a;系统应该具备高度可扩展性&#xff0c;能够轻松应对新增充电桩的需求。任何时候都应该容易添加更多的充电桩&#xff0c;而不会影响整体性能。 负载均衡…

【SpringSecurity】快速入门—通俗易懂

目录 1.导入依赖 2.继承WebSecurityConfigurerAdapter 3.实现UserDetailsService 4.记住我 5.用户注销 6.CSRF理解 7.注解功能 7.1Secured 7.2PreAuthorized 7.3PostAuthorized 7.4PostFilter 7.5ZPreFilter 8.原理解析 1.导入依赖 首先&#xff0c;在pom.xml文…

matplotlib入门-基金走势图

一、matplotlib简介 matplotlib是一个Python 2D绘图库&#xff0c;开发者仅需要几行代码就可以生成曲线图、柱状图、散点图甚至动画。需要另外安装&#xff0c;一条命令搞定。 pip install matplotlib 它的绘图接口在matplotlib.pyplot模块中&#xff0c;pyplot提供和MATLIB…

Mac终端学习

命令1&#xff1a;ifconfig 作用&#xff1a;列出本机所有的网络设备以及其上面的配置&#xff0c;主要指的是ip地址和mac地址 其他用法&#xff1a;sudo ifconfig en4 add 10.10.10.12 netmask 255.255.255.0 作用&#xff1a;给en4加入别的网段 其他用法&#xff1a;sudo i…

让你笑到不行的笑话短视频接口,快来试试!

11在当今这个快节奏的社会中&#xff0c;笑话成为了许多人调节情绪的有效方法。如今&#xff0c;短视频平台已经成为了最受欢迎的娱乐方式之一&#xff0c;因此&#xff0c;将笑话和短视频结合起来&#xff0c;成为了一种很有趣的方式来带给我们欢乐。今天我们要介绍的是挖数据…

JMeter的使用——傻瓜式学习【下】

目录 前言 1、自动录制脚本 1.1、原理 1.2、JMeter脚本录制 2、JMeter直连数据库 2.1、直连数据库的作用 2.2、JMeter直连数据库的步骤 案例&#xff1a; 3、JMeter的逻辑控制器 3.1、if控制器 案例&#xff1a; 3.2、循环控制器 案例&#xff1a; 3.3、ForEach控…

NB-IOT的粮库挡粮门异动监测装置

一种基于NBIOT的粮库挡粮门异动监测装置,包括若干个NBIOT开门监测装置,物联网后台管理系统,NBIOT低功耗广域网络和用户访问终端;各个NBIOT开门监测装置通过NBIOT低功耗广域网络与物联网后台管理系统连接,物联网后台管理系统与用户访问终端连接.NBIOT开门监测装置能够对粮库挡粮…

从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程

文章目录 前言内容简介作者简介专家推荐读者对象直播预告 前言 计算机技术的发展和互联网的普及&#xff0c;使信息处理和传输变得更加高效&#xff0c;极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术&#xff0c;也在不断地影响和…

Gcov 查看代码覆盖率

GCOV 工具简介 gcov是一个测试代码覆盖率的工具。 它是 gcc 自带的查看代码覆盖率的工具&#xff0c;无需额外安装&#xff0c;在嵌入式的 arm-eabi-none-gcc 中同样可以使用&#xff08;需要重写部分系统函数&#xff09;。 使用效果如下图所示&#xff1a; 程序运行完成后…