我有一个可用的 DNSSEC 名称服务器。它在最新的 Fedora 上的 BIND 9.18 上运行。我有两个密钥(KSK、ZSK),我的父母(DNS 方面)获得了有效的 DS 记录,一切都很好。真的。 DNSSEC 分析器也对设置感到满意。
但随后出现了这条日志消息:
“auto-dnssec”选项已弃用,并将在 BIND 9.19 中删除。请迁移到 dnssec-policy
不知道9.19是否以及什么时候推送更新。但我试着做好准备并替换了这个配置(在区域块中):
auto-dnssec maintain;
inline-signing yes;
和:
dnssec-policy sk_policy;
inline-signing yes;
并且策略本身是在顶级配置中定义的:
dnssec-policy "sk_policy" {
keys {
ksk key-directory lifetime unlimited algorithm ecdsa256;
zsk key-directory lifetime unlimited algorithm ecdsa256;
// zsk rollover postponed for later
// zsk key-directory lifetime P90D algorithm ecdsa256;
};
nsec3param iterations 0 optout no salt-length 0;
parent-ds-ttl PT1H;
};
但服务器每 10 分钟记录一次错误:
reconfiguring zone keys
zone_rekey:dns_dnssec_keymgr failed: error occurred writing key to disk
当我搜索此错误消息时,Google 没有找到任何内容。
我尝试使用文件权限来允许密钥目录中的所有内容,我尝试暂时禁用 SELinux(准确地说是严格 -> 宽松),但没有生成任何警告。到目前为止没有任何帮助。我不知道服务器要写什么文件,在哪里,什么错误。我还尝试删除日志文件等,但这是一台生产机器,我无法进行太多实验,因此我将所有内容恢复到原始状态,并且暂时坚持使用 9.18 版本。
有人可以帮助让“dnssec-policy”正常工作吗?
更新#2: - 我发布了我的实验摘要作为(初步)答案。我仍在寻找良好的信息来源,以阻止这种试错实验。
答案1
我有同样的问题:
zone_rekey:dns_dnssec_keymgr failed: error occurred writing key to disk
看来只是权限问题。
我将目录的权限更改/etc/bind/keys
为rwxrwxr--
(774),并将其中的所有文件的权限更改为rw-rw-r--
(664)。
keys
目录所有者是rootkeys
目录组已绑定
之后就可以了。我收到以下消息,并且某些文件的所有者已更改:
2023-02-05T17:27:16+0100 fake_servername 命名为[1234441] .....(之前还有一些相关消息) 2023-02-05T17:27:16 + 0100 fake_servernamenamed[1234441]:一般:警告:文件 /etc/bind/keys/fake_domainname.de.+015+60580.private 的权限已从 0664 更改为 0600 作为此操作的结果。
答案2
我想我已经成功了(也许除了我还没有测试的按键翻转)。我决定写一个总结:
DNSSEC 密钥(在 BIND 中)由 3 个文件组成:公共部分、秘密副本和密钥状态文件。扩展名分别为: .key
、.private
。.state
使用auto-dnssec maintain
,DNSSEC 密钥文件可以是只读的。但是当迁移到 时dnssec-policy
,BIND 服务器会修改关键文件,并且会修改所有三个文件,而不仅仅是状态。 (我不明白为什么。我认为状态文件的存在使得无需编辑“真实”密钥文件。)
明显的要求是调整关键文件的权限:
我使用了目录、文件的root:named
所有者:组和模式。显然这不是唯一可能的设置。重要的是服务器必须能够修改文件。私钥应受到保护。另请参阅“le luxe fou”的答案。请注意,在他的系统上,该用户称为。0770
0660
named
bind
我一开始遇到的问题是SELinux。请注意,本节可能是 Fedora 特定的,并且 SELinux 政策将来可能会发生变化。我一开始没有收到 AVC 拒绝消息(也许我在某个地方犯了错误),这就是我发布这个问题的原因。
简而言之,我在/etc/named/keys
目录中有密钥。 SELinux 将该位置中的文件视为写保护配置。所以我把它们放在/var/named/keys
服务器可以修改文件的位置。不知道这是否是钥匙的正确位置。但我真的不想添加本地策略,audit2allow
除非确实有必要。
最后注意:服务器日志:
由于此操作,文件 /var/named/keys/KXXX.+YYY+ZZZZ.private 的权限已从 0660 更改为 0600
但事实并非如此,权限没有改变。named
( ) 用户可能bind
是密钥文件的预期所有者。我没有找到这方面的任何文档。