共用方式為


DNSSEC 概觀 (預覽)

本文提供域名系統安全性延伸模組 (DNSSEC) 的概觀,並包含 DNSSEC 術語簡介。 說明 DNSSEC 區域簽署的優點,並提供範例來檢視 DNSSEC 相關資源記錄。 當您準備好簽署 Azure 公用 DNS 區域時,請參閱下列操作指南:

注意

DNSSEC 區域簽署目前為預覽狀態。
請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

何謂 DNSSEC?

DNSSEC 是一套延伸模組,可藉由讓 DNS 回應驗證為正版,將安全性新增至功能變數名稱系統 (DNS) 通訊協定。 DNSSEC 提供原始授權、資料完整性與已驗證的存在否認。 透過 DNSSEC,DNS 通訊協定比較不會受到特定攻擊類型的影響,特別是 DNS 詐騙攻擊。

核心 DNSSEC 延伸模組是在下列批注要求中指定(RFC):

  • RFC 4033:「DNS 安全性簡介和需求」
  • RFC 4034:「DNS 安全性延伸模組的資源記錄」
  • RFC 4035:「DNS 安全性延伸模組的通訊協定修改」

如需 DNSSEC RFC 的摘要,請參閱 RFC9364:D NS 安全性延伸模組 (DNSSEC)。

DNSSEC 的運作方式

DNS 區域會使用稱為區域簽署的程式,使用 DNSSEC 來保護。 使用 DNSSEC 簽署區域會新增驗證支援,而不需要變更 DNS 查詢和回應的基本機制。 若要使用 DNSSEC 簽署區域,區域的主要授權 DNS 伺服器必須支援 DNSSEC。

資源記錄簽章 (RRSIG) 和其他密碼編譯記錄會在簽署時新增至區域。 下圖會顯示區域 contoso.com 中區域簽署之前和之後的 DNS 資源記錄。

此圖顯示 RRSIG 記錄在使用 DNSSEC 簽署時如何新增至區域。

DNS 回應的 DNSSEC 驗證 發生方式是使用這些數位簽名與未中斷 的信任鏈結。

注意

DNSSEC 相關資源記錄不會顯示在 Azure 入口網站 中。 如需詳細資訊,請參閱 檢視 DNSSEC 相關資源記錄

為什麼要使用 DNSSEC 簽署區域?

需要使用 DNSSEC 簽署區域,才能符合某些安全性指導方針,例如 SC-20:安全名稱/位址解析服務。

DNS 回應的 DNSSEC 驗證可以防止常見的 DNS 劫持攻擊類型,也稱為 DNS 重新導向。 當用戶端裝置使用不正確的(詐騙)DNS 回應重新導向至惡意伺服器時,就會發生 DNS 劫持。 DNS 快取中毒是用來詐騙 DNS 回應的常見方法。

下圖顯示 DNS 劫持運作方式的範例。

顯示 DNS 劫持運作方式的圖表。

一般 DNS 解析

  1. 用戶端裝置會將 contoso.com 的 DNS 查詢傳送至 DNS 伺服器。
  2. DNS 伺服器會以 DNS 資源記錄回應 contoso.com
  3. 用戶端裝置會要求來自 contoso.com 的回應。
  4. contoso.com 應用程式或 Web 伺服器會傳回客戶端的回應。

DNS 劫持

  1. 用戶端裝置會將 contoso.com 的 DNS 查詢傳送至被劫持的 DNS 伺服器。
  2. DNS 伺服器會以無效的 DNS 資源記錄回應 contoso.com
  3. 用戶端裝置會要求來自惡意伺服器 contoso.com回應。
  4. 惡意伺服器會傳回對客戶端的詐騙回應。

詐騙的 DNS 資源記錄類型取決於 DNS 劫持攻擊的類型。 MX 記錄可能會詐騙以重新導向用戶端電子郵件,或詐騙 A 記錄可能會將用戶端傳送至惡意網頁伺服器。

DNSSEC 的運作方式是透過對 DNS 回應執行驗證來防止 DNS 劫持。 在此處所示的 DNS 劫持案例中,如果 contoso.com 網域已使用 DNSSEC 簽署,用戶端裝置可以拒絕未經驗證的 DNS 回應。 若要拒絕未驗證的 DNS 回應,用戶端裝置必須針對 contoso.com 強制執行 DNSSEC 驗證

DNSSEC 也包含下一個安全 3 (NSEC3) 以防止區域列舉。 區域列舉也稱為「區域行走」是一項攻擊,攻擊者會在區域中建立所有名稱的清單,包括子區域。

使用 DNSSEC 簽署區域之前,請務必瞭解 DNSSEC 的運作方式。 當您準備好簽署區域時,請參閱 如何使用 DNSSEC 簽署 Azure 公用 DNS 區域。

DNSSEC 驗證

如果 DNS 伺服器是 DNSSEC 感知,它可以將 DNS 查詢中的 DNSSEC OK (DO) 旗標設定為 的值 1。 此值會告知回應的 DNS 伺服器包含 DNSSEC 相關資源記錄與回應。 這些 DNSSEC 記錄是用來驗證 DNS 回應正版的資源記錄簽章 (RRSIG) 記錄。

遞迴 (非權威) DNS 伺服器會使用 信任錨點 (DNSKEY) 在 RRSIG 記錄上執行 DNSSEC 驗證。 伺服器會使用 DNSKEY 來解密 RRSIG 記錄中的數位簽名(以及其他 DNSSEC 相關記錄),然後計算和比較哈希值。 如果哈希值相同,它會提供對 DNS 用戶端的回復,其中包含其要求的 DNS 數據,例如主機位址 (A) 記錄。 請參閱下圖:

顯示 DNSSEC 驗證運作方式的圖表。

如果哈希值不相同,遞歸 DNS 伺服器會以 SERVFAIL 訊息回復。 如此一來,已安裝有效信任錨點的 DNSSEC 解析(或轉送)DNS 伺服器,即可防範遞歸伺服器與授權伺服器之間路徑中的 DNS 劫持。 此保護不需要 DNS 用戶端裝置為 DNSSEC 感知或強制執行 DNS 回應驗證,前提是本機 (最後躍點) 遞歸 DNS 伺服器本身是安全而無法劫持。

Windows 10 和 Windows 11 用戶端裝置未 驗證安全性感知存根解析程式。 這些客戶端裝置不會執行驗證,但可以使用組策略強制執行 DNSSEC 驗證。 NRPT 可用來建立和強制執行命名空間型 DNSSEC 驗證原則。

信任錨點和 DNSSEC 驗證

注意

預設的 Azure 提供的解析程式不會執行 DNSSEC 回應驗證。 如果您要為 DNSSEC 驗證設定自己的遞歸 DNS 伺服器,或針對驗證問題進行疑難解答,本節中的資訊會很有説明。

信任錨點會根據 DNS 命名空間階層運作。 遞歸 DNS 伺服器可以有任意數目的信任錨點,或沒有任何信任錨點。 單一子 DNS 區域或任何父區域都可以新增信任錨點。 如果遞歸 DNS 伺服器具有根 (.) 信任錨點,則它可以在任何 DNS 區域上執行 DNSSEC 驗證。 如需詳細資訊,請參閱 根區域運算符資訊

DNSSEC 驗證程式可與信任錨點搭配運作,如下所示:

  • 如果遞歸 DNS 伺服器沒有區域或區域父階層命名空間的 DNSSEC 信任錨點,則不會對該區域執行 DNSSEC 驗證。
  • 如果遞歸 DNS 伺服器具有區域父命名空間的 DNSSEC 信任錨點,而且收到子區域的查詢,則會檢查子區域的 DS 記錄是否存在於父區域中。
    • 如果找到 DS 記錄,遞歸 DNS 伺服器會執行 DNSSEC 驗證。
    • 如果遞歸 DNS 伺服器判斷父區域沒有子區域的 DS 記錄,則會假設子區域不安全,而且不會執行 DNSSEC 驗證。
  • 如果 DNS 回應中涉及多個遞歸 DNS 伺服器(包括轉寄站),則每部伺服器都必須能夠在回應上執行 DNSSEC 驗證,如此一來,就會有未破解的信任鏈結。
  • 已停用 DNSSEC 驗證或未感知 DNSSEC 的遞歸伺服器不會執行驗證。

信任鏈結

當傳送 DNS 查詢回應的所有 DNS 伺服器都能夠驗證在傳輸期間未修改回應時,就會發生信任鏈結。 若要讓 DNSSEC 驗證端對端運作,必須取消信任鏈結。 此信任鏈結同時適用於授權和非授權伺服器(遞歸) 伺服器。

授權伺服器

授權 DNS 伺服器會使用委派簽署者 (DS) 記錄來維護信任鏈結。 DS 記錄可用來驗證 DNS 階層中子區域的真實性。

  • 為了讓 DNSSEC 驗證發生在已簽署的區域,簽署區域的父代也必須簽署。 父區域也必須有子區域的 DS 記錄。
  • 在驗證程序期間,會查詢區域的父系以取得 DS 記錄。 如果 DS 記錄不存在,或父系中的 DS 記錄數據不符合子區域中的 DNSKEY 數據,則信任鏈結會中斷,且驗證失敗。

遞歸伺服器

遞歸 DNS 伺服器(也稱為解析或快取 DNS 伺服器)會使用 DNSSEC 信任錨點來維護信任鏈結。

  • 信任錨點是 DNSKEY 記錄,或包含 DNSKEY 記錄哈希 的 DS 記錄。 當區域簽署時,DNSKEY 記錄會在授權伺服器上建立,並在區域未簽署時從區域移除。
  • 信任錨點必須手動安裝在遞歸 DNS 伺服器上。
  • 如果父區域存在信任錨點,遞歸伺服器可以驗證階層命名空間中的所有子區域。 這包括轉送的查詢。 若要支援所有 DNSSEC 簽署 DNS 區域的 DNSSEC 驗證,您可以安裝根區域 (.) 區域的信任錨點。

金鑰變換

DNSSEC 簽署區域中的區域簽署金鑰 (ZSK) 會定期由 Azure 自動變換(取代)。 您不應該需要取代金鑰簽署金鑰 (KSK),但您可以連絡Microsoft支持人員,以取得此選項。 取代 KSK 需要您也會更新父區域中的 DS 記錄。

區域簽署演算法

區域是使用橢圓曲線數位簽名演算法 (ECDSAP256SHA256) 簽署的 DNSSEC。

下表提供 DNSSEC 相關記錄的簡短描述。 如需詳細資訊,請參閱 RFC 4034:DNS 安全性延伸模組 的資源記錄和 RFC 7344:自動化 DNSSEC 委派信任維護

錄製 描述
資源記錄簽章 (RRSIG) 用來保存簽章的 DNSSEC 資源記錄類型,其涵蓋特定名稱和類型的一組 DNS 記錄。
DNSKEY 用來儲存公鑰的 DNSSEC 資源記錄類型。
委派簽署者 (DS) 用來保護委派的 DNSSEC 資源記錄類型。
下一個安全 (NSEC) 用來證明 DNS 名稱不存在的 DNSSEC 資源記錄類型。
下一個安全 3 (NSEC3) NSEC3 資源記錄,提供哈希、已驗證的拒絕 DNS 資源記錄集存在。
下一個安全 3 個參數 (NSEC3PARAM) 指定 NSEC3 記錄的參數。
子委派簽署者 (CDS) 此記錄是選擇性的。 如果有的話,子區域可以使用 CDS 記錄來指定父區域中 DS 記錄的所需內容。
子 DNSKEY (CDNSKEY) 此記錄是選擇性的。 如果 CDNSKEY 記錄存在於子區域中,它可以用來從 DNSKEY 記錄產生 DS 記錄。

DNSSEC 相關記錄不會顯示在 Azure 入口網站 中。 若要檢視 DNSSEC 相關記錄,請使用 Resolve-DnsName 或 dig.exe 等命令行工具。 這些工具可使用 Cloud Shell,或在裝置上安裝時在本機使用。 請務必使用 -dnssecok Resolve-DnsName 中的 選項或 +dnssec dig.exe 中的 選項,在您的查詢中設定 DO 旗標。

重要

請勿使用nslookup.exe命令行工具來查詢 DNSSEC 相關記錄。 nslookup.exe工具會使用非 DNSSEC 感知的內部 DNS 用戶端。

請參閱下列範例:

PS C:\> resolve-dnsname server1.contoso.com -dnssecok

Name                                      Type   TTL   Section    IPAddress
----                                      ----   ---   -------    ---------
server1.contoso.com                        A     3600  Answer     203.0.113.1

Name        : server1.contoso.com
QueryType   : RRSIG
TTL         : 3600
Section     : Answer
TypeCovered : A
Algorithm   : 13
LabelCount  : 3
OriginalTtl : 3600
Expiration  : 9/20/2024 11:25:54 PM
Signed      : 9/18/2024 9:25:54 PM
Signer      : contoso.com
Signature   : {193, 20, 122, 196…}
C:\>dig server1.contoso.com +dnssec

; <<>> DiG 9.9.2-P1 <<>> server1.contoso.com +dnssec
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61065
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 512
;; QUESTION SECTION:
;server1.contoso.com.       IN      A

;; ANSWER SECTION:
server1.contoso.com. 3600   IN      A       203.0.113.1
server1.contoso.com. 3600   IN      RRSIG   A 13 3 3600 20240920232359 20240918212359 11530 contoso.com. GmxeQhNk1nJZiep7nuCS2qmOQ+Ffs78Z2eoOgIYP3j417yqwS1DasfA5 e1UZ4HuujDk2G6GIbs0ji3RiM9ZpGQ==

;; Query time: 153 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Sep 19 15:23:45 2024
;; MSG SIZE  rcvd: 179
PS C:\> resolve-dnsname contoso.com -Type dnskey -dnssecok

Name                                 Type   TTL   Section    Flags  Protocol Algorithm      Key
----                                 ----   ---   -------    -----  -------- ---------      ---
contoso.com                          DNSKEY 3600  Answer     256    DNSSEC   13             {115, 117, 214,
                                                                                                165…}
contoso.com                          DNSKEY 3600  Answer     256    DNSSEC   13             {149, 166, 55, 78…}
contoso.com                          DNSKEY 3600  Answer     257    DNSSEC   13             {45, 176, 217, 2…}

Name        : contoso.com
QueryType   : RRSIG
TTL         : 3600
Section     : Answer
TypeCovered : DNSKEY
Algorithm   : 13
LabelCount  : 2
OriginalTtl : 3600
Expiration  : 11/17/2024 9:00:15 PM
Signed      : 9/18/2024 9:00:15 PM
Signer      : contoso.com
Signature   : {241, 147, 134, 121…}
C:\>dig contoso.com dnskey

; <<>> DiG 9.9.2-P1 <<>> contoso.com dnskey
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46254
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;contoso.com.               IN      DNSKEY

;; ANSWER SECTION:
contoso.com.        3600    IN      DNSKEY  256 3 13 laY3Toc/VTyjupgp/+WgD05N+euB6Qe1iaM/253k7bkaA0Dx+gSDhbH2 5wXTt+uLQgPljL9OusKTneLdhU+1iA==
contoso.com.        3600    IN      DNSKEY  257 3 13 LbDZAtjG8E9Ftih+LC8CqQrSZIJFFJMtP6hmN3qBRqLbtAj4JWtr2cVE ufXM5Pd/yW+Ca36augQDucd5n4SgTg==
contoso.com.        3600    IN      DNSKEY  256 3 13 c3XWpTqZ0q9IO+YqMEtOBHZSzGGeyFKq0+3xzs6tifvD1rey1Obhrkz4 DJlEIxy2m84VsG1Ij9VYdtGxxeVHIQ==

;; Query time: 182 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Sep 19 16:35:10 2024
;; MSG SIZE  rcvd: 284

DNSSEC 術語

此清單可協助瞭解討論 DNSSEC 時所使用的一些常見詞彙。 另請參閱: DNSSEC 相關資源記錄

詞彙 描述
已驗證的數據 (AD) 位 數據位,指出回應中包含的所有數據都已由 DNS 伺服器根據該伺服器的原則驗證回應的回應和授權單位區段中。
驗證鏈結 已簽署和已驗證的 DNS 記錄鏈結,從預先設定的信任錨點延伸至 DNS 樹狀結構中的某些子區域。
DNS 擴充功能 (EDNS0) 包含擴充 DNS 標頭資訊的 DNS 記錄,例如 DO 位 和 UDP 封包大小上限。
DNS 安全性延伸模組 (DNSSEC) DNS 服務的延伸模組,提供簽署機制,以及安全地解析 DNS 數據的機制。
DNSSEC OK (DO) 位 DNS 要求的 EDNS0 部分位,表示用戶端為 DNSSEC 感知。
DNSSEC 驗證 DNSSEC 驗證是使用公用密碼編譯金鑰來驗證 DNS 資料的來源和完整性的程式。
安全島 沒有驗證鏈結的已簽署區域,其委派父區域。
金鑰簽署金鑰 (KSK) 對應至私鑰的驗證金鑰,用來簽署指定區域的一或多個其他簽署密鑰。 一般而言,對應至 KSK 的私鑰會簽署區域簽署金鑰 (ZSK),而此金鑰會接著有對應的私鑰來簽署其他區域數據。 本機原則可能會要求經常變更 ZSK,而 KSK 可以有較長的有效期間,以提供更穩定且安全的進入點進入區域。 將驗證金鑰指定為 KSK 純粹是一個操作問題:DNSSEC 驗證不會區分 KSK 與其他 DNSSEC 驗證金鑰。 您可以使用單一金鑰作為 KSK 和 ZSK。
非驗證安全性感知存根解析程式 安全性感知存根解析程式,信任一或多個安全性感知 DNS 伺服器代表其執行 DNSSEC 驗證。
安全進入點 (SEP) 金鑰 DNSKEY RRSet 內的公鑰子集。 SEP 金鑰可用來產生 DS RR,或散發給使用金鑰作為信任錨點的解析程式。
安全性感知 DNS 伺服器 實作 RFC 4033 [5]、4034 [6]和 4035 [7] 中所定義的 DNS 伺服器。 特別是,安全性感知 DNS 伺服器是接收 DNS 查詢、傳送 DNS 回應、支援 EDNS0 [3] 訊息大小擴充功能和 DO 位的實體,並支援 DNSSEC 記錄類型和訊息標頭位。
已簽署的區域 記錄簽署為 RFC 4035 [7] 第 2 節所定義的區域。 簽署的區域可以包含 DNSKEY、NSEC、NSEC3、NSEC3PARAM、RRSIG 和 DS 資源記錄。 這些資源記錄可讓解析程式驗證 DNS 數據。
信任錨點 與特定區域相關聯的預先設定公鑰。 信任錨點可讓 DNS 解析程式驗證該區域的已簽署 DNSSEC 資源記錄,以及建置子區域的驗證鏈結。
未簽署的區域 任何尚未簽署為 RFC 4035 [7] 第 2 節所定義的 DNS 區域。
區域簽署 區域簽署是建立 DNSSEC 相關資源記錄並新增至區域的程式,使其與 DNSSEC 驗證相容。
區域取消簽署 區域取消簽署是從區域移除 DNSSEC 相關資源記錄的程式,將它還原至未簽署的狀態。
區域簽署金鑰 (ZSK) 對應至用來簽署區域的私鑰的驗證金鑰。 一般而言,區域簽署密鑰是相同 DNSKEY RRSet 的一部分,其對應的私鑰會簽署此 DNSKEY RRSet,但區域簽署密鑰會用於稍微不同的用途,而且與其他方式的金鑰簽署密鑰不同,例如有效存留期。 將驗證金鑰指定為區域簽署金鑰純粹是操作問題;DNSSEC 驗證不會區分區域簽署金鑰和其他 DNSSEC 驗證金鑰。 您可以使用單一金鑰作為金鑰簽署金鑰和區域簽署金鑰。

下一步