我们的 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/[email protected]
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-OPTION 为“constrained-delegation:True”,后跟 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 秒。我们有一个域林。
我怀疑是 KB5008380 造成的,因为 KDC 上记录了以下错误:
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 配置错误导致服务无法解密票证,但所有这些看起来都配置正确。
我遗漏了什么?什么地方坏了?
答案1
好吧,事实证明 KB5007206 是罪魁祸首,尽管最初的说明中没有提到潜在的问题......我不想冒 OOB 更新的风险,因此在 DC 上卸载 KB5007206 解决了这个问题。