
DNSSEC 驗證和驗證區域數據,目的是確保無論 DNS 結果如何都是真實的。
即使 DNS 解析器驗證權威名稱伺服器已發送未經篡改的正確數據,我們如何防止 DNS 解析器向 DNS 用戶端發送被篡改的 DNS 回應?
如果 DNS 解析器不支援 DNSSEC,它是否仍然可以將 DNS 查詢傳送到為其區域啟用了 DNSSEC 的權威名稱伺服器?
謝謝
答案1
DNSSEC 有用嗎?
在您開始描述您想要捍衛的內容之前,這是無法回答的(無論您在該句子中使用什麼詞代替“DNSSEC”)。
當您擁有想要防禦的風險/漏洞/威脅清單時,您可以找出存在哪些解決方案,並確定每個解決方案的有用程度或無用程度。
DNSSEC
對於某些 DNS 問題很有用,但不是所有問題。它給自己帶來了新的問題(簽章和金鑰的持續維護),但也帶來了新的功能(NXDOMAIN
如果經過 DNSSEC 正確驗證,則對以下所有內容進行積極的快取)。
即使 DNS 解析器驗證權威名稱伺服器已發送未篡改的正確數據,我們如何防止 DNS 解析器向 DNS 用戶端發送被篡改的 DNS 回應?
這與今天沒有什麼不同:如果您使用任何公共 DNS 解析器(8.8.8.8
僅舉1.1.1.1
幾9.9.9.9
例),您當然完全面臨著它向您發送垃圾資料的風險。這是一個權衡。 DoH/DoT 在這裡不會解決任何問題,因為它只會保護您和此解析器之間的內容傳輸,而不是內容本身。只要您正在查詢的網域受 DNSSEC 保護,哪些內容就會受到 DNSSEC「保護」(這是您在問題中忘記的一部分,這實際上使 DNSSEC 變得困難:網域所有者必須啟用它)和DNS 解析器必須使用新簽章並進行驗證;如果這兩個變數方程式的一部分不存在,則 DNSSEC 沒有用,因為它無法運作)
因此,問題更圍繞著:使用哪個遞歸名稱伺服器以及它應該在哪裡運行。當然,為了最大程度地控制,您希望解析器在您的電腦上運行。它仍然可以使用外部資源和 DNS 解析器,但最終的 DNSSEC 驗證應該發生在您的名稱伺服器上,而不是其他伺服器上。當然,這比僅僅依賴任何其他資源為您「免費」完成所有 DNSSEC 工作需要更多的工作。
如果 DNS 解析器不支援 DNSSEC,它是否仍然可以將 DNS 查詢傳送到為其區域設定了 DNSSEC 的權威名稱伺服器?
是的。想要取得 DNSSEC 資料的解析器必須在其請求中切換「DO」標誌。
來自dig
文件:
+[no]dnssec
This option requests that DNSSEC records be sent by setting the DNSSEC OK (DO) bit in the OPT record in the additional section of the query.
你可以這樣看:
$ dig +dnssec example.com
; <<>> DiG 9.16.18 <<>> +dnssec example.com
;; global options: +cmd
;; Sending:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40492
;; flags: rd ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
^^
或來自 RFC 4035 的 §3.2.1:
3.2.1. DO 位元
安全意識遞歸名稱伺服器的解析器端在傳送請求時必須設定 DO 位,無論名稱伺服器端收到的發起請求中 DO 位的狀態為何。如果未設定發起查詢中的 DO 位,則名稱伺服器端必須從回應中剝離任何驗證 DNSSEC RR,但不得剝離發起查詢明確要求的任何 DNSSEC RR 類型。
如果 DNS 用戶端(遞歸解析器)執行此操作,並且正在查詢的權威名稱伺服器啟用了 DNSSEC(因此RRSIG
//區域中的記錄類型),則解析器將取得這些記錄,然後可以進行 DNSSEC 驗證。NSEC
NSEC3
當您(DNS 存根/客戶端不是解析器)查詢遞歸解析器時,您可以選擇使用該CD
標誌,定義如下:
+[no]cdflag
This option sets [or does not set] the CD (checking disabled) bit in the query. This requests the server to not perform DNSSEC validation of responses.
(注意可能的雙重否定)。
如果用戶端不使用CD
,則 DNSSEC 驗證不會被停用,因此它已啟用,並且刪除伺服器將提供最終答案(如果為記錄啟用了 DNSSEC 並且驗證成功),或者NXDOMAIN
如果 DNSSEC成功,則回覆驗證失敗。AD
如果是這樣的話,該標誌
答案2
- 理想情況下,您可以在客戶端上進行本機驗證(現在雖然不是很常見,但也絕非聞所未聞),或者依靠安全的網路路徑來彌合從客戶端到受信任的驗證解析器之間的差距。
此安全網路路徑可能意味著 DNS-over-TLS、DNS-over-HTTPS、DNSCrypt 或某種程度上的本地網路(信任等級較弱,但對於攻擊場景的子集仍然有用)。 - 是的