在
为域名启用DNSSEC功能可以防止 DNS 欺骗,通过数字签名验证 DNS 数据的真实性和完整性,防止攻击者伪造 DNS 响应,验证域名签名的公钥记录将存储在上一级域名解析服务器中,并建立了一条从根域(root)到最终域名的信任链。我推荐使用bind9内置的DNSSEC管理功能来实现zone文件的加密、密钥的自动管理和轮转等功能。
只需要在zone配置中添加dnssec-policy即可开启dnssec功能,如:
/etc/bind/named.conf.local
zone "example.tld"{ type master; file "/var/cache/bind/db.example.tld"; dnssec-policy "default"; inline-signing yes; };
利用bind9中的dnssec-policy,你可以快速的设置dnssec,重启bind9后会自动为其签名。
在/var/cache/bind/
下,bind9会自动生成其公钥,使用dnssec-dsfromkey来生成DS记录:
dnssec-dsfromkey -2 "/var/cache/bind/Kexample.tld.+013+29238.key" 返回: example.tld. IN DS 29238 13 2 623164299549A1FF93B62C1A9E35773B48E509BAD588197388D2CBDC9B1124CF
13
代表着加密算法;3
代表Digest Type;29238
代表公钥id;最后为Digest。将这些数据添加到你的域名提供商,以spaceship为例:
此外你可以参考官方文档自定义dnssec-policy,如:
/etc/bind/named.conf
添加
dnssec-policy "myway" { keys { ksk lifetime unlimited algorithm ed25519; zsk lifetime P60D algorithm ed25519; }; };