场景:
- BIND9(9.18)在 Debian 12“bookworm”上运行,作为一大堆区域的主 DNS。
- 已制定 dnssec 策略,用于建立区域条目的自动签名。
- 密钥(KSK 和 ZSK)定期更新(1 年和 30 天)。
- DS-Records 被推送至上游。
总体来说,这是一个相当好用且安全的 DNS 设置,并且已经运行了相当长一段时间。
现在,我们注意到,KSK 的密钥有效期似乎存在问题。多年来,在进行了一些 KSK 轮换后,过期的 KSK 似乎仍留在区域中。根据它们的时间参数,它们应该早就被删除了,但仍然保留在区域中(DNSSEC 条目以及密钥文件)。
示例:某个区域已积累了 4 个 KSK(目前只有 2 个有效)。其中一个过期密钥的 ID 为 57979,该密钥仍然存在于该区域中。(以下显示的数据来自密钥状态文件Kredacted.com.+008+57979.state
)
; This is the state of key 57979, for redacted.com.
Algorithm: 8
Length: 2048
Lifetime: 31536000
Successor: 46306
KSK: yes
ZSK: no
Generated: 20201230124011 (Wed Dec 30 13:40:11 2020)
Published: 20201230124011 (Wed Dec 30 13:40:11 2020)
Active: 20201230124011 (Wed Dec 30 13:40:11 2020)
Retired: 20211230124011 (Thu Dec 30 13:40:11 2021)
Removed: 20211231144011 (Fri Dec 31 15:40:11 2021)
PublishCDS: 20201231134511 (Thu Dec 31 14:45:11 2020)
DNSKEYChange: 20201230144511 (Wed Dec 30 15:45:11 2020)
KRRSIGChange: 20201230144511 (Wed Dec 30 15:45:11 2020)
DSChange: 20211230124011 (Thu Dec 30 13:40:11 2021)
DNSKEYState: omnipresent
KRRSIGState: omnipresent
DSState: unretentive
GoalState: hidden
所有密钥管理(签名、计时、滚动……)均由 bind 自行执行。无需手动操作。因此,我期望 bind 也会自动删除过期的密钥 - 但事实并非如此。我已经做了大量研究,并仔细查阅了 bind 手册,但无济于事。
我的问题:
- 为什么过期的密钥(特别是 KSK)不会被删除?
- 如果它们仍然用于某事(因此没有被移除),我怎样才能辨认那是什么?
- 最后:这种行为的可能原因是什么?如何解决?