什么是DNS

DNS/域名系统(Domain Name System),是一种互联网协议,它将易读的域名转换为IP地址,将IP地址转换回域名。

DNS结构

DNS负责分配不断增长的网络设备名称列表,它通过建立责任层次来实现这一点。DNS域名空间可以用一棵倒立的树来表示,如图1-1所示,其中根服务器位于顶部,叶子(代表互联网上的所有终端主机节点)位于底部。

根名称服务器(root server)将DNS查询定向到每个顶级域的名称服务器,这些顶级域是其正下方的主要分支(例如,.com、.net)。根名称服务器是DNS根区域的权威域名服务器,对区域具有权威意味着对该域负责,但委派给不同权威名称服务器的部分除外。

DNS域是由一方负责维护的域,减去该方委派给另一方的控制权的任何子域。责任方使用该域来维护该域的资源记录。资源记录(Resource records)将信息映射到公用域名。参与编辑资源记录的服务器通常称为主名称服务器(primary name server 或者 master name server)。由于仅一台服务器不足以提供可靠的解决方案,因此通过称为“域传输(zone transfer)”的过程从主要名称服务器获取区域数据的副本。这些附加服务器称为辅助域名服务器从属域名服务器

资源记录

A记录(A Record)

A 记录是DNS中最常用的记录。这些记录将容易记住的主机名与资源的IP地址相匹配。图1-3是一个A记录。

AAAA记录

AAAA记录(或者通常称为quad A)用于将主机名映射到它们的IPv6地址。图1-4是一个示例quad A记录。

SOA记录

SOA记录代表权限记录的开始,它提供查询器(包括辅助服务器和递归服务器)、有关区域本身的信息(包括主名称服务器(mname)、负责方(rname)以及如何处理区域及其记录的计时器。

CNAME记录将其他名称映射回主机名,如别名。此类记录的一个常见用法是将多个服务名称映射到服务器名称。例如,记录ftp.example.com指向名为helium12.example.com.的服务器。

PTR 记录将IP地址映射回该IP地址存在的主机名。 PTR记录主要由应用程序和系统用来确定与IP地址关联的名称。

NS记录发布域的域名服务器的名称。 其他DNS服务器使用它来查找域的权威域名服务器。

MX 记录允许DNS客户端查找该域的邮件服务器。

查询路径、递归和迭代

查询路径是一组查询,从客户机的初始问题开始,到客户机收到的答案结束。查询路径可以像客户机询问服务器并直接接收答案一样简单。但是,查询路径也可能很复杂,包括多个服务器协同工作以跟踪答案。

当客户端提出问题时,它无法跟踪其他名称服务器提供的转介来自行跟踪答案。它必须依赖一个成熟的DNS服务器,它可以调用其他名称服务器来寻找答案。

 递归是指在找到带有答案的域名服务器之前,反复向域名服务器询问问题并跟踪引用的过程。递归查询可简单概述为,“我想知道这个问题的答案。如果你不知道答案,请询问其他人,直到找到答案。”

默认情况下,所有客户机都会递归查询,因为客户机通常无法“遍历树”来自己寻找答案。提供递归的域名服务器接受递归查询,并通过在后台执行迭代查询来跟踪答案来实现。作为处理递归查询的结果,递归域名服务器随着时间的推移建立了丰富的答案缓存,因此它们也被称为缓存域名服务器

下面是查询路径发生方式的分解:

1.  客户端查询配置为使用的递归域名服务器。

2.    递归服务器检查其内部缓存。如果找不到问题的答案,它将检查其根提示文件(root hint file),并将查询发送到该文件中列出的13个根名称服务器之一。

3.   根名称服务器不包含回答问题的特定记录,但它确实知道 com 名称服务器在哪里。 它以 NS RRSET 的形式为 com 名称服务器发送引用,并为这些名称服务器发送 A 记录。 这些匹配的 A 记录称为粘合记录。。

4.    递归服务器缓存来自根名称服务器的响应,并向它为www.example.com提供的其中一个com服务器查询。

5.com 域名服务器不包含 www.example.com,但有人注册了 example.com 并向 com 提供了名称服务器的信息。 com 名称服务器发送对 example.com 的 NS 和 A 记录的引用。

6. 递归服务器缓存来自com的记录,并查询引用中提供的example.com名称服务器之一。

7. example.com域名服务器从权威域example.com返回答案。

8.  递归名称服务器缓存example.com名称服务器返回的答案,并将响应发送到客户端。

DNS安全威胁

DDoS攻击

放大

放大攻击是一种技术,在这种技术中,小查询可以触发大响应,例如当您没有将区域传输保护到仅受信任的源时,查询TXT记录或区域传输。通过将需要长响应的短请求充斥到服务器中,即使是相对较弱的计算机也会使DNS服务器过载。DNS服务器正忙着处理这些伪造的请求,以至于没有时间响应合法的请求。DNS服务器是一个出奇好的放大器。下面是一个简单的例子:

如果用户对“isc.org/ANY”进行DNS查询,则查询长度为44字节,响应长度为4077字节。放大93倍!对于1 Mbps的连接,每个机器人每秒可以发送大约2909次来自上一示例的44字节查询。因为每个查询都会产生4077字节的响应,所以可以计算出DNS服务器每秒必须提供大约93兆字节。如果僵尸网络中有11个机器人都在做同样的事情,那么DNS服务器应该在攻击的每一秒发送超过1gb的数据!单靠放大就可以进行有效的攻击,因为攻击者可以使用功能较弱的资源来使功能更强大的服务器过载。 但是,使DNS成为欺骗性DDoS的更大目标的原因是反射。

反射

反射攻击发送的查询看起来像是来自攻击的受害者。响应(通常是一个大的、放大的响应)被发送给从未询问过的受害者,响应通信量可能会淹没受害者的网络。

在反射攻击中,攻击者使用伪造的源IP地址向递归名称服务器发送查询。他将目标(受害者)IP地址作为源IP地址,而不是实际的IP地址。递归名称服务器执行任务,从权威名称服务器检索查询的答案,并将答案发送给毫无戒心的受害者。

组合攻击

现在,攻击者通过欺骗受害者的IP地址和发送精心编制的查询来结合这两种技术,这将导致大量负载。这是一种非常有效的DDoS攻击;权威域名服务器提供放大,递归域名服务器提供反射。这允许攻击者同时攻击两个不同的受害者。这也会导致放大攻击的受害者可能认为他或她受到了第二个受害者的攻击,从而可能造成更大的伤害。

下图显示了将放大和反射结合起来导致DDoS的示例。如您所见,此攻击不仅消耗受害者的资源,还消耗递归名称服务器的资源。这就是为什么保护面向公众的递归服务器免受来自世界各地的递归攻击是DNS安全中最重要的最佳实践之一。它阻止你扮演放大器的角色。以下是攻击的过程:

  1. 攻击者控制的僵尸网络使用受害者的伪造IP地址向递归名称服务器发送DNS查询。
  2. 递归名称服务器遵循标准DNS路径,并将查询发送到其他权威名称服务器。
  3. 递归名称服务器从权威服务器接收(放大的)响应。递归名称服务器向受害者发送(放大的)响应,受害者的IP地址列为原始查询中的源地址。

缓存中毒

DNS 缓存中毒会使用虚假数据(例如流氓地址)破坏 DNS 服务器缓存,从而为登录名、密码和用户信用卡号以及其他威胁的数据盗窃打开大门。

1. 攻击者在递归名称服务器(服务提供商或企业)中查询不存在的子域(例如 q0001.ABCorrp.com。

2. 递归名称服务器没有 IP 地址并查询 ABCcorp.com 名称服务器。

3. 在 ABCcorp.com 名称服务器可以发送 NXDOMAIN 响应之前,攻击者会发送大量看起来像是来自合法 ABCcorp.com 服务器的欺骗响应。欺骗响应将 www.ABCcorp.com 映射到服务器的 IP 地址 由攻击者控制。

4. 递归名称服务器接受欺骗响应并缓存记录。

5. 用户向递归名称服务器查询 www.ABCcorp.com 的 IP 地址。

6. 递归名称服务器使用缓存的恶意 IP 地址回复用户。

7. 用户连接到一个由攻击者控制的站点,该站点可能看起来与真实的 ABCcorp 网站一模一样。

恶意软件与过滤

虽然恶意软件通常通过Web服务器分发,伪装成Web内容的一部分,但其基础是DNS。现代攻击者不依赖单个注册域名,如malware.not-evil.example.com。相反,他们创建了一个复杂的系统,自动动态注册数百或数千个域名,并将其配置为指向分发恶意内容的web服务器。不断更改域名使得在DNS级别阻止它们变得困难。

一旦它感染了计算机,恶意软件就会使用DNS解析可能的命令和控制服务器的域名列表,直到找到可用的并作出响应。命令和控制服务器是由恶意软件所有者维护的特殊服务器,它们告诉受感染的客户端该做什么。命令和控制服务器的列表可以编译成恶意软件,或者使用所谓的域生成算法进行合成。

恶意软件还可以将敏感数据从你的网络中潜逃出来,这是一种称为数据泄露(data exfiltration
)的技术。因为它是通过DNS完成的,所以数据过滤也称为DNS隧道(DNS tunneling)。尽管有很多DNS隧道实现,但它们都依赖于客户端执行DNS查询的能力。客户端通过将数据分解为查询大小的块、将敏感数据伪装为DNS查询并将其发送到远端的恶意DNS服务器来逃避检测,后者可以解包这些查询并重建数据。

这就像在不打开车库门的情况下偷某人的汽车一样:您必须将汽车分解成适合穿过门窗的小块,然后在外面重建汽车。 除了数据泄漏外,该恶意软件还会破坏文件,有时甚至对每个块进行加密,然后再将它们偷偷带出场所进行重组。

图中的步骤如下所示:
1.攻击者注册域名ZG5ZC2VJDXJPDHKK.COM,并设置名称服务  NS1.ZG5ZC2VJDXJPDHKK.COM。

2.受感染的客户端对窃取的信息进行编码,例如在图中这里将文本“ Pa $$ w0rd”转换为“ UGEKJHCWCMQK”。

3.客户端使用编码的密码作为子域UGDNSJHCWCMQK.ZG5ZC2VJDXJPDHKK.COM对域进行DNS查询。

4.递归名称服务器找到权威名称服务器NS1.ZG5ZC2VJDXJPDHKK.COM并将查询发送到那里。

5.攻击者将子域值识别为编码后的密码。 攻击者将信息UGEKJHCWCMQK解码回去,以恢复“ Pa $$ w0rd”。

在此示例中,客户端没有必要从恶意服务器接收响应,因为目标是将信息发送出去。 但是,该过程可以轻松地包括恶意服务器发回要在受感染客户端上执行的漏洞利用程序。

DNS安全解决方案

响应速率限制(RRL)

如果一个DDoS攻击就像一个甜甜圈商店的顾客购买了所有的甜甜圈,这样就没有其他人可以拥有任何甜甜圈,那么RRL限制每个顾客每天只能有一个不同口味的甜甜圈。如果每个人每天只能购买一块巧克力和一块玻璃,那么DDoS攻击就不会造成那么大的损害。

RRL取决于令牌桶的概念,以限制DNS服务器将发送给任何单个客户端的响应数。 DNS服务器上的配置为每个客户端创建一个令牌桶,该令牌桶包含例如五个令牌,并且每秒添加五个令牌。 服务器为发送给客户端的每个查询响应都提取一个令牌。

一旦桶是空的,它需要15秒来补充。同时,服务器向客户端发送截断的响应,而不是完整的响应。截断的响应可防止攻击者从完整查询响应中获得放大。再加上15秒的延迟,防止了大量的查询淹没了服务器,然后就开始了!突然,DNSSEC服务器在放大攻击中不起作用。当合法的客户碰巧清空了他们自己的令牌桶时,等待15秒再试一次并不是一个太大的负担。或者,客户端可以立即通过TCP重试查询。

DNS安全扩展(DNSSEC)

DNSSEC要求在递归名称服务器和权威名称服务器上进行部署:递归名称服务器要求附加安全信息并执行验证检查,而权威名称服务器在响应中提供签名的资源记录。图3-4显示了一个支持DNSSEC的递归名称服务器(也称为验证解析器)的简化解释,它检查收到的答案。

在每个步骤中,验证解析程序都会要求提供额外的安全信息,如果需要,会一直跟踪到域的父级以获取更多的安全信息,直到它到达根服务器为止。根服务器的公钥是众所周知的,并且在大多数情况下是验证解决程序信任的唯一密钥。

缓存中毒是一种很难防范的攻击,其危害可能是巨大的。正确部署后,DNSSEC将制止缓存中毒攻击,因为攻击者无法再模拟权威名称服务器。

除了阻止缓存中毒和其他基于DNS的攻击外,DNSSEC还支持其他安全功能。许多组织已经在DNS中发布反垃圾邮件信息,如SPF(发件人策略框架)或DKIM(域密钥标识邮件)。

响应策略区域(Response policy zones)

响应策略区域(RPZ)是您使用递归DNS服务器控制查询者可以查询和不能查询的内容的一种方式。通过了解客户端正在查询的服务器和服务的信誉,您可以确定递归服务器接收某些域名查询或在DNS响应中看到指向那些恶意服务器的信息时要采取的措施。

RPZ工作原理的总体思路是,您可以为如何处理特定查询(或响应)创建策略,并选择要采取的一些可能操作(如将客户端重定向到内部安全页),然后将这些策略存储在DNS服务器上的特别权威区域中。您还可以通过将这些区域从DNS服务器传输到(另外的)DNS服务器来共享这些区域。

确定查询或响应是否与特定项匹配的事件称为触发器。

QNAME触发器

QNAME触发器对查询的NAME字段进行操作。通配符格式可以阻止站点和所有子域,例如,*.badgeys.com。如果需要,QNAME触发器应该遵循完整的查询和响应周期,包括迭代。递归服务器必须遵循与处理名称服务器(NS)资源记录以及相应的A和AAAA记录相关的委派层次结构。

IP触发器

IP触发器与DNS响应中资源记录的RDATA字段中的IPv4或IPv6地址匹配。当您知道IP地址不正确时,无论其名称是什么,这都非常有用。例如,如果已知的坏IP地址是10.11.12.13,并且客户端查询了example.com MX 记录,如果答案包含10.11.12.13,则会从客户端阻止该答案。

客户端IP触发器

客户端IP触发器与发起查询的客户端的源IP地址匹配。由于它与特定的客户端IP地址匹配,因此它非常有针对性,并且在用于阻止已知受到危害的主机时非常有效。例如,它可以将单个客户端的所有查询发送到更新服务器。

NSDNAME触发器

NSDNAME触发器与递归期间找到的权威名称服务器的名称匹配。这是一个非常强大的触发器,目标是整个DNS名称服务器。此触发器影响名称服务器提供服务的所有域。由于NSDNAME触发器在递归期间工作,因此必须极其小心地使用此触发器,并且仅当知道整个名称服务器是恶意的才使用此触发器。

NSIP触发器

NSIP触发器与IPv4 A记录中的IP地址和对应于与域关联的名称服务器记录(粘合记录)的IPv6 AAAA记录中的IP地址匹配。它根据NSDNAME策略记录检查这些记录,NSDNAME策略记录可以防止具有多个或更改名称的名称服务器。NSIP触发器可以阻止名称服务器及其服务的所有域名。

参考:

《DNS security for dummies》

DNS与安全简述(未完成)相关推荐

  1. DNS Tunneling及相关实现——总之,你发起攻击都需要一个DNS server,下载一些工具作为client发起数据,server收集数据并响应...

    摘自:http://www.freebuf.com/sectool/112076.html DNS Tunneling,是隐蔽信道的一种,通过将其他协议封装在DNS协议中传输建立通信.因为在我们的网络 ...

  2. 通俗易懂聊DNS解析

    1.dns相关的几个概念.     dns:domain name system 域名系统:     ttl: time to live 有效时间     ldns:local domain name ...

  3. DNS服务,SSL原理

    1.简述常见加密算法及常见加密算法原理,最好使用图例解说 2.搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟 3.简述DNS服务器原理,并搭建主-辅服务器 4.搭 ...

  4. (九)自签证书和DNS

    摘要: 1.简述常见加密算法及常见加密算法原理,最好使用图例解说   2.搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟   3.简述DNS服务器原理,并搭建主- ...

  5. 好用的办公网优化工具OneDNS

    背景介绍 DNS是互联网访问必备的基础服务 DNS:域名系统(DomainNameSystem)的缩写,因特网的一项核心服务,相当于互联网的GPS. 可以看成一个巨大的通讯录,主机访问域名时,把网址解 ...

  6. 简述DNS进行域名正向解析的过程。

    简述DNS进行域名正向解析的过程. 参考答案: 首先,客户端发出DNS请求翻译IP地址或主机名.DNS服务器在收到客户机的请求后: (1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出 ...

  7. 1、请简述DNS的作用,并说明当你输入网址“www.nxtc.edu.cn“按下回车后,DNS是怎么工作的?(关键步骤可以给出相应图示) 2、详细描述域名劫持攻击的过程及防御方式。

    一.请简述DNS的作用,并说明当你输入网址"www.nxtc.edu.cn"按下回车后,DNS是怎么工作的?(关键步骤可以给出相应图示) DNS的作用: 把网址解析转化成ip地址, ...

  8. 简述DNS进行域名解析的原理

    DNS域名解析是互联网上非常重要的一项服务,上网冲浪(还有人在用这个词吗?)伴随着大量DNS服务来支撑,而对于网站运营来说,DNS域名解析的稳定可靠,意味着更多用户的喜欢,更好的SEO效果和更大的访问 ...

  9. DNS有哪两种域名解析方式?简述这两种方式区别和特点。

    DNS的两种域名解析方式:分布域名解析:集中式域名解析 区别及特点: 1.分布域名解析 是指分在客户端上维护一个静态的文本文件,其中包含主机名和IP地址的映射.随着网络规模的扩大,分布式分辨率的有效性 ...

最新文章

  1. Linux Ethercat主站
  2. 如何通过编程方式添加Native Client服务器别名
  3. 数据中心空调系统应急方案
  4. MySQL 和 PostgreSQL 对比
  5. php文件引用问题,Php引用文件引起的空白行问题(UTF-8)
  6. CSS之Background-clip属性
  7. Android 上滑背景变淡,在Android中,如何平滑地将背景从一种颜色淡化到另一种颜色? (如何使用线程)...
  8. 分析Spring容器启动流程 Spring初始化
  9. element-UI级联选择器(Cascader 回显、默认显示项) - (返回结果的)格式转化 - 代码篇
  10. 手把手教你制作AppPreview视频并上传到appStore进行审核
  11. ArcGIS JS API 4 —— GET https://static.arcgis.com/fonts/simsun-regular/37888-38143.pbf 404
  12. JavaScript = TypeScript 入门
  13. 动态规划之背包问题(优化版)
  14. 初步用Echarts实现圆饼图
  15. 图像处理中的几种预处理方式
  16. 什么是PKI 体系(数字证书种类)
  17. 如何让计算机查找不到无线网络,笔记本电脑搜索不到无线网络怎么办?
  18. 卸载手机自带的系统软件
  19. 嵌入式linux 保存参数的方法
  20. 【Python爬虫】爬取豆瓣电影Top 250

热门文章

  1. 终端shell常用命令
  2. 华为大数据平台凭什么成为行业领跑者?
  3. wltp和nedc续航差多少_WLTP续航和NEDC续航差别有多少?
  4. Xcode7与Xcode8及Xcode8.1之间兼容的那些事(持续更新)
  5. Vissim 安装卡住解决方案
  6. 测试用例设计方法有哪些?举例说明
  7. 超详细的Linux系统 -- CentOS7的下载安装配置教程
  8. vue动态组件的实现和传值
  9. vSphere7虚拟机迁移报兼容性问题无法迁移
  10. 如何将Excel表格数据转换成柱状图