DNS系统原理及漏洞利用分析(上)

安全 网站安全
在互联网上储存域名与IP地址间映射关系的一个分布式数据库,能够将名称转换为数字、数字转换为名称的程序就被称为DNS(Domain Name System,域名系统),运行DNS系统的主机就是“DNS服务器”。

基于IP协议,两台计算机之间要实现通信有一个前提,就是它们分别有一个IP地址。由于我们大多数人都善于记住www.taobao.com之类的字串,而非一串如104.196.44.101一般毫无规律的IP地址数字组合,因此,需要一个程序将名称字串翻译成IP地址。

在互联网上储存域名与IP地址间映射关系的一个分布式数据库,能够将名称转换为数字、数字转换为名称的程序就被称为DNS(Domain Name System,域名系统),运行DNS系统的主机就是“DNS服务器”。如果没有DNS,任何互联网访问就都需要我们记住12个数字——服务器的IP地址。

[[258278]]

一、DNS工作原理

作为互联网访问中不可或缺的一项技术,了解DNS的运作机理非常重要。

DNS中的域名-IP映射条目被称为“DNS记录”。互联网上需要实现通信的计算机数量过于庞大,将所有DNS记录都记录在一个记录集里,由单台DNS服务器进行存储处理是不切实际的。因此,在DNS体系的设计中,全球的DNS被分成了多个小记录集,这些记录集被称为“域”(Domain)。一个域包含的记录数量仍有可能非常大,因此,域还可以被划分为更小的子集——“区”(Zone)。

因此,互联网上所有的域名-IP映射条目是由许多DNS服务器共同存储的。任何要根据域名查询IP或根据IP查询域名的计算机,都可以向其DNS服务器发起查询,并且DNS服务器还知道如何在多台DNS服务器之间发起查询。当DNS服务器查询其他DNS服务器时,我们称之为“上游”查询。域查询可以不停的向上执行,直至权限域名服务器。

权限域名服务器是管理员对其所管辖域的服务器名和IP地址进行管理的地方。当DNS管理员想要对服务器名或IP地址实施增删改查时,就会在权限域名服务器(也称“主DNS服务器”)上进行操作。另外,还有“从DNS服务器”,用于保存区或域的DNS记录副本。

1. 加载页面用到的四个DNS服务器

  • 域名解析服务器(Resolving name server):自身存有被查询的IP-域名条目或向另一个DNS服务器请求该IP-域名条目,并响应此次查询的服务器。
  • 根域名服务器(Root name server):根区的域名服务器。它直接响应查询请求,并返回相应的域权限域名服务器列表。
  • 域名服务器(TLD name Server):域名服务器(TLD)是Internet上的高级DNS服务器之一。当搜索www.qq.com时,“.com”TLD服务器将首先响应,在其条目中搜索“qq”字串。
  • 权限域名服务器(Authoritative name server):权限域名服务器是DNS查询流程中的结尾一站,其存储有某个区的域名条目记录。

2. DNS服务的类型

根据其处理DNS查询的技术机理不同,DNS服务被分为两种类型:

  • 递归DNS服务:递归DNS服务响应DNS查询并向权限域名服务发起域名条目查询,或在其缓存的DNS条目中实施查询。
  • 权限DNS服务:权限DNS服务自身存储DNS条目。因此,如果向权限DNS服务查询其存储的某个IP-域名条目,则无需再向其他服务器发起查询。

3. 公共DNS & 私有DNS

对于需要被公众在互联网上访问的服务器,它需要具有公共DNS记录,并且其IP地址在互联网上可访问,即不会被防火墙等访问控制技术所阻止。任何能够连接到公共DNS服务器的人都可以在且无需身份验证的情况下访问公共DNS服务器。

但是,并非所有的DNS记录都是公开的,为了使员工能够方便地访问企业内网的服务器,不少企业都有自身的私有DNS。私有DNS被用于存放不希望公开到互联网上的企业内部文件服务器、邮件服务器、域控制器、数据库服务器、应用程序服务器等的域名和IP。

有一点需要注意的是,私有DNS服务器和公共DNS服务器一样,对其的访问无需进行身份验证。这主要是因为在DNS技术创建之初,安全性还不是一个需要考虑的技术问题。因此,大多数情况下,企业内部网络中的任何用户都可以在未做身份认证的情况下查询内部DNS服务器存储的信息。

二、查询DNS的七个步骤

(1)当用户试图访问Internet上的计算机,例如,在浏览器地址栏中输入www.dingxinsec.com.cn时,就将启动一次DNS查询。

(2)DNS查询的首站是本地DNS缓存。在用户访问网络上不同的域名时,这些域名对应的IP地址就将存储在本地缓存中,如果用户之前访问过www.dingxinsec.com.cn,则缓存中就会存有该网站的IP地址。

(3)如果本地DNS缓存中没有该域名的IP,DNS就会用递归DNS服务器进行检查。在互联网上,ISP服务商通常会建设和运维递归DNS服务器。

(4)递归DNS服务器自身具备缓存,如果在其缓存中存有用户查询的IP地址,则会将其直接返回给用户。如果没有,将向其它DNS服务器发起查询。

(5)下一站是TLD域名服务器,当用户查询域名 www.dingxinsec.com.cn时,存储.cn地址的TLD域名服务器会响应查询请求。该服务器并不存储我们需要的IP地址,但它能够向正确的权限域名服务器转发查询请求。

(6)权限域名服务器用www. dingxinsec. com. cn 的IP地址响应此次查询,递归DNS服务器将其存储在本地DNS缓存中,并将地址返回给用户的计算机。

(7)用户计算机的本地DNS服务获取www.dingxinsec.com.cn的IP地址并实施访问。然后,在本地缓存中记录该域名的IP地址,同时记录其生存时间(TTL),即本地DNS记录的有效时间,若用户下次访问该域名的时间超过TTL时间,则下次访问www.dingxinsec.com.cn时,DNS将再次执行上述过程。

三、DNS查询的分类

DNS查询需要给DNS服务器传递的信息包括:

  • 当前查询是什么类型;
  • 要返回什么信息。

标准的DNS查询有以下三种类型:

  • 递归查询:在递归查询中,计算机请求DNS服务器返回一个IP地址,或确认该DNS服务器不知道该IP。
  • 迭代查询:在迭代查询中,查询者向DNS服务器请求返回一个优先答案。如果DNS服务器中查不到被查询IP,它将返回权限域名服务器或TLD域名服务器。查询者将继续此迭代过程,直到找到被查询IP或超时。
  • 非递归查询:DNS解析服务器使用此类查询来查找自身缓存中没有存储的IP。

接下篇《DNS系统原理及漏洞利用分析(下)

 

责任编辑:赵宁宁 来源: 鼎信信息安全测评
相关推荐

2019-04-02 08:30:03

2016-09-29 14:37:39

ImageMagick漏洞分析

2011-06-16 13:14:18

2009-07-06 17:47:44

2017-12-11 17:10:24

2021-02-04 10:40:46

漏洞DNS缓存攻击

2023-07-26 17:13:38

2013-03-22 10:00:14

2020-10-14 09:44:52

漏洞

2017-08-22 13:45:27

2021-08-09 11:15:28

MybatisJavaSpring

2021-11-25 10:36:04

DNS命令Linux

2015-03-06 17:02:51

2011-06-16 13:37:43

2015-08-05 13:54:08

2016-05-17 09:42:16

2017-11-08 10:20:10

2020-10-28 14:58:21

漏洞uTorrent协议层

2023-11-06 18:37:23

虚拟线程编写

2011-03-22 12:58:16

点赞
收藏

51CTO技术栈公众号