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

news2024/11/25 23:52:29

文章目录

  • 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.coloradmin.cn/o/1161182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【44.全排列Ⅱ】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:vector<vector<int>> ret;vector<int> path;vector<bool> check;vector<vector<int>> permuteUnique(vector<int>&am…

C语言--温度转化(把华氏度转换为摄氏度)

一.问题描述: 有人用温度计测量出用华氏法表示的温度,今要求把它转换为以摄氏法表示的温度,转换公式如下: 这个代码是C语言的入门代码&#xff0c;难点在于5/9在程序中如何写出。在计算机中5/9等于1。 /符号&#xff1a;整除问题(整数/整数 结果是丢弃小数的整数) 5/2 2。那…

好看的个人导航页源码

这款导航页源码 非常合适个人使用 简洁漂亮 放点自己经常用到的网站 还支持别人自助添加快捷书签 源码获取&#xff1a;https://www.qqmu.com/930.html

UE5——网络——属性复制

当属性被注册进行复制后&#xff0c;您将无法再取消注册&#xff08;涉及到生存期这一话题&#xff09;。之所以会这样&#xff0c;是因为我们要预制尽可能多的信息&#xff0c;以便针对同一组属性将某一工作分担给多个连接。这样可以节省大量的计算时间。 virtual void GetLif…

java入坑之运行管理

一、概述 1.1Java开发和运行过程 编写阶段&#xff1a;采用各种编辑工具&#xff0c;编写.java文件编译阶段&#xff1a;采用javac.exe对java文件编译&#xff0c;产生.class文件运行阶段&#xff1a;采用java.exe加载.class文件运行 详细过程 1.2相关概念 javaOS管理 JavaOS是…

全新二开游戏支付通道/话费/电网、紫水晶带云端源码

源码修复可用&#xff0c;YY业务都可用 本店所售程序只供测试研究&#xff0c;不得使用于非法用途&#xff0c;不得违反国家法律&#xff0c;不得用于进行违法行为&#xff0c;否则后果自负&#xff01;购买以后用作他用附带的一切法律责任后果都由购买者承担于本店无任何关…

Linux开机、重启、关机和用户登录注销

1.【关机】 shutdown shutdown now 表示立即关机 shutdown -h now 表示立即关机 shutdown -h 1 表示1分钟后关机 halt 用来关闭正在运行的Linux操作系统 2.【重启】 shutdown -r now 表示立即重启 reboot 重启系统 sync …

蜜罐系统HFish的部署与功能实测

1. 引入 根据参考1对蜜罐的定义&#xff1a; 蜜罐&#xff08;Honeypot&#xff09;是一个计算机科学领域的术语&#xff0c;指用于检测或防御未经授权的行为或黑客攻击的陷阱。其名称来源于其工作原理类似于用来诱捕昆虫的蜜罐。蜜罐通常伪装成看似有利用价值的网路、资料、…

JVM修炼印记之初识

文章目录 JVM认识JVM的功能常见JVMHotSpot的发展历程 JVM认识 Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;是一个用于执行Java字节码的虚拟计算机。它是Java语言的核心&#xff0c;可以在不同的操作系统和硬件平台上运行Java程序。 JVM负责将Java…

[架构之路-252/创业之路-83]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业应用信息系统集成

目录 第一章 什么是企业应用信息系统集成What 1.1 简介 1.2 架构 二、为什么需要企业应用信息系统集成Why 三、如何实现企业应用信息系统集成 3.1 步骤 3.2 企业应用集成的层次 3.3 业务流程重组 第一章 什么是企业应用信息系统集成What 1.1 简介 企业应用信息系统集…

力扣刷题 day62:11-1

1.反转字符串中的元音字母 给你一个字符串 s &#xff0c;仅反转字符串中的所有元音字母&#xff0c;并返回结果字符串。 元音字母包括 a、e、i、o、u&#xff0c;且可能以大小写两种形式出现不止一次。 方法一&#xff1a;双指针 #方法一&#xff1a;双指针 def reverseV…

国际多语言出海商城源码/返佣产品自动匹配拼单商城源码

源码介绍&#xff1a; 国际多语言出海商城返佣产品自动匹配订单拼单商城源码&#xff0c;8国多语言出海拼单商城。此网站是很多巴西客户定制的原型&#xff0c;已投放运营符合当地本地化。 多语言商城返利返佣投资理财派单自带余额宝&#xff0c;采取全新支付端口&#xff0c…

Mac电脑怎么运行 Office 办公软件

虽然 Office 软件也有 Mac 版本的&#xff0c;但是有蛮多小伙伴用起来还是感觉不得劲&#xff0c;毕竟接触了太久的 Windows&#xff0c;所以想要使用 Windows 版本的 Office 软件。 今天就给大家介绍一下怎么在 Mac 电脑中运行 Windows 版本的办公软件&#xff0c;在这里就需…

回归预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积神经网络-支持向量机的多输入单输出回归预测

回归预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积神经网络-支持向量机的多输入单输出回归预测 目录 回归预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积神经网络-支持向量机的多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.WOA-CNN-SVM鲸鱼算法…

解决VSCode使用SSH远程连接时无法指定用户名的问题

Windows 11自带OpenSSH客户端&#xff0c;和VSCode配合得很好&#xff0c;没有这个问题。 今天要说的是旧版本Windows 7/8/10系统遇到的问题。 PS: Windows 7可以运行的最后版本是VSCode 1.80.2 由于Windows 7/8/10没有自带的OpenSSH客户端&#xff0c;但可以调用MSYS环境下的…

Ubuntu 使用 nginx 搭建 https 文件服务器

Ubuntu 使用 nginx 搭建 https 文件服务器 搭建步骤安装 nginx生成证书修改 config重启 nginx 搭建步骤 安装 nginx生成证书修改 config重启 nginx 安装 nginx apt 安装&#xff1a; sudo apt-get install nginx生成证书 使用 openssl 生成证书&#xff1a; 到对应的路径…

【已解决】PPT不能转换成PDF文档怎么办?

PPT可以转换成PDF文档&#xff0c;只需要点击PPT菜单页面中的【文件】选项&#xff0c;再点击【导出】即可转换&#xff0c;如果转换时发现【导出】选项不可选&#xff0c;无法完成转换怎么办&#xff1f;以下3种方法可以试试&#xff01; 出现上面这种情况&#xff0c;我们可以…

<windows>win11输入法无法设置UI,变为了win10样子,解决方法

1 问题 升级win11版本后&#xff0c;输入法可能会变为旧版&#xff0c;如下图。如何恢复WIN11新版样子&#xff1f; 2 解决 点击开始–>设置–>搜索”语言“–>选择中文简体右侧语言选项。 下拉到最后选择微软拼音右侧三点&#xff0c;选择键盘选项–>选择常规…

硬件调试-电源纹波测量

硬件调试-电源纹波测量 Fang XS.1452512966qq.com如果有错误&#xff0c;希望被指出&#xff0c;学习技术的路难免会磕磕绊绊量的积累引起质的变化感谢酸奶大佬提供的硬件技术指导&#xff1b; 电源纹波 百度百科定义如下&#xff1a; 纹波是由于直流稳定电源的电压波动而造…