avatar

Catalog
网络安全基础05(下):DNS

DNS

DNS全称Domain Name Service,域名服务,作用是为客户机提供域名解析服务

通常对于DNS的学习通常是从客户角度,学习DNS服务器提供域名解析服务的过程。本篇则从搭建的角度来学习DNS,由于大部分公司通常都有自己的DNS服务器,不直接使用运营商的,因此除了需要理解DNS的执行过程,也需要了解其搭建与维护的过程。

域名

通常我们会认为www.sina.com.cn是一个域名,但从严格意义上来说sina.com.cn才被称为域名(全球唯一),而www是主机名,主机名.域名的格式称为完全限定域名(FQDN)。

一个域名下可以有多个主机,例如www.sina.com.cn可以进入新浪网的首页,mail.sina.com.cn则可以进入新浪邮箱的首页。

关于域名级的划分,简要概括如下,具体可以参考维基百科关于顶级域名二级域名的介绍:

Code
1
2
3
4
5
www.	zhihu.	com	.
三级域 二级域 顶级域 根域

www. zhihu. com. cn. .
四级域 三级域 二级域 顶级域 根域

端口

TCP53, UDP53

DNS解析

DNS转发器

通常,每个网段中都会有一个本地DNS服务器,大部分公司也会自己配置一个DNS服务器,它们通常会内置一个DNS转发器,在收到DNS解析请求后,它们会先查看自己能否处理,若不能处理,则通过转发器转发给运营商的DNS服务器去处理。在收到运营商DNS服务器解析的结果后,会返回给用户,并将该结果缓存在本地DNS服务器中。

正向/反向解析

正向解析,是将域名解析成IP地址,进而访问对应网站。通常采用的是递归查询,图示如下:

例如,在命令行中可以通过指令nslookup 域名的形式,像DNS服务器发送请求解析域名,例如解析百度的域名:

反向解析,顾名思义,即通过IP去查询域名的过程。

DNS实验

实验准备:2台Windows2003虚拟机(服务器),1台WindowsXP虚拟机(客户机)。

安装DNS服务

  1. 与安装DHCP服务相同,开始->控制面板->添加或删除程序,进入后选择添加/删除Windows组件,在网络服务中,找到域名系统(DNS),将其勾上并确定,即完成DNS服务的安装。

  2. 在安装服务之前,先做一个观察,进入命令行,查看当前已打开的端口:

  3. 安装的时候,会发现,这个DNS服务本地没有,需要从Service Pack 2 CD-ROM上面拷贝,那这个Service Pack 2 CD-ROM是什么呢?其实就是安装Windows2003系统时所用的镜像文件,只不过在安装时,一些必要的服务都没有安装上去,因此需要通过镜先文件重新安装,对于早年的操作系统,通常都是如此。具体操作为:右键当前虚拟机->设置->CD/DVD(IDE)->连接->使用ISO映像文件,并选择当前操作系统对应的镜像文件。

  4. 这里需要注意,一定要把设备状态里的选项给勾上,否则镜像将无法成功插入系统,并会出现 “在系统启动时至少有一个服务或驱动程序产生错误” 这样的错误提示。

  5. 若按照上述步骤,就可以看到可移动存储设备变成如下所示

  6. 点击它,选择安装可选的Windows组件,按照第一步,找到DNS并安装。安装后,再次查看已打开的端口。会发现53端口已经打开。即已开启DNS服务。

正向解析

正向解析,也就是域名解析成IP。接下来,通过配置Windows 2003系统上的一台服务器,演示DNS服务器如何实现正向解析的功能:

  1. 打开DNS服务->主机->正向查找区域,右键新建区域,选择主要区域,主要区域相当于公司的主服务器,通常而言公司会有两台DNS服务器,另一个作为备份使用,创建时会选择辅助区域

  2. 接下来填写区域名称,这里填的其实就是域名。这里选择填写baidu.com。

    这么做的话,就相当于声明了该服务器就是baidu.com这个域名的权威DNS服务器。权威服务器意味着,解析出的结果一定真实可靠。例如先前真实机中试图解析域名时,访问的是非权威服务器。

  3. 下一步会创建一个新文件,名为baidu.com.dns,这里不作修改。再接下来选择不允许动态更新(其它选项在域时才会用到)。接着创建完成后,会生成两个文件:

    • 第一个是SOA类型文件,它用来说明该域名(baidu.com)的权威服务器是谁,这里显示的是当前这台主机的主机名。
    • 第二个是NS类型文件,用来记录所有可以解析这个域名(baidu.com)的服务器,目前只有当前主机。在之后有了备份服务器,则会增加创建辅助区域的主机名称
  4. 用于正向解析时,这里选择右键新建主机记录,主机记录又称A记录。名称一栏填写主机名即可,此处填写www,FQDN一栏则会生成相应的完整域名。然后填写域名对应的IP地址,这里将域名的IP拟作4.4.4.4,然后选择添加主机。

  5. 经过上述操作后,(baidu.com)这个域名下多了一条记录。此时,www这个主机名所对应的当前域名的完全限定域名而言,已经可以通过当前DNS服务进行权威解析了。

  6. 下面进行验证,进入客户机Windows XP,将XP系统指向的DNS服务器设置为先前配置好的2003系统的IP地址

  7. 此时在XP中进入命令行,通过nslookup指令解析www.baidu.com这个域名的地址。可以发现,我们指向的是IP地址为10.1.1.1DNS服务器,得到的结果也确实先前设置的4.4.4.4。这样,就完成了一个简单的正向解析实验。

  8. 最后在这里补充一些,如果我们想再增加一个完全限定域名的正向解析,只需按照上述过程再新建一条主机记录。这里要注意一点,我们知道在新增记录完成之前,试图解析该域名,是无法解析成功的;但是在新增记录完成后,仍可能解析失败。主要原因是XP系统存在DNS缓存机制,短时间内缓存记录的仍是上一次查询的结果。此时需要通过指令ipconfig /flushdns刷新缓存,再次解析,便能成功。通过指令ipconfig /displaydns可以显示当前的DNS缓存。

别名

别名这个实验比较简单就不做了,简单说一下吧,在正向查找区域中新建一个别名(CNAME),设置别名,并指定目标主机的FQDN(从现有的记录中选择)。这样通过别名或者原本的FQDN,访问的网址是相同的。

反向解析

  1. 反向解析,就是用IP地址去查询域名,观察先前的查询实验,会发现服务器名是UnKnown,出现这种情况的原因是像服务器寻求域名解析时会先问服务器域名是什么,但是服务器没有应答,因此被设置成了UnKnown。

  2. 为了解决上述情况,就要利用到反向解析。这里,和正向解析一样,先在正向查找区域新建一个主机记录,这里将主机名设置为dns1.baidu.com。与正向解析步骤不同的是,这里要将创建相关的指针(PTR)记录给勾上。

  3. 然后在反向查找区域中新建一个区域,这里的网络ID写的是网段,我们的主机IP地址为10.1.1.1,因此这里填写10.1.1

    其它的默认下一步就行。创建完反向查找区域后,情况如下。

  4. 接着在反向查找区域中新建指针(PTR),在主机IP号这里补充完整的IP地址。主机名,则游览文件,选择第二步中在正向查找区域中新建的主机记录

    确定后,反向查找区域中会增加一条记录。

  5. 接下来,回到客户机上,进行验证。可以看到通过nslookup指令解析域名时,可以看到服务器本身的域名了。不再是UnKnown。

转发器

  1. 转发器,简单来说,就是自己解析不了,转发给别的DNS服务器帮忙解析。我们需要配置另一台Windows 2003作为DNS服务器。首先,设置该服务器的IP地址为10.1.1.2,然后将其挂入与第一台Windows 2003系统(10.1.1.1)以及XP客户机同一个局域网中,本次实验为VMnet1上(在设置中将多台虚拟机配置为同一个网络适配器,即可实现虚拟机位于同一个局域网中)。并将用于安装DNS服务的Windows 2003 ISO镜像插入虚拟机。接着安装DNS服务,参考上文。

  2. 第二步,与正向解析相同,在新的DNS服务器创建一个正向查找区域,并新建一个主要区域,区域名称为qq.com,完成后在该区域中新建一条主机记录,设置主机名为www的完全限定域名的IP地址为6.7.8.9。完成后效果如下。

  3. 这个时候回到客户机XP上,试图解析刚刚设置的域名,发现不行,原因是我们设置的DNS服务器是10.1.1.1,而刚刚设置的域名记录在10.1.1.2这台DNS服务器。

  4. 这个时候就要利用转发器了,进入第一台DNS服务器,右键主机,进入属性。找到转发器,将第二台DNS服务器的IP地址添加进入转发器的IP地址列表。确定。

  5. 接下来,回到客户机XP上,再次试图解析域名时,便成功了。

辅助DNS服务器

  1. 在一开始,我们创建的区域都是主要区域,而辅助DNS服务器就要用到辅助区域,它的主要作用是备份,当一台服务器宕机后,可以有另一台服务器临时接管。例如,我们要备份主DNS服务器上baidu.com这个区域,操作如下:右键该区域名->属性->区域复制->勾上允许区域复制,这里有3个选项,通常选择只允许到下列服务器,这样最安全,并添加备用DNS服务器的IP地址

  2. 接下来进入备份DNS服务器,在正向查找区域中,新建区域,这里选择辅助区域

  3. 区域名称填写baidu.com,与主DNS服务器一样。然后将主DNS服务器的IP地址添加进入想要复制区域的DNS服务器地址列表。

  4. 点击确定后,此次实验就完成了对主DNS服务器正向查找区域内容的备份

虚拟机上真实网

首先,简单说明一下原理。通常来说,一个局域网中的设备都是通过网线连在交换机或者路由器上,从而访问外网。在虚拟机中,是没法直接访问外网的,但是可以将虚拟机所在的VMnet设置为相同,使得不同虚拟机连上相同的虚拟交换机,从而将不同的虚拟机放入同一个局域网中,这样可以保证虚拟机之间可以互相ping通。其中VMnet0比较特殊,它可以看作是连入现实路由器的一款交换机,通过对VMnet0进行设置,就可以实现虚拟机上真实网。下面开始实验(本次实验以Windows XP作为实验环境):

  1. 在操作之前,先确定一下网卡的型号。如下所示

  2. 在虚拟机左上角选择编辑,进入虚拟网络编辑器,选择更改设置

  3. 选择VMnet0,找到桥接模式,并将桥接对象设置为第一步中确定的网卡型号

  4. 最后,将XP所在网络适配器设置为VMnet0

  5. 此时还没完,由于在前一篇DHCP的实验中,给XP客户机分配了特定的IP地址,此时需要重置一下IP

  6. 可以看到,此时分配到的新IP所在网段与已经与真实机的相同。最后把DNS服务器再设置为自动获取

综合实验

综合实验这里就不展开了,实验建立在每台虚拟机能上真实网的情况下,假设将一台DNS服务器中的配置全部删除(清理缓存,删除记录,删除转发器等),此时将XP指向的DNS服务器设置为这台仅能上网,但是已经清空数据的DNS服务器。问,XP是否能够上网?

答:能上。这个涉及到对DNS的原理的理解,尽管DNS服务器没有进行任何配置,但是它能够上网,因此会将请求转发给更上层的DNS服务器。最终还是可以得到域名解析的结果。因此,XP最终能够上网。

关于DNS攻击

基于DNS的攻击方式,主要分为DNS劫持和DNS污染这两类:

先说DNS劫持,主要是通过攻击用户正在使用的DNS服务器或者伪造一个DNS服务器让用户使用将域名解析为其它的IP地址,例如先前的实验中,将baidu.com的域名任意设定,用户就无法正常访问该域名对应的网站。

DNS污染的核心原理与DNS劫持一样的,都是将域名解析为其它IP地址,造成用户无法正常访问。但是DNS污染,主要是针对DNS服务器的缓存进行投毒,先前的实验中,我们会通过ipconfig /flushdns对DNS缓存进行刷新,防止之前查询的数据造成干扰,但是这个刷新缓存仅仅是针对当前主机的,DNS污染是对大部分用户所访问的当地的DNS服务器进行投毒,对这些DNS服务器的缓存进行投毒,这种投毒效果往往更好,原因是,为了降低网络上的流量压力,地区的DNS服务器会记录更高层的DNS服务器过去的解析记录。而这些解析记录就存在地区DNS服务器的缓存里,一旦缓存被人做了手脚,那就没法正常访问想要访问的网站了。墙的原理,便是如此。

端口小结

本篇新学习了与DNS相关的53端口,按照学习顺序,这里再作总结:

Code
1
2
3
4
5
3389端口:	远程桌面
23端口: telnet
445端口: 共享服务
UDP67,68: DHCP
53端口: DNS

参考资料

参考教程:

参考链接:

Author: cataLoc
Link: http://cataloc.gitee.io/blog/2020/09/26/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%9F%BA%E7%A1%8005-%E4%B8%8B-DNS/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶