介绍

1. DNS 欺骗和缓存污染

客户端(PC等)发起域名请求的时候(例如访问:www.baidu.com),如果在本地缓存没有的情况下,会往递归服务器发送域名查询请求(我们也称之为 localdns),递归服务器再一层层递归从 . 到 com. 再到 baidu.com.(即到 . 的权威服务器 --> com. 的权威服务器 --> baidu.com. 的权威服务器),最终取到 www.baidu.com. 对应的解析 A 记录返回给客户端。在整个查询过程中,攻击者可以假冒任何一个应答方:递归服务器 --> .的权威服务器 --> com. 的权威服务器 --> baidu.com. 的权威服务器,给请求方发送一个伪造的响应(UDP 包极其容易伪造),其中响应的解析记录给了一个错误的 IP 地址或者其他类型的解析记录(比如 NXDomain、ServFail 或者 cname 到错误的域名地址去等)。客户端或者是解析服务器在没有经过数据来源正确性校验的情况下接受了伪造的应答,直接将导致客户端无法正常访问网站或者其他资源或者客户端请求重定向到了伪造的网站上去。另外由于 DNS 当中存在着缓存,这种错误的记录将随着攻击者设定的 TTL 进行存活缓存,如果是递归服务器受到 DNS 欺骗那将会导致自身以及大面积的客户端缓存了错误的解析记录(可以通过清除缓存解决)。

2. DNSSEC 简介

DNSSEC 全称 Domain Name System Security Extensions,即 DNS 安全扩展,是由 IETF 提供的一系列 DNS 安全认证的机制(可参考 RFC2535)。它提供一种可以验证应答信息真实性和完整性的机制,利用密码技术,使得域名解析服务器可以验证它所收到的应答(包括域名不存在的应答)是否来自于真实的服务器,或者是否在传输过程中被篡改过。

DNSSEC 采用基于公共密钥加密的数字签名,从而增强 DNS 验证强度。DNSSEC 并非对 DNS 查询和响应本身进行加密签名,而是由数据所有者对 DNS 数据自身进行签名。

每一个 DNS 区均包含一个公私秘钥对。DNS 区所有者使用该区域的私钥对区域内的 DNS 数据进行签名,为这些数据生成数字签名。顾名思义,"私钥"是指 DNS 区所有者会对这些密钥材料保密。但是,该区域的公钥则在区域内公开发布,供全体用户检索。凡在区域内查找数据的递归解析器,还必需检索区域公钥,从而使用公钥验证 DNS 数据的真实性。解析器确认检索到的 DNS 数据的数字签名是否有效。如果有效,证明 DNS 数据合法,则将 DNS 数据返回给用户。如果签名未通过验证,解析器会假设发生攻击,丢弃数据并向用户返回错误。

DNSSEC 在 DNS 协议中新增了两项重要功能:

  • 数据来源验证 - 解析器可以通过加密的方式验证收到的数据是否确实来自其认定的数据传送区域。
  • 数据完整性保护 - 解析器可以确信,自区域所有者使用区域私钥初次进行数据签名以来,数据在传输过程中并未遭到修改。

使用

  1. CF上“启用DNSSEC”

1.png

  1. 进入域名注册商,管理域名DNSSEC配置

1.png

  1. 按如图对应填写参数

Snipaste_2022-08-15_11-13-32.png

  1. 最后稍等几分钟,检测是否成功开启DNSSEC

1.png

引用:https://haokan.baidu.com/v?pd=wisenatural&vid=13598386705245966437
最后修改:2022 年 08 月 16 日
如果觉得我的文章对你有用,请随意赞赏