跳转至内容

DNSSEC

来自 ArchWiki

本文章或章节需要扩充。

理由:解释 DNSSEC 签名。(在 Talk:DNSSEC 中讨论)

来自 DNSSEC 维基百科条目

域名系统安全扩展 (DNSSEC) 是由互联网工程任务组 (IETF)制定的一套规范,用于保护互联网协议 (IP) 网络中域名系统 (DNS) 提供的某些类型的信息。它是 DNS 的一组扩展,为 DNS 客户端(解析器)提供 DNS 数据的来源验证、不存在的验证以及数据完整性,但不提供可用性或机密性。

安装 DNSSEC 验证解析器

为了确保全系统范围内验证 DNSSEC,请设置一个能够验证 DNSSEC 记录的本地 DNS 服务器,并配置 resolv.conf(5) 以使用该服务器,从而使所有 DNS 查询都经过它。可用验证解析器请参阅 域名解析#DNS 服务器。请注意,某些 DNS 服务器需要特定选项才能启用 DNSSEC 验证。

如果您尝试访问一个具有伪造 (spoofed) IP 地址的网站,验证解析器将防止您接收到无效的 DNS 数据,且您的浏览器(或其他应用程序)将被告知不存在此类主机。由于所有 DNS 查询都经过验证解析器,因此在使用此选项时,您不需要安装内置 DNSSEC 支持的软件。

注意 DNSSEC 验证仅针对已签名的区域(域名)防止记录被伪造。它不能保护未签名的域名,例如 archlinux.org

测试本地验证解析器

通过终端测试

要测试本地解析器是否正确验证了 DNSSEC,请使用支持设置 DO ("DNSSEC OK") 位的 DNS 查询工具,例如 drill(1)

测试解析器是否不对具有无效签名的域名返回答案,例如 badsig.test.dnscheck.tools, rhybar.cz 或 dnssec-failed.org

$ drill -D badsig.test.dnscheck.tools
;; ->>HEADER<<- opcode: QUERY, rcode: SERVFAIL, id: 5610
;; flags: qr rd ra ; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; badsig.test.dnscheck.tools.    IN      A

;; ANSWER SECTION:

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 44 msec
;; EDNS: version 0; flags: do ; udp: 1232
; EDE: 6 (DNSSEC Bogus): 49 37 34 56 (I74V)
;; SERVER: 127.0.0.1
...

返回代码应为 SERVFAIL (服务器失败),答案部分应为空,且标志 (flags) 中不应包含 ad (已验证数据)。

接下来,测试一个具有有效签名的域名

$ drill -D test.dnscheck.tools
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 20952
;; flags: qr rd ra ad ; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; test.dnscheck.tools.   IN      A

;; ANSWER SECTION:
test.dnscheck.tools.      5       IN      A       116.203.95.251
...

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 45 msec
;; EDNS: version 0; flags: do ; udp: 1232
;; SERVER: 127.0.0.1
...

查询应成功返回并包含 ad (已验证数据) 标志。

通过 Web 浏览器测试

注意 为了确保您测试的是本地解析器,请确保您的 Web 浏览器中未启用 应用级 DNS

多个网站提供了检查您的 DNS 解析器是否验证 DNSSEC 的测试

带有 DNSSEC 验证的递归查询

注意 要在全系统范围内启用 DNSSEC 验证,请设置一个 DNSSEC 验证解析器。请参阅 #安装 DNSSEC 验证解析器

要在不涉及递归解析器的情况下验证某个域名的 DNSSEC,请使用能够从 DNS 根开始追踪域名的 DNS 查询工具。例如 drill(1) (来自 ldns) 或 dig(1) (来自 bind)。

使用 drill 时,使用 -D 选项设置 DO (DNSSEC OK) 位,使用 -T 选项从根名称服务器向下追踪到被解析的域名

$ drill -DT example.com

example.com 替换为您想要执行 DNSSEC 验证的域名。

对于具有无效 DNSSEC 签名的域名,结果应以以下行结尾

$ drill -DT badsig.test.dnscheck.tools
[B] badsig.test.dnscheck.tools.   1       IN      A       116.203.95.251
;; Error: Bogus DNSSEC signature
;;[S] self sig OK; [B] bogus; [T] trusted; [U] unsigned

对于具有可信签名的域名,结果应以以下行结尾

$ drill -DT test.dnscheck.tools
[T] test.dnscheck.tools.  1       IN      A       116.203.95.251
;;[S] self sig OK; [B] bogus; [T] trusted; [U] unsigned

参见

https://github.com/gene-git/dns_tools || dns_toolsAUR

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.