排解 Active Directory 的 Kerberos 加密類型問題

本頁面說明如何識別用戶端透過 SMB 或 NFS 存取 NetApp Volumes 時使用的 Kerberos 加密類型 (enctype),並搭配 Active Directory Kerberos。

SMB 和 NFS 不會協商 enctype。金鑰分配中心 (KDC) 會在核發 Kerberos 票證時選擇 enctype。

  • SMB 通常會使用服務主體名稱 (SPN) cifs/<server_fqdn>

  • 使用 Kerberos 的 NFS 通常會使用 SPN nfs/<server_fqdn>

只有在用戶端、KDC 和 NetApp Volumes 電腦帳戶共用至少一個支援的 enctype 時,驗證才會成功。如要進一步瞭解 NetApp Volumes 如何宣傳 enctype,以及網域加入時間,請參閱「Active Directory 政策如何加入網域」。

事前準備

開始前,請先完成下列先決條件。

  1. 確認儲存空間集區已附加 Active Directory 政策,且網域加入作業已順利完成。詳情請參閱「測試 Active Directory 政策連線」。

  2. 確認用戶端、網域控制器和 NetApp Volumes 可以透過網路彼此連線。詳情請參閱「測試與 Google Cloud NetApp Volumes 的連線」。

  3. 在 Active Directory 中找出 NetApp Volumes 電腦帳戶名稱:

    • Standard、Premium 和 Extreme 集區可有多個帳戶。

    • Flex 統合式和 Flex 檔案型集區會為每個集區使用一個帳戶。

如要瞭解各服務層級的帳戶行為,請參閱「Active Directory 政策如何加入網域」。

在 NetApp Volumes 電腦帳戶中查詢加密類型

檔案伺服器的 Kerberos 加密類型會儲存在 Active Directory 的伺服器電腦帳戶中,位於 msDS-SupportedEncryptionTypes 屬性。這項屬性表示 NetApp Volumes 電腦帳戶向 KDC 宣傳的 enctype。

查詢電腦帳戶

如要在已安裝 Active Directory 模組的已加入網域電腦上查詢:

 Get-ADComputer -Identity "COMPUTER_ACCOUNT_NAME" -Properties msDS-SupportedEncryptionTypes |
  Select-Object Name, msDS-SupportedEncryptionTypes

COMPUTER_ACCOUNT_NAME 替換為 NetApp Volumes 電腦帳戶名稱。

如要使用 LDAP 查詢:

 ([adsisearcher]"(&(objectClass=computer)(name=COMPUTER_ACCOUNT_NAME))").FindOne().
  Properties["msdssupportedencryptiontypes"]

解碼位元遮罩

msDS-SupportedEncryptionTypes 是在 MS-KILE 中定義的位元遮罩。常見值如下:

  • 0x1:DES-CBC-CRC

  • 0x2:DES-CBC-MD5

  • 0x4:RC4-HMAC

  • 0x8:AES128-CTS-HMAC-SHA1-96

  • 0x10:AES256-CTS-HMAC-SHA1-96

如果屬性空白或為 0,KDC 會為該帳戶套用自己的預設值。詳情請參閱「如何選取 enctype」。

如何選取 enctype

Enctype 的選擇取決於三個因素的交集。KDC 會選取最強大的通用 enctype。

  1. 用戶端:在 Kerberos AS-REQTGS-REQ 中宣傳支援的加密類型。

  2. KDC:套用網域控制器設定和作業系統預設值。

  3. 目標帳戶:透過 NetApp Volumes 電腦帳戶的 msDS-SupportedEncryptionTypes 屬性,限制 KDC 可用於該服務票證的加密類型。

KDC 會執行下列動作:

  1. 計算用戶端、KDC 和目標帳戶加密類型的交集。

  2. 選取該組中最強的 enctype。

  3. 核發以該 enctype 加密的票證,以及可使用不同 (通常是較強) enctype 的工作階段金鑰。

msDS-SupportedEncryptionTypes 為空白或零時

如果帳戶未設定值,KDC 會在網域控制站上使用 DefaultDomainSupportedEncTypes。這項設定是由網域管理員控管。詳情請參閱 Microsoft 說明文件,瞭解如何選取 Kerberos 加密類型

票證加密與工作階段金鑰加密

您可以區分每個票證的兩種加密類型:

  • 票證加密:在 klist 輸出內容中顯示為 KerbTicket Encryption Type

  • 對稱金鑰加密:在 klist 輸出內容中顯示為 Session Key Type

視設定和 AES-SK 位元 (0x400) 而定,票證可以 RC4 加密,工作階段金鑰則為 AES。

如果用戶端、KDC 和 NetApp Volumes 電腦帳戶未共用至少一個 enctype,驗證就會失敗。常見指標包括 KDC 事件 16 或 27,以及用戶端 Security-Kerberos 事件 4。

限制 NetApp Volumes 宣傳的加密類型

NetApp Volumes 會透過 Active Directory 政策,控管在 Active Directory 電腦帳戶上宣傳的加密類型。

根據預設,NetApp Volumes 會通告 DES 和 RC4-HMAC。在 Active Directory 政策中選取「Enable AES Encryption for Active Directory authentication」(啟用 AES 加密機制來進行 Active Directory 驗證) 時,NetApp Volumes 也會宣傳 AES-128 和 AES-256。如要進一步瞭解欄位說明,請參閱「建立 Active Directory 政策」。

如要確認集區在加入網域後宣傳的內容,請在 NetApp Volumes 電腦帳戶上查詢 msDS-SupportedEncryptionTypes。詳情請參閱「在 NetApp Volumes 電腦帳戶上查詢 enctype」。

在用戶端上查詢 enctype

如要檢查用戶端使用的 Kerberos 加密類型,請為用戶端作業系統執行指令。

Windows 用戶端

如要在驗證後查看 Kerberos 加密類型,請執行下列操作:

 klist

如果是 SMB 工作階段,請找出 Server 值為 cifs/<server_fqdn> 的票證。 如果是使用 Kerberos 的 NFS,請尋找 nfs/<server_fqdn>

下列欄位會顯示加密類型:

  • KerbTicket Encryption Type:票證 enctype

  • Session Key Type:工作階段金鑰加密類型

如要查看特定登入工作階段,請按照下列步驟操作:

 klist tickets -li 0x3e7

Linux 或 macOS 用戶端

如要顯示快取票證及其加密類型,請按照下列步驟操作:

 klist -e

如要查看 keytab 內容,請執行下列操作:

 klist -kte /path/to/keytab

在網域控制站事件中查詢加密類型

如果網域控制站已啟用 Kerberos 稽核,事件 4769 (要求 Kerberos 服務票證) 會記錄服務票證使用的加密類型。依服務名稱 cifs/... 篩選 SMB,或依服務名稱 nfs/... 篩選 NFS。

事件 4769 中的相關欄位包括:

  • Ticket Encryption Type0x12 為 AES256,0x11 為 AES128,0x17 為 RC4-HMAC

  • SessionKeyEncryptionType:工作階段金鑰的加密類型

  • ServiceSupportedEncryptionTypes:服務帳戶宣傳的加密類型

  • ClientAdvertizedEncryptionTypes:用戶端傳送的加密類型

  • Service Name:服務名稱,例如 cifs/...nfs/...

  • Client Address:用戶端位址

事件 4768 (Kerberos 驗證服務) 會記錄授權票證的 enctype 使用情形。

以下 XML 篩選器是安全性記錄中 RC4 服務票證的範例:

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
      *[EventData[Data[@Name='TicketEncryptionType'] and (Data='0x17')]]
    </Select>
  </Query>
</QueryList>

如要匯總網域控制器事件記錄中一段時間內的 enctype 使用情形,網域管理員可以使用 Get-KerbEncryptionUsage.ps1

Active Directory 管理員會在用戶端和網域控制站上設定 enctype 限制。NetApp Volumes 說明文件未涵蓋這些設定。 詳情請參閱下列資源:

後續步驟