我们的 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-选项“约束委托:真”,后跟 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 配置错误,服务无法解密票证,但所有这些看起来都已正确配置。
我在这里想念什么?什么坏了?