View a markdown version of this page

防止 Route 53 中悬挂委派记录 - Amazon Route 53
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

防止 Route 53 中悬挂委派记录

使用 Route 53,客户可以创建托管区(比如 example.com)来托管其 DNS 记录。每个托管区均附带一个“委托集”,此集内含有四个名称服务器,客户可以借此服务器在父域中配置 NS 记录。这些 NS 记录可称为“委托 NS 记录”或“委托记录”。

为了使 example.com Route 53 托管区成为权威区域,example.com 域的合法所有者需要通过域注册商在其“.com”父域中配置委托记录。如果客户无法访问在父域中配置的四个名称服务器,例如由于关联的托管区被删除,则可能会带来攻击者可利用的风险。这称为“悬挂委托记录”风险。

在托管区遭到删除的情况下,Route 53 可防止出现悬挂委托记录的风险。删除后,如果使用相同的域名创建新的托管区,Route 53 会查看指向已删除托管区的委托记录是否仍存在于父域中。如果存在,Route 53 会阻止分配任何重叠的名称服务器。这是以下示例中的场景 1。

但是,还有其他悬而未决的委托记录风险,Route 53 无法防范这些风险,如以下示例中的场景 2 至 6 所详述。为了保护自己免受这些更广泛的风险,请确保父 NS 记录与为 Route 53 托管区的委托集相匹配。您可以通过 Route 53 控制台或者,找到托管区域的委托集 Amazon CLI。有关更多信息,请参阅 列出记录get-hosted-zone

此外,为 Route 53 托管区启用 DNSSEC 签名可以在上述最佳实践之外提供另一层保护。DNSSEC 会验证 DNS 答案是否来自权威来源,从而有效防止此种风险。有关更多信息,请参阅 在 Amazon Route 53 中配置 DNSSEC 签名

示例

在以下示例中,我们假设您拥有一个域 example.com 及其子域 child.example.com。我们将解释在各种情况下如何创建悬挂委托记录、Route 53 如何保护域免遭滥用,以及如何有效降低与悬挂委托记录相关的风险。

方案 1:

您可以使用四个名称服务器 <ns1>、<ns2>、<ns3> 和 <ns4> 创建一个托管区 child.example.com。您在托管区 example.com 中正确设置了委托,并使用四个名称服务器 <ns1>、<ns2>、<ns3> 和 <ns4> 为 child.example.com 创建委托 NS 记录。当删除 child.example.com 托管区而未移除 example.com 中的委托 NS 记录时,Route 53 会阻止将 <ns1>、<ns2>、<ns3> 和 <ns4> 分配给具有相同域名的新创建托管区,从而防止 child.example.com 出现悬挂委托记录的风险。

方案 2:

与场景 1 类似,但这次删除了子托管区和托管区 example.com 中的委托 NS 记录。但是,您可以重新添加委托 NS 记录 <ns1>、<ns2>、<ns3> 和 <ns4> 而不创建子托管区。在这里,<ns1>、<ns2>、<ns3> 和 <ns4> 是悬挂委托记录,因为 Route 53 移除了阻止分配 <ns1>、<ns2>、<ns3> 和 <ns4> 的法定保留,现在允许新创建的托管区使用上述名称服务器。为了降低风险,请从委托记录中删除 <ns1>、<ns2>、<ns3> 和 <ns4>,并且仅在创建了子托管区后才将其重新添加。

场景 3:

在此场景中,您将创建一个 Route 53 可重复使用的委托集,其中含有 <ns1>、<ns2>、<ns3> 和 <ns4> 名称服务器。然后,将域 example.com 委托给父域 .com 中的这些名称服务器。但是,您尚未在可重用的委托集中为 example.com 创建托管区。此处的 <ns1>、<ns2>、<ns3> 和 <ns4> 为悬挂委托记录。为了降低风险,请使用带有 <ns1>、<ns2>、<ns3> 和 <ns4> 名称服务器的可重复使用委托集创建托管区。

场景 4:

您的托管区域child.example.com包含四个域名服务器:<ns1><ns2>、<ns3>、和<ns4>。您可以向<ns1>、<ns2><ns3>、和<ns4>父代中添加委托。然后,您可以删除该区域,但不要移除<ns1>、<ns2><ns3>、和<ns4>委托。<ns6><ns7><ns8>随后,您将创建一个包含域名服务器<ns5>、、、的新child.example.com区域<ns6>,并向<ns7><ns8>、、和添加委<ns5>托。现在,您有一个父区域,上面有<ns1>、、<ns2><ns3>、和、<ns4><ns5><ns6><ns7>、和的委托<ns8>。<ns4>这会给<ns1>、、<ns2><ns3>和造成悬而未决的委托风险。<ns5><ns6><ns7><ns8>要降低这种风险,请<ns1><ns2><ns3><ns4>从委托记录中移除非活动的域名服务器、、,,只保留活动的域名服务器、、、。通常,请务必确保只有一个子域委托,child.example.com并且中的 NS 记录与当前子区域的委托集中的四个域名服务器example.com完全匹配。

场景 5:

您可以为两者创建托管区域<ns1>,包括child.example.com名称服务器<ns2><ns3><ns4>、、和,以及grandchild.child.example.com名称服务器<ns5><ns6><ns7>、和<ns8>。但是,您可以直接在example.com区域中委托两者,这会造成悬而未决的委托风险。为确保委托遵循正确的 DNS 层次结构,请仅通过子域名的直接父区域委托子域。例如,如果要委托grandchild.child.example.com:首先在区域中child.example.com使用域名服务器<ns1>、<ns2><ns3>、和进行<ns4>委托,然后在example.com区域中grandchild.child.example.com使用域名服务器<ns5>、<ns6><ns7>、和进行委托<ns8>,然后grandchild.child.example.comchild.example.com区域中移除对的所有直接委托。example.com

场景 6:

在创建相应的托管区域之前,将域或子域委托给 Route 53 域名服务器,这会创建悬而未决的委托记录。这与场景 3 中的情况类似,但是当未创建可重复使用的委托集时,风险也适用。例如,您将域example.com名委托给<ns1><ns2><ns3><ns4>父域中的域名服务器、.com、和,但这些域名服务器都没有托管example.com。Route 53 无法防范这种情况,因为从来没有托管区域可以为该域名的域名服务器建立保有权。为了降低风险,请仅将属于您控制的公共托管区域的 Route 53 域名服务器委托给该服务器。