跳转至内容

DNSSEC

来自 ArchWiki

本文章或章节需要扩充。

原因: 解释DNSSEC签名。 (在 Talk:DNSSEC 讨论)

摘自 DNSSEC 维基百科文章

域名系统安全扩展 (DNSSEC) 是一套互联网工程任务组 (IETF) 的规范,用于保护互联网协议 (IP) 网络上使用的域名系统 (DNS) 所提供信息的安全性。它是 DNS 的一系列扩展,为 DNS 客户端 (解析器) 提供 DNS 数据的来源认证、经过认证的存在否认以及数据完整性,但不提供可用性或保密性。

安装一个DNSSEC验证解析器

要确保 DNSSEC 在系统范围内得到验证,请设置一个本地 DNS 服务器来验证 DNSSEC 记录,并配置 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 (服务器失败),答案部分应为空,并且标志不应包含 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 (已认证数据) 标志。

从网页浏览器

注意 为确保您测试的是本地解析器,请确保您的网页浏览器中未启用 应用程序级 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

在特定软件中启用DNSSEC

本文或本节正考虑移除。

原因: 没有一个链接列出任何自己验证 DNSSEC 的应用程序,而且所有浏览器扩展都已过时很久。(在 Talk:DNSSEC 讨论)

如果您选择不 #安装一个DNSSEC验证解析器,您需要使用内置 DNSSEC 支持的软件。通常这意味着您必须自己修补软件。希望在 (2020 年 12 月) 之前能在 [1] 找到一个包含多个修补应用程序的完整列表。此外,一些网页浏览器 (其中一些在 [2] 中提及) 具有可以安装的扩展或插件,可以在不修补程序的情况下实现 DNSSEC。

参见

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