Y. *_*ark 6 domain kerberos smartcard windows-server-2012 windows-10
我的 Windows“以域为中心”的公司突然决定从 Windows 7 切换到 Windows 10,我的工作就是让他们准备好的图像通过我们的基于智能卡/令牌的身份验证系统加入我们的域。这是 Windows 7 的一个问题,但是,通过构建证书信任链很容易解决。我不负责在 Windows 7 上完全设置它,所以我不确定整个 Kerberos 进程的内部工作原理。
然而,对于 Windows 10,这一直是一场噩梦。我已经将我的整个过程从 7 镜像到 10,包括所有丢失的证书(我们使用 netdom 通过命令行添加,使用 /securepasswordprompt),但是无论我做什么,我的计算机都不会通过智能卡加入域。他们使用用户名/密码(没有 2FA)添加没有问题,但是使用智能卡,我收到以下错误:
The KDC certificate for the domain controller does not contain the KDC Extended Key Usage (EKU): 1.3.6.1.5.2.3.5: Error Code 0xc0000320. The domain administrator will need to obtain a certificate with the KDC EKU for the domain controller to resolve this error. When using Windows Server Certificate Services create a certificated based on the Kerberos Authentication Template.
我的理解是,这个特定的 OID 是用于服务器身份验证的,我添加到计算机帐户的根证书和 CA 证书都具有分配给它们的正确用途。我直接访问了域上的 CA 服务器并获取了根证书以及我没有的 CRL,但错误仍然相同。今天,我做了更多的阅读并启用了kerberos调试注册表项,再次尝试添加后,DC返回KDC_ERR_ETYPE_NOTSUPP.
这让我调查了两台机器之间使用的加密方法,Windows 7 启用了 RC4、AES128/256,而 Windows 10 仅启用了 AES128/256 和“未来类型”。自然地,我打开了 RC4,所以两台机器之间会有一致性,我发现自己在事件日志中出现了一个新错误:KDC_ERR_PREAUTH_REQUIRED- 这让我相信加密方法现在可以相互配合使用。
在线阅读,我发现此KDC_ERR_PREAUTH_REQUIRED错误通常只是警告或“误报”,可以忽略(一旦机器在域中)。在加入域之前,此错误表示用户输入了错误的密码(我确信我的智能卡使用了正确的 PIN),或者计算机和 DC 之间的加密密钥配置错误。我也在Kerberos pre-authentication requiredAD 中禁用了我的帐户,但是当我尝试添加机器时,它出错了smartcard logon is required and was not used. 我用 Wireshark 对此进行了测试,并且在AS_REQ -> KDC_ERR_PREAUTH_REQ -> AS_REQ -> AS_REP.
毕竟,我还没有能够吐出不同的错误,所以我实际上被卡住了。我试图将 Windows 10 机器上的时间更改为比 DC 早几个小时,并且 DC 正确报告说由于时间偏差它无法加入,我预计会发生这种情况,所以我知道有某种通信正在进行在。我可以通过它的 FQDN nslookup/ping DC,但我无法仅使用它的名称来 ping 它。有没有其他方法可以用来调查这个问题,或者以前有没有人遇到过这种情况?
更新:更改PREAUTH_FAILED为PREAUTH_REQUIRED.
更新2:
在将 Windows 7 机器加入域时执行 Wireshark 捕获后,我看到以下初始模式结果(客户端为 cli,服务器为 srv):
(cli)AS-REQ
(srv)AS-REP
(cli)TGS-REQ
(srv)TGS-REP
(cli)TGS-REQ
(srv)TGS-REP
Run Code Online (Sandbox Code Playgroud)
上面的日志中有更多内容,但这是第一部分不同。相比之下,在 Windows 10 机器上,我看到:
(cli)AS-REQ
(srv)KRB Error: KRB5KDC_ERR_PREAUTH_REQUIRED
(cli)AS-REQ
(srv)AS-REP
Run Code Online (Sandbox Code Playgroud)
...这就是日志停止的地方,事件日志中出现故障。我读了一篇文章,讨论了修改 ,Security Packages下的注册表项HKLM\SYSTEM\CurrentControlSet\Control\LSA,以拥有kerberos msv1_0 schannel wdigest tspkg pku2u,这就是我的 Windows 7 机器所拥有的。Windows 10 机器只有两个引号,如"". 不过,添加这个似乎没有帮助。
我们遇到了同样的问题,并通过使用所需的 KDC EKU 重新颁发域控制器证书来解决该问题。我们的域控制器证书现在有四个 EKU:客户端、服务器、KDC 和智能卡。我们还必须针对域控制器证书调整 SAN。
\n\n如果您不想这样做,您可能需要尝试在客户端上禁用“需要严格的 KDC 验证”设置,看看是否有帮助。这似乎确实是 Windows 7 中行为变化的一个不太详细的记录,或者至少它与组策略设置电子表格/文档中记录该设置的方式不一致。
\n\nhttps://technet.microsoft.com/en-us/library/hh831747.aspx
\n\n“严格的 KDC 验证是一组更具限制性的标准,可确保满足以下所有条件:
\n\n域控制器拥有所提供证书的私钥。
对于加入域的系统,颁发 KDC\xe2\x80\x99s 证书的证书颁发机构 (CA) 位于 NTAuth 存储中。
对于未加入域的系统,KDC\xe2\x80\x99s 证书的根 CA 位于第三方根 CA 或智能卡可信根存储中。
KDC\xe2\x80\x99s 证书具有 KDC EKU。
KDC 证书\xe2\x80\x99s subjectAltName (SAN) 扩展的 DNSName 字段与域的 DNS 名称匹配。
对于未加入域的智能卡登录,需要严格的 KDC 验证。
\n\n要禁用此默认行为,请禁用组策略设置需要严格的 KDC 验证。”
\n\n更多信息:
\n\nKerberos 身份验证的新增功能
\n https://technet.microsoft.com/en-us/library/hh831747(v=ws.11).aspx
严格 KDC 验证默认更改
\n\n“对于未加入域的智能卡登录,需要严格的 KDC 验证。
\n\n“要禁用此默认行为,请禁用组策略设置需要严格的 KDC 验证。”
\n| 归档时间: |
|
| 查看次数: |
7861 次 |
| 最近记录: |