如何延长 bind9 中每个 DNSSEC 签名的到期日期?

如何延长 bind9 中每个 DNSSEC 签名的到期日期?

我有一个 dnssec 保护的域名,当所有主域名都无法访问时,该域名需要保持 8 周的有效期。

据我了解,在区域的配置文件中设置应该会生成sig-validity-interval持续64 天并且每 7 天由 bind9 自动重新签名的 s。64 7SSIG

当我为域完成此操作时,我惊讶地看到 dnsvis 显示并非所有生成的RRSIGs 都会持续 64 天。RRSIG和 的 sDNSKEY确实SOA持续了预期的时间,但所有其他RRSIGs 都会在 11 到 14 天后过期。

我最初以为这可能是在设置签名有效期间隔之前运行 bind9 导致的缓存问题。所以我停止了named,清除/var/cache/bind并删除了所有 DNSSEC 文件*.jbk、、*.jnl*.signed*.signed.jnl然后重新启动了 bind。这并没有解决问题。

很明显我在这里做错了什么,但我不知道是什么。以下是我为域使用的配置片段:

  1. 区域声明named.conf.local

    zone "example.com" {
         type master;
         file ".../db.example.com";
         allow-transfer  { ... };
         also-notify     { ... };
         inline-signing yes;
         auto-dnssec maintain;
         serial-update-method increment;
         key-directory "...";
         sig-validity-interval 64 7;
     };
    
  2. 内容.../db.example.com

    $TTL 300
    @    IN  SOA ns1.example.com. admin.example.com. (
             2021101004      ; Serial
             10m             ; Refresh
             20m             ; Retry
             9w              ; Expire
             1h )            ; Negative Cache TTL
    ;
    
    example.com. IN  NS  ns1.example.com.
    example.com. IN  NS  ns2.example.com.
    
    ; ...
    

答案1

从 bind 版本 9.16.15 (~2021) 开始,bind 似乎只允许控制RRSIG记录何时过期自定义 dnssec 策略使用:

  1. 首先,使用选项signatures-refresh、和定义自定义策略signatures-validity,并将signatures-validity-dnskey其设置为所需的值。
  2. dnssec-policy然后,通过设置区域块中的选项为给定区域启用自定义策略。

自定义策略可能如下所示:

dnssec-policy example-com-policy {
  dnskey-ttl 300;
  keys {
      ksk key-directory lifetime unlimited algorithm ED25519;
      zsk key-directory lifetime unlimited algorithm ED25519;
  };
  max-zone-ttl 300;
  parent-ds-ttl 300;
  parent-propagation-delay 2h;
  publish-safety 7d;
  retire-safety 7d;
  signatures-refresh 1439h;
  signatures-validity 90d;
  signatures-validity-dnskey 90d;
  zone-propagation-delay 2h;
};

区域块可能看起来像这样:

zone "example.com" {
     type master;
     file ".../db.example.com";
     allow-transfer  { ... };
     also-notify     { ... };

     key-directory "...";
     serial-update-method increment;
     dnssec-policy example-com-policy;
};

请注意,与传统方法相比,此方法有一些缺点(即auto-dnssec maintain):

  1. 我发现,当对多个域使用单个策略时, bind 会对rndc/命令无响应。为每个区域定义单独的策略似乎可以解决这个问题。systemctl

  2. 我发现绑定坚持“淘汰”您的 KSK 和 ZSK 密钥,无论它们是否过期。在撰写本文时,我还没有找到避免此问题的方法。

据我所知,这同样适用于主配置和从配置中的绑定。

相关内容