Dnssec

NS 記錄不伴隨 A 記錄時的 DNSSEC 解析

  • February 11, 2018

一直在尋找合適的地方問這個問題。希望這就是這個地方!

我特別想了解 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 沒有設置“廣告”標誌,這讓我相信目標主機 (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 必須做一些額外的解析來獲取這些名稱伺服器的 IP 地址(例如 ns0.amsl.com.),以便依次查詢它們以獲取最終的 A 記錄目標主機 (ietf.org)。唯一的問題是,根據 Dig 和http://dnsviz.net/d/ns1.sea1.afilias-nst.info/dnssec的說法,這些名稱伺服器(例如 ns0.amsl.com.)都不是 DNSSEC 安全的/

那麼,DNSSEC 如何建立安全性以及在這個額外的地址解析步驟中如何保持信任?也許我沒有正確理解 DNS 或 DNSSEC,感謝所有幫助!

您的問題中有多個要點:

  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記錄是正常的。 199.19.54.1akab0.org.afilias-nst.org.不具有權威性ietf.org,僅具有權威性org。因此,如果您查詢它在其區域中擁有的域,它只會提供推薦,即 NS 記錄。一些域名伺服器也可能在附加部分提供 A/AAAA 記錄來幫助解析器,但它們更習慣於不信任它們。

但請注意,在回復中您有 DSietf.org和相關的 RRSIG。

所以解析器的下一步是使用 NS 記錄,查詢他們的 A/AAAA 記錄,然後聯繫他們以獲取ietf.org. 如果他們需要進行 DNSSEC 驗證,他們將查詢 DNSKEY 並驗證 DNSKEY 是否與org區域中的 DS 相對應,並且A記錄ietf.org是否具有使用 DNSKEY 簽名的相應 RRSIG(我在簡化,大多數時候您擁有 KSK 和ZSK,這只是創建了一個額外的簽名級別,但在概念上並沒有改變上面的內容)。

域名伺服器域名本身可能未啟用 DNSSEC,這不會影響ietf.org. 然而,它具有實際的安全後果,因為這意味著它們的域名可能被劫持,因此從理論上講,您可以將流量轉移到會給出其他回复的流氓域名伺服器,並可能導致 DNS 或 DNSSEC 驗證失敗。這些流氓名稱伺服器最多只能將 SERVFAIL 錯誤強制發送給所有驗證解析器,因為它們將無法提供由與父區域中的 DS 記錄匹配的密鑰簽名的簽名。所以這裡的 DNSSEC,即使域名伺服器域本身不使用 DNSSEC,仍然允許確保不能插入其他/錯誤記錄。

當然,在一個完美的世界中,一切都可以或應該啟用 DNSSEC,但這仍然是雞與蛋的問題:根區域.使用root-servers.net域中的名稱伺服器,因此您無法同時保護這兩個部分。事實上,root-servers.net直到今天還沒有啟用 DNSSEC……這對所有域的解析或 DNSSEC 驗證幾乎沒有影響。

簡而言之,DNSSEC 不起作用,因為權威域名伺服器會直接提供“子”域名伺服器的 IP 地址,這部分就像之前的 DNSSEC 一樣工作。DNSSEC 之所以有效,是因為從廣義上講,每個區域都發布用於在區域中的每條記錄上生成簽名的密鑰,並且在父區域中發布密鑰的散列以創建直到根信任錨的信任鏈。

引用自:https://serverfault.com/questions/896645