本文中的信息作为参考,有助于排查安全通道损坏时的问题。
若要确定安全通道问题的原因,请收集以下信息。
获取客户端设备信息
在受影响的设备上,检查系统事件查看器日志(事件 ID 5823 - 源:NETLOGON)中的密码更改事件是否成功。 这有助于找出系统上次更改密码的时间,并将其用作引用值(如果存在 - 请考虑它可能被较新的事件覆盖):
Log name: System
Source: NETLOGON
Description: The system successfully changed its password on the domain controller \\DCName.domain.com. This event is logged when the password for the computer account is changed by the system. It is logged on the computer that changed the password.
如果启用了 Netlogon 日志记录,则还应看到具有上述事件 ID 5823 中密码更改的证据的行为:
08/22 07:32:23 [SESSION] [4128] CONTOSO: NlChangePassword: Doing it.
08/22 07:32:23 [SESSION] [4128] CONTOSO: NlChangePassword: Successful response from DC \\DC1-CONT.contoso.com
08/22 07:32:24 [SESSION] [4128] CONTOSO: NlChangePassword: Flag password changed in LsaSecret
08/22 07:32:24 [SESSION] [4128] CONTOSO: NlChangePassword: Flag password updated on DC
08/22 07:32:24 [MISC] [4128] Eventlog: 5823 (4) "\\DC1-CONT.contoso.com"
08/22 07:32:24 [MISC] [4128] NlWksScavenger: Can be called again in # days (0x5265c00) --> The number of days here will match the "Maximum machine account password age" value defined on the computer changing the password.
比较 Active Directory 中计算机帐户 pwdLastSet
(Active Directory 已知计算机上次更改密码的时间)与本地安全机构(LSA)机密值 cupdtime
(上次根据客户端计算机或服务器知识更改密码的时间)在本地计算机上进行比较:
获取受影响计算机或服务器上的 LSA 机密值
按照以下步骤从注册表中查找 cupdtime
值。
注意
默认情况下,只有“系统”帐户有权访问注册表项 HKLM\SECURITY
,因此有两个选项:
- 使用 PsExec 工具在系统上下文中运行以下步骤。
- 为所需的用户授予对注册表项
HKLM\SECURITY
的完全权限(请记得在不再需要时将其删除):
运行
reg query "HKLM\SECURITY\Policy\Secrets\$MACHINE.ACC\CupdTime"
。在此示例中,你会收到值
26A38C1AA0F4DA01
。 必须先使用 w32tm 转换该值,然后才能理解该值。 十六进制值需要转换为十进制值,但需要还原从最后一个位开始的每个位对的顺序。- 原始值
26A38C1AA0F4DA01
转换为01DAF4A01A8CA326
。 - 将十六进制值转换为十进制值(可以在程序员模式下使用计算器)。 结果为
133688107438220070
。
- 原始值
运行下面的命令:
w32tm /ntte 133688107438220070
你会收到以下输出:
该值为
154731 14:32:23.8220070 - 8/22/2024 7:32:23 AM
。
获取 Active Directory pwdLastSet 值
打开Active Directory 用户和计算机控制台,导航到计算机对象所属的组织单位,并查找
pwdLastSet
属性以查看值:从 Windows 命令提示符运行以下命令。 替换要进行故障排除的实际受影响的计算机的可分辨名称并将其导出到文件(如果有相当数量的域控制器(DC)更容易检查信息):
repadmin /showobjmeta * "CN=ComputerName,OU=Computers,DC=domain,DC=com" > c:\temp\ComputerName_Metadata.txt
或者,从 Windows PowerShell 提示符运行以下命令(需要 Active Directory 模块):
Get-ADComputer '<ComputerName>' -properties PasswordLastSet | Format-List
打开该文件并查找属性的值
pwdLastSet
(你将从环境中可用的所有 DC 获取对象的元数据),并对其进行比较。 在良好的方案中,属性中的数据应该在所有 DC 中保持一致。 你将在输出中看到其他属性的信息。 仅关注所需属性。 这是一个输出示例:上述信息提供单个 DC 的值(通过控制台连接到的 DC 或运行命令时)。 请考虑从 Active Directory 收集受影响计算机对象的元数据,以便可以确认该值在环境中的所有 DC 中是一致的。