迁移到 BIND9 dnssec 策略 – Tony Finch

这是关于将签名区域从 BIND 的旧auto-dnssec迁移到新dnssec-policy的一些笔记:

  • 迁移目的:将区域从旧的auto-dnssec迁移到新的dnssec-policy,以最小的中断进行,继续将 DNSSEC 密钥视为静态配置,不进行密钥更替,给密钥无限的生命周期。
  • 风险避免:迁移到dnssec-policy可能会触发意外的密钥更替或算法更替,可能是配置的dnssec-policy与现有密钥不匹配或named内部的dnssec-policy机制误解了现有密钥的状态。
  • 须知事项:之前的博客介绍了dnssec-policy的一些基础知识,如rndc dnssec命令、调试日志、dnssec-policy状态名称等。
  • 前期准备:区域大多使用算法 13(ECDSA P256 SHA256),若使用 RSA 密钥可先升级,目前不研究dnssec-policy的算法更替。
  • 版本选择:将主 DNS 服务器升级到最新的 Debian Stable(bookworm,12.5),使用 BIND 9.18.24,认为 9.18 是长期支持版本,有更多的 bug 修复。
  • 测试工具:使用 Ansible 设置在开发框上创建主 DNS 服务器的隔离副本,用于实验dnssec-policy和制定迁移计划。
  • 需要自定义策略的原因:BIND 的默认dnssec-policy与使用auto-dnssec的区域策略不匹配,需要自定义策略,且还有其他设置需要更新为新样式。
  • 匹配现有策略:检查密钥目录,根据现有密钥的算法和无限生命周期等信息制定匹配的dnssec-policy,如包含一个 ZSK 和一个 KSK,算法为 13 等。
  • 更多策略细节

    • 最大区域 TTLdnssec-policy机制需确保状态转换慢于相关 TTL,默认 24h,若区域 TTL 更长,named将拒绝加载区域。
    • DNSKEY TTL:通常使用 1 小时 TTL,基础设施记录使用 24 小时 TTL,在dnssec-policy中通过dnskey-ttl设置。
    • 签名生命周期:更喜欢较短的 RRSIG 生命周期,在auto-dnssec中通过named.confoptions块设置,在dnssec-policy中通过signatures-refreshsignatures-validitysignatures-validity-dnskey设置。
    • 其他设置:还有其他与更替时间相关的dnssec-policy设置,由于给密钥设置了无限生命周期,可保持其他设置为默认。
  • 准备密钥文件:确保区域的 DNSSEC 密钥文件包含区域当前状态的完整描述,使用dnssec-settime命令编辑密钥文件,确定 KSK 和 ZSK,更新 KSK 的“sync”和 DS 发布时间等,更新密钥后需在 Ansible 仓库和主服务器上部署。
  • 重大配置更改:将新的dnssec-policy应用到区域,如zone dotat.at配置中添加dnssec-policy fanf,激活更改前确保调试日志打开,激活后可查看日志消息确认状态,如DNSKEY等状态变为“OMNIPRESENT”,rndc dnssec -status输出确认一切正常,启用dnssec-policy后区域的.key.private文件不变,新增.state文件包含旧的时间元数据。
  • 完成:已完成所有个人区域的迁移,将有其他杂项笔记放在另一篇帖子中。
阅读 14
0 条评论