防止 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 和 3 所述。为了保护自己免受这些更广泛的风险,请确保父 NS 记录与为 Route 53 托管区的委托集相匹配。您可以通过 Route 53 控制台或 AWS 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> 名称服务器的可重复使用委托集创建托管区。