有人能提供在 BIND 9.7 下设置 DNSSEC 的分步过程吗?我认为该版本很重要,因为它应该使生活更轻松。事实上,ISC 发布了一篇名为DNSSEC 为人类服务,我用它作为起点,尽管它不完全是一个教程。
我使用 9.7(而不是全新的 9.9)的主要原因是它是 Debian 6 下的稳定版本。我应该提到我已经启动并运行了基本的 BIND 配置。
我尝试过的:
/etc/bind/named.conf.options
包含在行中的相应花括号内dnssec-enable yes;
并重新启动 BIND。
冉
dnssec-keygen example.com
冉
dnssec-keygen -fk example.com
尝试过
dnssec-signzone –S example.com
然而,最后一步给了我错误
dnssec-signzone: fatal: No signing keys specified or found.
我知道这可能是一个错误,因为似乎缺少指示我的密钥在哪里的选项,但 ISC 引用的指南特别引用了最后一个例子。事实上,标志 -S 实际上代表“智能签名”,所以我希望将密钥放在我执行最后一个命令 ( /etc/bind
) 的同一目录中就足够了。
由于这是一个玩具、非生产项目,我不介意每 30 天重复这些步骤,但我想让它们尽可能简单并且......正确执行!
有什么想法/指示吗?提前致谢。
答案1
使用 BIND 启用 DNSSEC 的最简单方法是自动签名,下面是分步教程:
先决条件:
我假设你的区域文件是/var/lib/bind/example.net/db
。区域文件和文件夹应该是可写用于绑定过程!您可能需要调整权限,和/或编辑您的/etc/apparmor.d/usr.sbin.named
。
步骤 1:生成 DNSSEC 密钥:
dnssec-keygen -K /var/lib/bind/example.net example.net
-K 指定新生成的密钥的输出文件夹,第二个参数是区域名称。此命令可能需要很长时间才能完成,因为它会等到您的系统上有足够的熵。如果您只想尝试配置,并且您没有为生产系统生成密钥,您可以添加-r /dev/urandom
- 它将快速生成不太安全的密钥。还请注意,如果您多次运行此命令,每次它都会生成一组新密钥,并且所有密钥集都将用于签署您的区域。
第 2 步:配置 BIND 以启用区域的自动签名:
zone example.net {
type master;
file "/var/lib/bind/example.net/db";
auto-dnssec maintain;
//Enable The Magic
key-directory "/var/lib/bind/example.net";
//Look for DNSSEC keys in "/etc/bind/example.net" folder
update-policy local;
//Enable dynamic updates (required for auto-dnssec)
};
auto-dnssec maintain
告诉 bind 定期搜索 中指定的文件夹key-directory
,查找新的 DNSSEC 密钥,将这些密钥添加到区域并签署区域。所有操作均自动完成,无需您的交互。核心 DNSSEC 支持本身已默认启用。您的 named.conf 可能仅包含此区域部分。
步骤 3:重新加载绑定
rndc reload
将加载新的配置并绑定将加载您的 DNSSEC 密钥并签署区域。
完毕。
确认它与 兼容dig +dnssec @localhost example.net DNSKEY
。您应该会获得 DNSKEY 和 RRSIG 记录。
安全委派
如果您将 DNNSEC 添加到真实域,为了完全启用 DNNSEC 验证,您需要通过域名注册商将 DS 记录添加到您的父区域 - 这与 NS 记录的添加方式相同。
为了验证一切是否正常,您可以使用以下在线工具:dnsviz.net和dnssec-debugger.verisignlabs.com
添加:
有些人可能会问:ZSK 和 KSK 呢?- 此过程将使用单个 ZSK 签署整个区域,这里没有 KSK。我试图做的是提供最简单的“指南”,这将导致 DNSSEC 正常工作。我没有尝试涵盖所有可能的细节。而且没有需要为了大家关心所有可能的细节。依我之见。