我找到了以下有关如何使用 NSD DNS 服务器和 ldns 实用程序设置 DNSSEC 的指南:https://www.digitalocean.com/community/tutorials/how-to-set-up-dnssec-on-an-nsd-nameserver-on-ubuntu-14-04
基本上它提供以下步骤:
- 使用 ldns-keygen 生成 ZSK 和 KSK
- 使用 ldns-signzone 和上述密钥对区域进行签名
- 将 NSD 指向区域文件的签名版本并重新加载配置
- 在注册商面板上为主题域写入 DS 条目
- 每当您更改区域(未签名的文件)时,请使用提供的脚本(dnszonesigner)
这一切都运行正常。但是有一条评论说“你有没有想过如何保持签名区域的最新状态?RRSIG 会过期,应该及时刷新。换句话说,签名区域应该每隔一段时间重新签名一次。”
这是正确的评论吗?我在任何地方都找不到有关 DNSSEC 区域过期的信息。如果正确,我是否应该通过 cron 运行 dnszonesigner 脚本,如果是,我应该多久运行一次?如果我不这样做会发生什么(以及何时发生)?DNSSEC 感知解析器(如 Google Public DNS)是否仍会为我的区域中的记录提供正确的答案?
答案1
根据下面所列,即使您的数据保持不变,您也应该每月更换一次。
答案2
TL;DR 您刚刚发现了 DNSSEC 的一个主要缺点(特别是与 DNS 相关时),或者至少是需要始终牢记的一个非常重要的要点:DNSSEC 并非一次性切换,您添加后就可以完成。不,相反,它强制定期维护区域,这意味着需要专门的资源(自动化、监控等)。
RRSIG
记录有一个开始日期(之前无效,通常在创建时的“现在”左右)和一个到期日期(之后无效)。
记录RRSIG
的到期日期在过去,即已经过期,这是一个错误,这意味着签名的记录上没有有效签名,因此是 DNSSEC 失败。
这就是您不希望 RRSIG 记录过期的原因。
现在本能的回答可能是:“那我们就让它们在未来几年内过期吧”。
当然,从技术上来说可以。有些解析器可能对此不满意,但应该遵守,而且有些安全工具肯定会将此标记为问题。
但为什么你不应该呢?
主要有两个原因:
- 你正在处理加密的东西;作为一门科学,加密技术正在不断发展;随着 CPU 速度的提高、量子计算的出现等,新的攻击出现了,无论是在理论层面还是在实践层面,这一切都意味着签名可能会以某种方式被利用;如果你定期轮换它们,攻击者的选择就会减少,因为他们既需要找到攻击的方法,又需要他们的操作足够快,至少不会比你的辞职周期长
- 如果你养成了定期更改某些内容的习惯,你显然会制定所有流程和程序,以确保这一切能够正常轻松地进行,并尽可能实现自动化……这也将在罕见和不幸的情况下提供巨大帮助,即在发生某些灾难性事件后,你必须匆忙做出同样的改变
参见 4.4.2https://www.rfc-editor.org/rfc/rfc6781#section-4.4.2
4.4.2. 签名有效期
4.4.2.1. 最大值
选择最大签名有效期的首要考虑因素
是重放攻击的风险。对于低价值、长期
稳定的资源,风险可能很小,签名
有效期可能只有几个月。虽然
允许多年的签名有效期,但
与第 3.2.2 节中给出的相同的“操作习惯”论点也发挥了作用:当区域以某种规律重新签名时,区域管理员仍然
意识到重新签名的操作必要性。
请注意,出于类似的原因,密钥也应该过期。它们的 DNS 记录中没有到期日期,但操作实践是轮换它们。典型的时间范围是 ZSK 的几个月和 KSK 的几年。您还必须考虑密码学的变化,例如目前 SHA-1 被认为是过时的,而基于 RSA 的密钥的长度建议会随时间变化(第一个 1024 位,现在是 2048 位,等等)。
任何使用 DNSSEC 的“严肃”区域,尤其是 TLD 和根,都必须发布“DNSSEC 实践声明”,概述其策略以及密钥和签名的生命周期。例如,请参阅 RFC 6841:“DNSSEC 策略和 DNSSEC 实践声明框架”,其中规定:
4.5.3. 密钥对管理的其他方面
区域运营商和其他参与者需要考虑密钥管理的其他方面。对于这些类型的
实体,可能需要回答以下问题:
任何签名密钥的管理生命周期状态是怎样的?
这些密钥的有效期是多长?这些密钥的使用期限或有效寿命是多少?
和
4.6.5. 签名有效期和重新签名频率
该子组件描述了资源记录签名(RRSIG)记录的生命周期。
例如,您可以阅读以下位置的根 (.) DNSSEC 实践https://www.iana.org/dnssec/procedures/zsk-operator/dps-zsk-operator-v2.1.pdf 其中还提到:
对于每个插槽,都有一个预先生成的 DNSKEY 密钥集,该密钥集在密钥仪式上签名,有效期至少为 15 天,以允许最多 50% 的重叠。
如果你现在进行 DNS 查询:
$ dig . DNSKEY +dnssec
[..]
;; ANSWER SECTION:
[..]
. 6h17m42s IN RRSIG DNSKEY 8 0 172800 (
20210512000000 20210421000000 20326 .
[..]
当前签名的有效期从2021-04-21T00:00:00
到2021-05-12T00:00:00
,正好 21 天。