Kerberos

Windows Admin Center 基於資源的委派停止使用 KRB_AP_ERR_MODIFIED 錯誤

  • December 3, 2021

我們的 WAC 安裝 SSO(通過基於資源的委派)上週因未知原因停止工作,這讓我發瘋。嘗試連接到 WebUI 中的託管客戶端(其中任何一個)時,WAC 伺服器上會記錄以下事件:

A Kerberos error message was received:
on logon session 
Client Time: 
Server Time: 19:6:29.0000 11/29/2021 Z
Error Code: 0x29 KRB_AP_ERR_MODIFIED
Extended Error: 0xc00000bb KLIN(0)
Client Realm: 
Client Name: 
Server Realm: DOMAIN.COM
Server Name: HTTP/accounting-02-m.domain.com
Target Name: HTTP/accounting-02-m.domain.com@DOMAIN.COM
Error Text: 
File: onecore\ds\security\protocols\kerberos\client2\kerbtick.cxx
Line: 128d
Error Data is in record data.

相應的錯誤 0x29 也會記錄在目標 KDC 上。

對 WAC WebUI 的訪問適用於使用者,而遠端 PowerShell 對 WAC 之外的目標電腦也適用於相同的使用者。當 WAC 中的目標電腦被拒絕訪問並提示憑據時,手動輸入我的憑據允許訪問。直接在 WAC 伺服器上的 WebUI 允許按預期使用它通過 SSO 訪問目標機器。這排除了權限問題,似乎指向雙跳委託問題。

網路流量擷取顯示了我自己訪問 WAC$ 機器的 TGS-REQ/REP,然後我看到目標機器服務(即 HTTP/accounting-02-m.domain.com)的 TGS-REQ 和 KRB-選項“約束委託:真”,後跟 KRB5KRB_AP_ERR_MODIFIED 的 KRB-ERROR…

我檢查了一個範例機器的委託,它看起來符合預期:

Path Owner                    Access  
---- -----                     ------ 
    BUILTIN\Administrators   DOMAIN\WAC$ Allow

我確保安全通道在伺服器/目標和 DC 之間工作(無論如何我都重置了機器密碼)

PS C:\> Test-ComputerSecureChannel
true

我檢查 SPN 問題:

PS C:\> setspn -L accounting-02-m Registered ServicePrincipalNames for CN=ACCOUNTING-02-M,OU=Workstations,OU=Domain Computers,DC=domain,DC=com:
WSMAN/ACCOUNTING-02-M
WSMAN/ACCOUNTING-02-M.domain.com
TERMSRV/ACCOUNTING-02-M
TERMSRV/ACCOUNTING-02-M.domain.com
RestrictedKrbHost/ACCOUNTING-02-M
HOST/ACCOUNTING-02-M
RestrictedKrbHost/ACCOUNTING-02-M.domain.com
HOST/ACCOUNTING-02-M.domain.com

PS C:\> setspn -Q HTTP/accounting-02-m
Checking domain DC=domain,DC=com

No such SPN found.

我相信 SPN 映射應該注意 HOST->HTTP 等價性:

host=alerter,appmgmt,cisvc,clipsrv,browser,dhcp,dnscache,replicator,eventlog,eventsystem,policyagent,oakley,dmserver,dns,mcsvc,fax,msiserver,ias,messenger,netlogon,netman,netdde,netddedsm,nmagent,plugplay,protectedstorage,rasman,rpclocator,rpc,rpcss,remoteaccess,rsvp,samss,scardsvr,scesrv,seclogon,scm,dcom,cifs,spooler,snmp,schedule,tapisrv,trksvr,trkwks,ups,time,wins,www,http,w3svc,iisadmin

我用來klist purge -li 0x3e7在任何測試之前清除機器票。

WAC 伺服器是 Win2019,服務作為“網路服務”執行,KDC 是 Win2019,客戶端是 Win10 和 Win2012R2/2016/2019 的混合。所有涉及的機器(KDC、伺服器、目標)上的時間增量最大為 1 秒。我們有一個單一的域森林。

由於在 KDC 上記錄了此錯誤,我懷疑 KB5008380:

During TGS processing, the KDC was unable to verify the signature on the PAC from WAC$. This indicates the PAC was modified.

但是在域中的任何地方都找不到系統資料庫項(也找不到安裝在 KDC 上的更新)。

根據我對 Kerberos RFC 的理解,校驗和由於傳輸中的票證更改而失敗(不太可能),或者由於安全通道問題或 SPN 配置錯誤,服務無法解密票證,但所有這些看起來都已正確配置。

我在這裡想念什麼?什麼壞了?

好吧,事實證明 KB5007206 是罪魁禍首,即使最初的註釋沒有提到潛在的問題……我沒有冒著 OOB 更新的風險,所以在 DC 上解除安裝 KB5007206 解決了這個問題。

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