DNS 的设计是信任最先到达的任何应答。DNSSEC 为 DNS 记录添加签名,这样解析器就能核实应答确实来自域名的所有者,且在传输途中没有被篡改。如今,注册商和托管面板让 DNSSEC 设置看起来就像一个开关,而对于托管在大型 DNS 服务商的域名,往往确实如此。当您的企业运行自己的权威 DNS 服务器,或在服务商之间迁移域名时,一些细节决定了 DNSSEC 是保护您,还是让您的域名下线。本指南用通俗的语言介绍这些细节。

什么是 DNSSEC,以及它不能做什么

实际上,什么是 DNSSEC?区域中的记录用私钥签名,对应的公钥则发布在区域本身之中。该密钥的指纹,即 DS 记录,位于上级区域(例如 .com)之中,并通过您的注册商送达那里。验证型解析器沿着这条信任链从根开始向下检查,并拒绝签名不匹配的应答。这可以防范缓存投毒和伪造的应答,它们可能把访客或电子邮件导向错误的服务器。

DNSSEC 不会加密 DNS 流量,不会隐藏被查询的名称,也不能取代 HTTPS。如果有人侵入您的注册商或 DNS 账户,它同样无能为力,所以那里的强密码和双因素认证比任何协议都更重要。

DNSSEC 设置的分步流程

  1. 在权威服务器上对区域签名,这会创建密钥和签名。
  2. 检查该域名的每个域名服务器(包括辅助服务器)是否都返回已签名的应答。
  3. 在注册商处发布 DS 记录。在这一步之前,什么都不会被验证,所以前两步中的错误是无害的。
  4. 验证信任链:针对验证型解析器使用 dig +dnssec 或 delv,或使用在线 DNSSEC 分析工具。
  5. 监控此后的签名到期和密钥变更。

顺序很重要。为一个并未在每个域名服务器上正确签名的区域发布 DS 记录,会让验证型解析器直接拒绝该域名。

BIND dnssec-policy 与 PowerDNS DNSSEC

在当前的 BIND 9 版本中,签名由策略驱动。在区域中加入 BIND dnssec-policy 语句(内置的默认策略是个不错的开始),BIND 就会创建密钥、对区域签名,并自动持续重新签名。默认策略使用一个合并的签名密钥,采用 ECDSA P-256 算法,即算法 13,这样应答保持较小。BIND DNSSEC 指南涵盖了详细内容,包括 BIND 如何在继续进行密钥变更之前,向上级区域核对 DS 记录。与任何 BIND 配置变更一样,重载之前请先运行配置检查。在 BIND 或 PowerDNS 服务器上为区域签名,是我们的 DNS 服务器配置工作的一部分。

PowerDNS DNSSEC 的工作方式不同,因为区域存放在数据库里。pdnsutil 工具会为区域启用安全保护,并打印需要交给注册商的 DS 记录,而 PowerDNS 在提供应答时进行签名。无论使用哪种产品,辅助域名服务器都需要留意。如果辅助服务器通过区域传送接收区域,它必须提供已签名的版本;自行构建区域的辅助服务器会返回未签名的应答,并使一部分访客的验证失败。

导致 DNSSEC 验证失败的原因

当 DNSSEC 出问题时,域名看起来不是变慢了,也不是部分出错。对于位于验证型解析器之后的用户(许多大型公共解析器和互联网服务商都在其列),它就是停止解析:网站、电子邮件以及该域名下的一切。通常的原因:

  • 签名过期。签名带有到期日期。如果签名停止了,例如服务器重建时没有带上密钥,区域会一直正常工作到签名耗尽,然后一下子全部失效。
  • 顺序错误的 DNSSEC 密钥轮换。替换密钥签名密钥,意味着要在恰当的时机发布新的 DS 记录,并且在缓存过期之后才能移除旧记录。BIND 的默认策略避免对该密钥做例行轮换,这是它适合小型组织的原因之一。
  • 在启用 DNSSEC 的情况下更换 DNS 服务商。新服务商用不同的密钥签名,而注册商仍持有旧的 DS 记录。
  • 提供未签名数据的辅助服务器,如上所述。

安全地迁移或关闭 DNSSEC

要把已签名的域名迁移到另一个 DNS 主机,最简单安全的路线是先变为未签名。在注册商处移除 DS 记录,等到旧 DS 记录的生存时间在各处都已过去(对许多顶级域名来说大约是一天),然后迁移域名,在新服务商处签名,并发布新的 DS 记录。有些服务商支持让两套密钥同时到位的更平滑的迁移,但前提是双方配合。BIND 出于同样的原因内置了 insecure 策略:一旦上级区域不再指向其密钥,它会分步骤安全地把区域退回到未签名状态。

同样的谨慎也适用于您办公室网络内部的域名解析。如果您的本地解析器验证 DNSSEC,别处某个出问题的域名对您的员工同样会失败,而关闭验证来“修复”它,会让所有其他域名也失去保护。

常见问题:DNSSEC 设置

小型企业需要 DNSSEC 吗?

在您的 DNS 服务商和注册商会自动处理的情况下,值得启用。如果您运行自己的域名服务器,请在监控和服务商迁移的书面流程到位之后再启用,因为一个错误会影响整个域名。

DS 记录从哪里获得?

从为区域签名的 DNS 服务器或服务商处获得。然后您把它输入到注册商处,由注册商转交给上级区域。如果 DNS 主机和注册商是同一家公司,这通常会自动完成。

DNSSEC 会拖慢我的网站吗?

不会明显拖慢。应答稍大一些,解析器多做一点工作,但应答会像其他 DNS 数据一样被缓存,而且现代椭圆曲线密钥让开销保持在很小的水平。

打算为您的域名签名,或在 DNS 主机之间迁移已签名的域名?我们的 DNS 服务器配置与管理服务涵盖 BIND 和 PowerDNS 服务器、辅助服务器、MX、SPF、DKIM 和 DMARC 记录,以及面向洛杉矶(Los Angeles)及其他地区企业的 DNSSEC。关于防火墙和远程访问,请参阅我们的网络搭建、VPN 与安全服务。请联系我们,附上您的域名清单以及它们目前的 DNS 托管位置。