DNS学习笔记

1. 背景

本文记录笔者关于 DNS 的学习笔记,由各种资料整理所得。

1.1 DNS 简介

DNS 全称 Domain Name System 域名解析服务,用于解析域名与 IP 地址对应关系。通俗地说,域名系统 (DNS) 是 Internet 电话簿。

DNS 基于 UDP、UDP 端口号 53,也会使用 TCP 的 53 端口。先会用 UDP 查找,若 UDP 查不到或请求大于 512 字节时才用 TCP 查找。同时,UDP 进行名称解析,TCP 进行区域解析。

1.2 DNS 组成

  • 域名服务器:域名解析服务的提供者。
  • 解析器:访问域名服务器的客户端,负责解析从域名服务器获取的响应。如:nslookup。

1.3 DNS 的功能

  • 正向解析:域名到 ip。
  • 反向解析:ip 到域名。

1.4 DNS 的性质

  • 从协议的层面看,它是一种应用层协议
  • 从实体的层面看,它是一个由分层的 DNS 服务器实现的分布式数据库

1.5 DNS 服务器的类别

所有 DNS 服务器都属于以下四个类别之一:递归解析器、根域名服务器、TLD 域名服务器和权威性域名服务器。在典型 DNS 查找中(当没有正在进行的高速缓存时),这四个 DNS 服务器协同工作来完成将指定域的 IP 地址提供给客户端的任务(客户端通常是一个存根解析器 - 内置于操作系统的简单解析器)。

  • DNS 解析器

    也称为递归解析器,是 DNS 查询中的第一站。递归解析器作为客户端与 DNS 域名服务器的中间人。从 Web 客户端收到 DNS 查询后,递归解析器将使用缓存的数据进行响应,或者将向根域名服务器发送请求,接着向 TLD 域名服务器发送另一个请求,然后向权威性域名服务器发送最后一个请求。收到来自包含已请求 IP 地址的权威性域名服务器的响应后,递归解析器将向客户端发送响应。 > > 在此过程中,递归解析器将缓存从权威性域名服务器收到的信息。当一个客户端请求的域名 IP 地址是另一个客户端最近请求的 IP 地址时,解析器可绕过与域名服务器进行通信的过程,并仅从第二个客户端的缓存中为第一个客户端提供所请求的记录。大多数 Internet 用户使用他们 ISP 提供的递归解析器。

  • 根 DNS 服务器(root name server)

    每个递归解析器都知道 13 个 DNS 根域名服务器,它们是递归解析器搜寻 DNS 记录的第一站。根服务器接受包含域名的递归解析器的查询,根域名服务器根据该域的扩展名(.com、.net、.org 等),通过将递归解析器定向到 TLD 域名服务器进行响应。(尽管有 13 个根域名服务器,但这并不意味着根域名服务器系统中只有 13 台计算机。根域名服务器有 13 种类型,但在世界各地每个类型都有多个副本。)

  • 顶级域 DNS 服务器(Top-Level Domain, TLD )

    顶级域服务器负责顶级域名,如 com,org,net,edu 和 gov 和所有国家的顶级域名,如:cn,uk,jp。

  • 权威 DNS 服务器

    在因特网上具有公共可访问的主机的每个组织机构必须提供公共可访问的 DNS 记录,这些记录将这些主机的名字映射为 IP 地址。 由组织机构的权威 DNS 服务器保存这些 DNS 记录。当递归解析器收到来自 TLD 域名服务器的响应时,该响应会将解析器定向到权威性域名服务器。权威性域名服务器通常是解析器查找 IP 地址过程中的最后一步。

1.6 域名的结构

DNS 是一个分层级的分散式名称对应系统,有点像电脑的目录树结构:在最顶端的是一个”root”,然后其下分为好几个基本类别名称,如 com、org、edu 等;再下面是组织名称,如 ibm﹑microsoft﹑intel 等;继而是主机名称,如 www﹑mail﹑ftp 等。

1.7 DNS 的查找步骤

  • 用户在 Web 浏览器中访问“http://test.com”,请求被递归解析器接收。
  • 递归解析器查询 DNS 根域名服务器(.)。
  • 根服务器使用存储其域信息的顶级域(TLD)DNS 服务器(例如 .com 或 .net)的地址响应该解析器。在访问“test.com”时,我们的请求指向“.com TLD”。
  • 递归解析器向“.com TLD”发出请求。
  • TLD 服务器随后使用该域的域名服务器“test.com”的 IP 地址进行响应。
  • 递归解析器将查询发送到域的域名服务器。
  • “test.com”的 IP 地址而后从域名服务器返回给递归解析器。
  • 递归解析器将查询得到的 IP 地址响应给 Web 浏览器。

2. 域名解析

2.1 解析过程

当我们在浏览器输入http://www.test.com/ 敲回车时,电脑会进行以下动作:

  • 首先根据网址提取出域名,即 www.test.com
  • 如果在系统中配置了 Host 文件,那么电脑会先查询 hosts 文件,看“www.test.com”是否在 Hosts 文件中已经有了对应的记录,如果有就直接去该记录中的 ip 地址,域名解析的过程就结束了。如果 Hosts 文件中没有这个域名的记录,此时电脑会根据你设置的域名服务器去解析域名。
  • 如果你的电脑没有配置域名服务器,那么这时就会出现网站的域名无法解析错误。过程也结束了。如果你设置了域名服务器,那么电脑会向这个域名服务器发送一个域名查询的请求,如果这台域名服务器始终没有回应,则也会出现浏览器报错。
  • 如果域名服务器回应了,那么电脑可以根据域名服务器返回的应答信息得到域名的 ip 地址。然后,浏览器就会想这个 ip 地址对应的 web 服务器发送 http 请求。

2.2 解析方式

  • 递归查询

    主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。 因此,递归查询返回的查询结果或者是所要查询的 IP 地址,或者是报错,表示无法查询到所需的 IP 地址。

    客户端只发一次请求,要求对方给出最终结果。

  • 迭代查询

    本地域名服务器向根域名服务器的查询的迭代查询。当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的 IP 地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的 IP 地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的 IP 地址或报错,然后把这个结果返回给发起查询的主机。

    客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。

  • 非递归查询

    当 DNS 解析器客户端查询 DNS 服务器以获取其有权访问的记录时通常会进行此查询,因为其对该记录具有权威性,或者该记录存在于其缓存内。DNS 服务器通常会缓存 DNS 记录,以防止更多带宽消耗和上游服务器上的负载。

2.3 DNS 高速缓存

缓存的目的是将数据临时存储在某个位置,从而提高数据请求的性能和可靠性。DNS 高速缓存涉及将数据存储在更靠近请求客户端的位置,以便能够更早地解析 DNS 查询,并且能够避免在 DNS 查找链中进一步向下的额外查询,从而缩短加载时间并减少带宽/CPU 消耗。DNS 数据可缓存到各种不同的位置上,每个位置均将存储 DNS 记录并保存由生存时间(TTL)决定的一段时间。

2.3.1 浏览器 DNS 缓存

现代 Web 浏览器设计为默认将 DNS 记录缓存一段时间。目的很明显;越靠近 Web 浏览器进行 DNS 缓存,为检查缓存并向 IP 地址发出正确请求而必须采取的处理步骤就越少。发出对 DNS 记录的请求时,浏览器缓存是针对所请求的记录而检查的第一个位置。

在 Chrome 浏览器中,您可以转到 chrome://net-internals/#dns 查看 DNS 缓存的状态。

2.3.2 操作系统 DNS 缓存

操作系统级 DNS 解析器是 DNS 查询离开您计算机前的第二站,也是本地最后一站。操作系统内旨在处理此查询的过程通常称为“存根解析器”或 DNS 客户端。当存根解析器获取来自某个应用程序的请求时,其首先检查自己的缓存,以便查看是否有此记录。如果没有,则将本地网络外部的 DNS 查询(设置了递归标记)发送到 Internet 服务提供商(ISP)内部的 DNS 递归解析器。

2.3.3 DNS 服务的缓存

某些 DNS 服务器在转发 DNS 查询请求时,可以配置缓存 DNS 查询结果(通过 TTL 控制缓存时间)。

3. DNS 安全

几乎所有 Web 流量都需要标准 DNS 查询,这为 DNS 攻击提供了机会,例如 DNS 劫持和在途攻击。这些攻击可将网站的入站流量重定向到伪造的站点,从而收集敏感的用户信息并使企业承担主要责任。防御 DNS 威胁的最知名方式之一是采用 DNSSEC 协议。

3.1 常见攻击

3.1.1 DNS 欺骗/缓存中毒

这是将伪造的 DNS 数据引入 DNS 解析器缓存中的攻击,其将导致解析器返回域的错误 IP 地址。流量可能会被转移到恶意计算机或攻击者想要的其他任何位置,而不是前往正确网站;通常是用于恶意目的的原始站点副本,例如分发恶意软件或收集登录信息。它为网络罪犯提供了一种极好的可能性,使他们可以使用网络钓鱼技术来窃取来自天真的受害者的信息,包括身份信息或信用卡信息。攻击可能是毁灭性的,具体取决于多种因素,攻击者的目的和 DNS 中毒的影响。

3.1.2 DNS 隧道

此攻击使用其他协议通过 DNS 查询和响应进行隧道传输。攻击者可以使用 SSH、TCP 或 HTTP 将恶意软件或被盗信息传递到 DNS 查询中,而大多数防火墙都不会检测到这些信息。

3.1.3 DNS 劫持

在 DNS 劫持中,攻击者将查询重定向到不同的域名服务器。这可以通过恶意软件或未经授权的 DNS 服务器修改来完成。尽管结果类似于 DNS 欺骗,但这是一种根本不同的攻击,因为它针对的是域名服务器上网站的 DNS 记录,而不是解析器的缓存。

3.1.4 TCP SYN 泛洪

一个 SYN 洪水拒绝服务(DDoS)攻击,可以针对有关互联网的任何操作,从而实现传输控制协议(TCP)服务的简单形式。SYN 波是一种 TCP 状态耗尽攻击,旨在利用常见的基础结构元素(例如,负载平衡器,防火墙,入侵防御系统(IPS)和利用率服务器本身)中存在的连接元素表。

3.1.5 幻域攻击

虚拟域攻击与临时子域攻击相当。因此,在这种攻击中,攻击者攻击您的 DNS 解析器并使其消耗过多的资源来确定这就是我们所说的“虚拟”域,因为这些虚拟域将永远不会响应查询。它们要么非常缓慢地响应请求,要么根本不响应请求。然后解析器会收到对这些域的大量请求,并且解析器被困在等待响应中,导致性能下降和拒绝服务。

3.1.6 随机子域攻击

在这种情况下,攻击者向一个合法站点的几个随机的、不存在的子域发送 DNS 查询。目标是为域的权威名称服务器创建拒绝服务,从而无法从名称服务器查找网站。作为副作用,为攻击者提供服务的 ISP 也可能受到影响,因为他们的递归解析器的缓存将加载不良请求。

3.1.7 域锁定攻击

攻击者通过设置特殊的域和解析器来与其他合法解析器创建 TCP 连接,从而编排这种形式的攻击。当目标解析器发送请求时,这些域会发回缓慢的随机数据包流,从而占用解析器的资源。 基于僵尸网络的 CPE 攻击:这些攻击是使用 CPE 设备(客户端设备;这是服务提供商提供的供其客户使用的硬件,例如调制解调器、路由器、有线电视盒等)进行的。攻击者破坏 CPE,设备成为僵尸网络的一部分,用于对一个站点或域执行随机子域攻击。

3.1.8 分布式反射拒绝服务(DRDoS)

分布式反射式拒绝服务(DRDoS)攻击着重于降低权威性 UDP 确认内资产的可用性。在某些情况下,攻击者会传输 DNS,NTP 等。他们要求伪造的源 IP,目的是将更广泛的确认转移给主机,该主机的确继续在伪造的地址上发送。

3.1.9 DNS 洪水攻击

这是最主要的 DNS 攻击类型之一,在此分布式拒绝服务(DDoS)中,入侵者将攻击您的 DNS 服务器。这种 DNS 泛洪的主要动机是使服务器完全过载,从而使其无法维护正在服务的 DNS 请求,因为所有已处理的 DNS 区域都会影响资源记录的目的。

3.1.10 域名劫持

这种类型的攻击涉及 DNS 服务器和域注册商中的设置,这些设置可以管理从实际服务器到新目的地的流量。

3.1.11 基于僵尸网络的攻击

僵尸网络是多种多样且不断发展的威胁,随着我们对数字设备,互联网和未来新技术的依赖性日益增强,所有这些攻击势必会随之发展。

4. DNS 服务器的学习

4.1 本地服务

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿祥_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值