当 NS 记录不附带 A 记录时进行 DNSSEC 解析

当 NS 记录不附带 A 记录时进行 DNSSEC 解析

一直在尝试寻找合适的地方来问这个问题。希望就是这里!

我试图理解 DNS 和 DNSSEC 背后的一些微妙之处。DNSSEC 使用信任链从受信任的根 DNS 服务器一直到目标主机。根据http://dnsviz.net/d/ietf.org/dnssec/,主机 ietf.org 受 DNSSEC 保护。运行以下 Unix 命令,我们得到一个示例跟踪:

$ dig ietf.org +dnssec +trace +multi

; <<>> DiG 9.9.5 <<>> ietf.org +dnssec +trace +multi
;; global options: +cmd
.                       24638 IN NS a.root-servers.net.
.                       24638 IN NS b.root-servers.net.
.                       24638 IN NS c.root-servers.net.
.                       24638 IN NS d.root-servers.net.
.                       24638 IN NS e.root-servers.net.
.                       24638 IN NS f.root-servers.net.
.                       24638 IN NS g.root-servers.net.
.                       24638 IN NS h.root-servers.net.
.                       24638 IN NS i.root-servers.net.
.                       24638 IN NS j.root-servers.net.
.                       24638 IN NS k.root-servers.net.
.                       24638 IN NS l.root-servers.net.
.                       24638 IN NS m.root-servers.net.
.                       24638 IN RRSIG NS 8 0 518400 (
                                20180223050000 20180210040000 41824 .
                                e8itIEYiVRvPxv5mkNzkBZTltFgDUIFLB/KxV7RFpXzj
                                X8Rqre85GiIFlAM01rIi0YGTkb6k6U+TGdDxXabQmr4q
                                wHIBTEd2MjrHb+0XsY4dIlZJ3qvLPdnDPHSlIBx17K3A
                                +AqMZdINCCA7QlxnUd3+agMpc9jkJrsNBO2x1CVBP8R2
                                w4a2kHcpxILr9T/heamOJOpHjd3r3l6/mhGkY0ut2I+Y
                                4vbzplayG0f6Br461y4qtX4h6JUJk8BBDvzcqzovpUSk
                                VSqLeM9YXVC5XzrWNb8081u7ct37J5g+5vJLHAMcac7L
                                8qQ4rtmQqzHn1reS6wOogYxsUVlOxdxP2Q== )
;; Received 525 bytes from 10.211.254.254#53(10.211.254.254) in 109 ms

org.                    172800 IN NS a0.org.afilias-nst.info.
org.                    172800 IN NS a2.org.afilias-nst.info.
org.                    172800 IN NS b0.org.afilias-nst.org.
org.                    172800 IN NS b2.org.afilias-nst.org.
org.                    172800 IN NS c0.org.afilias-nst.info.
org.                    172800 IN NS d0.org.afilias-nst.org.
org.                    86400 IN DS 9795 7 1 (
                                364DFAB3DAF254CAB477B5675B10766DDAA24982 )
org.                    86400 IN DS 9795 7 2 (
                                3922B31B6F3A4EA92B19EB7B52120F031FD8E05FF0B0
                                3BAFCF9F891BFE7FF8E5 )
org.                    86400 IN RRSIG DS 8 1 86400 (
                                20180223050000 20180210040000 41824 .
                                Weag50NNvW6pqxODjMj3F0LrcFizxaK76PhdGtVv0iDg
                                tgZw4DzcDU8WrD6q/pm7kzKwLpXryhfMo3ASKgP+Usyr
                                V1uW0WyCh0cwZs6yfMKfZNtF1X47PulkiHgrc7AI/+nO
                                oQGv6FlUAROyh+aak7QN6/IEVO5CE6nzpsyzDqewnGmt
                                xYNgeWJr0RJR81VqBN6/Y4t/NthxsPEyLoXl1ijju99h
                                Tf9UP2+1GFLqaf6uINsSD/EsHryQB7W6ZUz6pdmE5C3W
                                jbqZ+7heu7xK9Tzz7Fv3tS2nei0xk0puNh5vCHjGzjG5
                                +lIfY6dJxxvxh/ywqS6Fm8yhIRjLgscpQw== )
;; Received 810 bytes from 199.7.83.42#53(l.root-servers.net) in 100 ms

ietf.org.               86400 IN NS ns1.yyz1.afilias-nst.info.
ietf.org.               86400 IN NS ns0.amsl.com.
ietf.org.               86400 IN NS ns1.sea1.afilias-nst.info.
ietf.org.               86400 IN NS ns1.ams1.afilias-nst.info.
ietf.org.               86400 IN NS ns1.mia1.afilias-nst.info.
ietf.org.               86400 IN NS ns1.hkg1.afilias-nst.info.
ietf.org.               86400 IN DS 45586 5 1 (
                                D0FDF996D1AF2CCDBDC942B02CB02D379629E20B )
ietf.org.               86400 IN DS 45586 5 2 (
                                67FCD7E0B9E0366309F3B6F7476DFF931D5226EDC534
                                8CD80FD82A081DFCF6EE )
ietf.org.               86400 IN RRSIG DS 7 2 86400 (
                                20180302153210 20180209143210 1862 org.
                                K1JT67FsQ9Dl4W8V7pYp6MlbbNSe2IKfmgXiqXPlPLsy
                                5mZYhnUilXE40icI9Eea6KZY5eEZIdvEDzfMXaAshLXh
                                6gLAtPTviTa9aFUid2dd/McNUdSrWQjZKicpW//XJ6fw
                                9v5coQTrnP9HA9oCwb5TXWAKY7Ju+j5hkrBPy7M= )
;; Received 441 bytes from 199.19.54.1#53(b0.org.afilias-nst.org) in 134 ms

ietf.org.               1800 IN A 4.31.198.44
ietf.org.               1800 IN RRSIG A 5 2 1800 (
                                20190109135858 20180109130036 40452 ietf.org.
                                O8fJkB4ISG/SzpRd0EBvh49pLzR21cXJEH7ZWUSfpFjX
                                fv7pqIEX9FUMEjP+VHdsP7iCQ3Gkd3PQul7PNFqbdMnk
                                4O5NomCyg71J73G4rLlaBYZYTCTVW+8CdgviqrNoIFSz
                                gPcN7kxDdg25YKi5ywjbMqCU9BWhnGw+4kS7TrXtd92c
                                /YUqViYDN0OCTMn5b05+a6FJd0Fu4iKbYpFQJ1/dDh5F
                                /RAhIGFbOd2/zGK6xCE3IU8ICzRhIJL0ZiNMRtbZOc1u
                                POeHd3SQ66ZrNRbl0pxwQlzizRkaeFchCZ9+w71AmrGG
                                0K4BWNNsW1PwkgJwb/trlWSTroA4X/6oUg== )
ietf.org.               1800 IN NS ns1.yyz1.afilias-nst.info.
ietf.org.               1800 IN NS ns1.hkg1.afilias-nst.info.
ietf.org.               1800 IN NS ns1.ams1.afilias-nst.info.
ietf.org.               1800 IN NS ns0.amsl.com.
ietf.org.               1800 IN NS ns1.sea1.afilias-nst.info.
ietf.org.               1800 IN NS ns1.mia1.afilias-nst.info.
ietf.org.               1800 IN RRSIG NS 5 2 1800 (
                                20190109135847 20180109130036 40452 ietf.org.
                                nfZKxJsrSozyiyPvWcn0fJCAz4qVE5xiwLOTGkOAh/Mh
                                SH9xv6sNqWEJtul4rRYLJQ7S1AyFHT4PwhjyypG0KMnW
                                SAEMTpXhMqO2Mlf2/LoVPoPGsFfs3LqhgyAYxjgbOxix
                                zG1grS/AXHzUzudrLjWUfgQB+N4jb0VmvVBtp4XS6soa
                                C+ZHdyLr4pnT8PwE2Qbge405lhEIAHfx+RLWkrkQUJEU
                                JKTjyXsQcRp/2MRniHXf4udSWSvjcwNuFKEng6eHzWg7
                                tQwBHmluZVHhN7U/xcplREvKRg/5YV4K3OjRcXAXK0XW
                                kauSoZWiLHvRTgPnZJdhNDv5uqHvHVGNbw== )
;; Received 994 bytes from 65.22.8.1#53(ns1.sea1.afilias-nst.info) in 100 ms

但是如果我们运行

$ dig ietf.org +dnssec

; <<>> DiG 9.9.5 <<>> ie

tf.org +dnssec
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35753
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 8192
;; QUESTION SECTION:
;ietf.org.                      IN      A

;; ANSWER SECTION:
ietf.org.               1800    IN      A       4.31.198.44
ietf.org.               1800    IN      RRSIG   A 5 2 1800 20190109135858 20180109130036 40452 ietf.org. O8fJkB4ISG/SzpRd0EBvh49pLzR21cXJEH7ZWUSfpFjXfv7pqIEX9FUM EjP+VHdsP7iCQ3Gkd3PQul7PNFqbdMnk4O5NomCyg71J73G4rLlaBYZY TCTVW+8CdgviqrNoIFSzgPcN7kxDdg25YKi5ywjbMqCU9BWhnGw+4kS7 TrXtd92c/YUqViYDN0OCTMn5b05+a6FJd0Fu4iKbYpFQJ1/dDh5F/RAh IGFbOd2/zGK6xCE3IU8ICzRhIJL0ZiNMRtbZOc1uPOeHd3SQ66ZrNRbl 0pxwQlzizRkaeFchCZ9+w71AmrGG0K4BWNNsW1PwkgJwb/trlWSTroA4 X/6oUg==

;; Query time: 101 msec
;; SERVER: 10.211.254.254#53(10.211.254.254)
;; WHEN: Sat Feb 10 07:00:56 EST 2018
;; MSG SIZE  rcvd: 349

然后观察到 Dig 没有设置“ad”标志,这让我相信目标主机(ietf.org)可能不是 DNSSEC 安全的。

假设它是安全的,我正在尝试理解信任链。我不明白的是,在 DNS 解析期间,如果您查询

$ dig @199.19.54.1 ietf.org +dnssec +multi

; <<>> DiG 9.9.5 <<>> @199.19.54.1 ietf.org +dnssec +multi
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30334
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 9, ADDITIONAL: 1
;; WARNING: recursion requested but not available

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

;; AUTHORITY SECTION:
ietf.org.               86400 IN NS ns1.ams1.afilias-nst.info.
ietf.org.               86400 IN NS ns0.amsl.com.
ietf.org.               86400 IN NS ns1.hkg1.afilias-nst.info.
ietf.org.               86400 IN NS ns1.mia1.afilias-nst.info.
ietf.org.               86400 IN NS ns1.sea1.afilias-nst.info.
ietf.org.               86400 IN NS ns1.yyz1.afilias-nst.info.
ietf.org.               86400 IN DS 45586 5 1 (
                                D0FDF996D1AF2CCDBDC942B02CB02D379629E20B )
ietf.org.               86400 IN DS 45586 5 2 (
                                67FCD7E0B9E0366309F3B6F7476DFF931D5226EDC534
                                8CD80FD82A081DFCF6EE )
ietf.org.               86400 IN RRSIG DS 7 2 86400 (
                                20180302153210 20180209143210 1862 org.
                                K1JT67FsQ9Dl4W8V7pYp6MlbbNSe2IKfmgXiqXPlPLsy
                                5mZYhnUilXE40icI9Eea6KZY5eEZIdvEDzfMXaAshLXh
                                6gLAtPTviTa9aFUid2dd/McNUdSrWQjZKicpW//XJ6fw
                                9v5coQTrnP9HA9oCwb5TXWAKY7Ju+j5hkrBPy7M= )

;; Query time: 143 msec
;; SERVER: 199.19.54.1#53(199.19.54.1)
;; WHEN: Sat Feb 10 06:55:30 EST 2018
;; MSG SIZE  rcvd: 441

那么这些名称服务器中没有一个 A 记录。因此,除非我完全错了,否则 DNS 必须进行某种额外的解析才能获得这些名称服务器(如 ns0.amsl.com.)的 IP 地址,以便可以依次查询它们以获取最终目标主机(ietf.org)的 A 记录。唯一的问题是,根据 Dig 和http://dnsviz.net/d/ns1.sea1.afilias-nst.info/dnssec/

那么 DNSSEC 如何建立安全性,以及如何在此额外的地址解析步骤中保持信任?也许我没有正确理解 DNS 或 DNSSEC,非常感谢大家的帮助!

答案1

您的问题中有多个要点:

1) dig +dnssec仅请求 dig 向您发送与 DNSSEC 相关的记录,即带有您的结果的 RRSIG,它不验证任何内容。

+ad标志(但这是默认设置)请求 DNSSEC 验证...但这仅在您查询 DNSSEC 验证解析器时才有效。相反,+cd它会禁用任何类型的 DNSSEC 验证。

看:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @9.9.9.9 +ad ietf.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31296
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ietf.org.          IN  A

;; ANSWER SECTION:
ietf.org.       1800    IN  A   4.31.198.44

;; Query time: 228 msec

2) 关于dig @199.19.54.1 ietf.org +dnssec +multi 您没有获得 A 记录是正常的。aka 对 不具有权威性,它只对 具有权威性。因此,如果您查询其区域中的域,它只会提供引荐,即 NS 记录。一些名称服务器可能还会在附加199.19.54.1部分提供 A/AAAA 记录以帮助解析器,但它们更多地被用来不信任它们。b0.org.afilias-nst.org.ietf.orgorg

但请注意,在回复中您有 DSietf.org和相关的 RRSIG。

因此,解析器的下一步是使用 NS 记录,查询其 A/AAAA 记录,然后联系他们以获取 的 A 记录ietf.org。如果他们需要进行 DNSSEC 验证,他们将查询 DNSKEY 并验证 DNSKEY 是否与区域中的 DS 相对应org,以及A的记录ietf.org是否具有使用 DNSKEY 签名的相应 RRSIG(我简化了,大多数情况下您都有 KSK 和 ZSK,这只会创建额外的签名级别,但不会从概念上改变上面的内容)。

名称服务器的域名本身可能未启用 DNSSEC,这不会影响 的 DNSSEC 验证ietf.org。但是,这会产生实际的安全后果,因为这意味着它们的域名可能被劫持,因此理论上您可以将流量转移到会给出其他回复的流氓名称服务器,并可能导致 DNS 或 DNSSEC 验证失败。这些流氓名称服务器最多只能向所有验证解析器强制 SERVFAIL 错误,因为它们无法提供由与父区域中的 DS 记录匹配的密钥签名的签名。因此,即使名称服务器域本身不使用 DNSSEC,此处的 DNSSEC 仍可确保不会插入其他/虚假记录。

当然,在理想情况下,所有域名都可以或应该启用 DNSSEC,但这仍然是一个先有鸡还是先有蛋的问题:根区域.使用域中的名称服务器root-servers.net,因此您无法同时保护两个部分。事实上,root-servers.net到今天为止还没有启用 DNSSEC……这对所有域名的解析或 DNSSEC 验证影响不大。

简而言之,DNSSEC 不起作用是因为权威名称服务器会直接提供“子”名称服务器的 IP 地址,这部分工作方式与 DNSSEC 之前一样。DNSSEC 之所以有效,是因为从广义上讲,每个区域都会发布用于在区域中的每条记录上生成签名的密钥,并且密钥的哈希值会在父区域中发布,以创建一条信任链​​,直至根信任锚。

相关内容