一直在尝试寻找合适的地方来问这个问题。希望就是这里!
我试图理解 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.org
org
但请注意,在回复中您有 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 之所以有效,是因为从广义上讲,每个区域都会发布用于在区域中的每条记录上生成签名的密钥,并且密钥的哈希值会在父区域中发布,以创建一条信任链,直至根信任锚。