如何使用dig命令测试DNSSEC

时间:2019-04-29 03:17:51  来源:igfitidea点击:

如何在Linux下使用dig命令行测试和验证DNSSEC ?

DNSSEC用于保护域名系统(DNS)提供的某些类型的信息。使用DNSSEC可以验证DNS数据和DNS完整性防止被恶意攻击,提高安全性。

如何使用dig测试和验证DNSSEC

  1. 使用dig来验证DNSSEC记录 dig YOUR-DOMAIN-NAME + DNSSEC +short
  2. 获取用于验证DNS记录的公钥 dig DNSKEY YOUR-DOMAIN-NAME +short
  3. 使用dig命令查看DNSSEC信任链 dig DS YOUR-DOMAIN-NAME +trace
  4. 使用dig执行DNSSEC验证
dig . DNSKEY | grep -Ev '^($|;)' > keys
dig +sigchase +trusted-key=./keys YOUR-DOMAIN-NAME. A | less
dig +sigchase +trusted-key=./keys YOUR-DOMAIN-NAME. A | grep -i validation

查看域名是否启用了DNSSEC

在启用DNSSEC时, DS(签名委托)记录了已签名区域文件的有关信息。

使用dig查看某个域名的DS记录:

dig DS {domain-name}
dig DS seaevergreen.com

DNSKEY就是一个公钥记录,DNS解析器可以使用它来验证DNSSEC签名。

dig DNSKEY {domain-name}
dig DNSKEY seaevergreen.com +short

使用dig查询和验证dnssec

dig +dnssec {domain-name}.
dig +dnssec www.seaevergreen.com. +short
dig seaevergreen.com +dnssec +multi

输出中 ad表示验证回答,表明DNSSEC 是OK的,如果状态为SERVFAIL,则可能是没有DNSSEC校验。

; <<>> DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu <<>> seaevergreen.com +dnssec +multi
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53272
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;seaevergreen.com.		IN A

使用dig命令查看DNSSEC信任链

dig DS {your-domain.} +trace
dig DS google.com +trace @114.114.114.114
dig DS google.com +trace @1.1.1.1
dig DS seaevergreen.com +trace

测试DNSSEC的有效性

获取根密钥

dig . DNSKEY | grep -Ev '^($|;)' > keys

查看获取到的keys: cat keys

进行DNSSEC验证:

dig +sigchase +trusted-key=./keys YOUR-DOMAIN-NAME. A | less
dig +sigchase +trusted-key=./keys YOUR-DOMAIN-NAME. A | grep -i validation