为什么我们不能绕过 DNSSEC

信息安全 dnssec
2021-09-01 00:10:09

DNSSEC 是一套用于增强 DNS 安全性的安全扩展。(例如:避免缓存中毒)

但是我想知道解析器如何知道下一个 NS 将使用 DNSSEC?

例如:有人想解决www.example.com.. 假设权威 NSexample.com.启用并正确配置了 DNSSEC。

解析器将首先联系根服务器.,然后是 TLD 服务器com.,最后是权威服务器example.com.但是,当解析器向最后一个 NS 发送 DNS 查询时,他不知道 DNSSEC 是否已启用。

这意味着攻击者可能会伪造 DNS 数据包并进行毒化……

我知道我错了,解析器必须知道下一个 NS 使用 DNSSEC。但我不明白怎么做!?

1个回答

.com 的权威机构将在其签名答案中指出 example.com 也已签名(省略了一些输出)

$ dig +norec +dnssec a www.example.com @c.gtld-servers.net

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

;; AUTHORITY SECTION:
example.com.        172800  IN  NS  a.iana-servers.net.
example.com.        172800  IN  NS  b.iana-servers.net.
example.com.        86400   IN  DS  31589 8 1 3490A6806D47F17A34C29E2CE80E8A999FFBE4BE
example.com.        86400   IN  DS  31589 8 2 CDE0D742D6998AA554A92D890F8184C698CFAC8A26FA59875A990C03 E576343C
example.com.        86400   IN  RRSIG   DS 8 2 86400 20150503041532 20150426030532 33878 com. P7R78q8UpfNTw+oVYJkL4BizSB4b8sglabdODISZEFSP3/z7CPAXOa4C 31rbNeLvD/O0I6pmYbg33HILGyj+yxAlZj7x3LNuLzaun86S201XcLkH /Xe/tLA+kEBgwZ6RV+1Vvqc51kAcQuN0U+6v5nZFaCJ1ZhvZ/S8w7FMf dfY=

注意 RRSIG - 这是用 .com 的密钥签名的,它允许客户端验证 DS 记录。反过来,DS(委托签名者)记录是 example.com 的 DNSKEY 的散列。当客户端收到此回复时,它知道 example.com 必须签名,并且必须使用与 DS 记录之一匹配的密钥进行签名。如果客户端随后从 example.com 名称服务器获取非 DNSSEC 数据,它就知道有问题并将数据视为 BOGUS。