Applies ToWindows Server 2008 Datacenter ESU Windows Server 2008 Standard ESU Windows Server 2008 Enterprise ESU Windows 7 Enterprise ESU Windows 7 Professional ESU Windows 7 Ultimate ESU Windows Server 2008 R2 Enterprise ESU Windows Server 2008 R2 Standard ESU Windows Server 2008 R2 Datacenter ESU Windows Embedded Standard 7 ESU Windows Embedded POSReady 7 ESU Windows Server 2012 Windows Embedded 8 Standard Windows 8.1 Windows RT 8.1 Windows Server 2012 R2 Windows Embedded 8.1 Industry Enterprise Windows Embedded 8.1 Industry Pro Windows 10 Windows 10, version 1607, all editions Windows Server 2016, all editions Win 10 Ent LTSC 2019 Win 10 IoT Ent LTSC 2019 Windows 10 IoT Core LTSC Windows Server 2019 Windows 10 Enterprise Multi-Session, version 20H2 Windows 10 Enterprise and Education, version 20H2 Windows 10 IoT Enterprise, version 20H2 Windows 10 on Surface Hub Windows 10, version 21H1, all editions Windows 10, version 21H2, all editions Windows 11 version 21H2, all editions Windows 11 version 22H2, all editions Windows Server 2022

注意: 更新于 08/13/2024;请参阅 2024 年 8 月 13 日行为

摘要

2022 年 10 月 11 日及之后发布的 Windows 更新包含 CVE-2022-38042 引入的其他保护。 这些保护故意阻止域加入操作重用目标域中的现有计算机帐户,除非:

  • 尝试操作的用户是现有帐户的创建者。

  • 计算机由域管理员的成员创建。

  • 要重用的计算机帐户的所有者是“域控制器:允许在加入域期间重复使用计算机帐户”的成员。 组策略设置。 此设置要求在所有成员计算机和域控制器上安装 2023 年 3 月 14 日或之后发布的 Windows 更新。

2023 年 3 月 14 日和 2023 年 9 月 12 日及之后发布的更新将为 Windows Server 2012 R2 及更高版本以及所有受支持的客户端上的受影响客户提供其他选项。 有关详细信息,请参阅 2022 年 10 月 11 日行为采取操作 部分。

注意 本文之前引用了 NetJoinLegacyAccountReuse 注册表项。 自 2024 年 8 月 13 日起,已删除此注册表项及其在本文中的引用。 

2022 年 10 月 11 日之前的行为

在安装 2022 年 10 月 11 日或更高版本的累积更新之前,客户端计算机会查询 Active Directory 中具有相同名称的现有帐户。 此查询在域加入和计算机帐户预配期间发生。 如果存在此类帐户,客户端将自动尝试重复使用它。

备注 如果尝试域加入操作的用户没有相应的写入权限,则重用尝试将失败。 但是,如果用户具有足够的权限,则域加入将成功。

有两种使用各自的默认行为和标志加入域的方案,如下所示:

2022 年 10 月 11 日行为 

在客户端计算机上安装 2022 年 10 月 11 日或更高版本的 Windows 累积更新后,在加入域期间,客户端将在尝试重用现有计算机帐户之前执行其他安全检查。 算法:

  1. 如果尝试操作的用户是现有帐户的创建者,则允许帐户重用尝试。

  2. 如果帐户是由域管理员的成员创建的,将允许帐户重用尝试。

这些额外的安全检查是在尝试加入计算机之前完成的。 如果检查成功,则加入操作的其余部分将像以前一样受到 Active Directory 权限的约束。

此更改不会影响新帐户。

注意 安装 2022 年 10 月 11 日或更高版本的 Windows 累积更新后,使用计算机帐户重用的域加入可能会有意失败,并出现以下错误:

0xaac (2732 错误) :NERR_AccountReuseBlockedByPolicy:“Active Directory 中存在同名帐户。 安全策略阻止了重新使用该帐户。”

如果是这样,则帐户受到新行为的有意保护。

发生上述错误后,将触发事件 ID 4101,并将问题记录在 c:\windows\debug\netsetup.log 中。 请按照“采取措施”中的以下步骤了解故障并解决问题。

2023 年 3 月 14 日行为

在 2023 年 3 月 14 日或之后发布的 Windows 更新中,我们对安全强化进行了一些更改。 这些更改包括我们在 2022 年 10 月 11 日所做的所有更改。

首先,我们扩展了从此强化中免除的组的范围。 除了域管理员之外,企业管理员和内置管理员组现在无需进行所有权检查。

其次,我们实现了新的组策略设置。 管理员可以使用它来指定受信任的计算机帐户所有者的允许列表。 如果存在以下情况之一,则计算机帐户将绕过安全检查:

  • 该帐户由在“域控制器:允许计算机帐户在域加入期间重复使用”组策略中指定为受信任所有者的用户拥有。

  • 该帐户由用户拥有,该用户是“域控制器:允许在加入域期间重复使用计算机帐户”组策略中指定为受信任所有者的组的成员。

若要使用此新的组策略,域控制器和成员计算机必须始终安装 2023 年 3 月 14 日或更高版本的更新。 你们中的一些人可能有用于自动创建计算机帐户的特定帐户。 如果这些帐户不受滥用,并且你信任他们创建计算机帐户,则可以免除这些帐户。 2022 年 10 月 11 日 Windows 更新所缓解的原始漏洞仍可保护你。

2023 年 9 月 12 日行为

在 2023 年 9 月 12 日或之后发布的 Windows 更新中,我们对安全强化进行了一些其他更改。 这些更改包括我们在 2022 年 10 月 11 日所做的所有更改,以及 2023 年 3 月 14 日以来的更改。

我们解决了使用智能卡身份验证的域加入失败(无论策略设置如何)的问题。 为了解决此问题,我们将剩余的安全检查移回域控制器。 因此,在 2023 年 9 月安全更新之后,客户端计算机对域控制器进行经过身份验证的 SAMRPC 调用,以执行与重用计算机帐户相关的安全验证检查。

但是,这可能会导致在设置了以下策略的环境中域加入失败: 网络访问:限制允许对 SAM 进行远程调用的客户端。  有关如何解决此问题的信息,请参阅“已知问题”部分。

2024 年 8 月 13 日行为

在 2024 年 8 月 13 日或之后发布的 Windows 更新中,我们解决了允许列表策略的所有已知兼容性问题。 我们还删除了对 NetJoinLegacyAccountReuse 密钥的支持。 无论密钥设置如何,强化行为都将保留。 下面的“采取操作”部分列出了用于添加豁免的适当方法。 

采取操作

在域控制器上使用组策略配置新的允许列表策略,并删除任何旧的客户端解决方法。 然后,执行以下操作:

  1. 必须在所有成员计算机和域控制器上安装 2023 年 9 月 12 日或更高版本的更新。 

  2. 在适用于所有域控制器的新组策略或现有组策略中,配置以下步骤中的设置。

  3. “计算机配置\策略\Windows 设置\安全设置\本地策略\安全选项”下, 双击“ 域控制器:允许计算机帐户在域加入期间重复使用”。

  4. 选择“定义此策略设置,<编辑安全性...>

  5. 使用对象选取器将受信任的计算机帐户创建者和所有者的用户或组添加到 “允许” 权限。 (作为最佳做法,强烈建议使用组作为 permissions。) 不要添加执行域加入的用户帐户。

    警告: 将策略的成员身份限制为受信任的用户和服务帐户。 请勿将经过身份验证的用户、每个人或其他大型组添加到此策略。 相反,请将特定的受信任用户和服务帐户添加到组,并将这些组添加到策略。

  6. 等待组策略刷新间隔或在所有域控制器上运行 gpupdate /force

  7. 验证 HKLM\System\CCS\Control\SAM – “ComputerAccountReuseAllowList”注册表项是否填充了所需的 SDDL。 请勿手动编辑注册表。

  8. 尝试加入安装了 2023 年 9 月 12 日或更高版本更新的计算机。 确保策略中列出的其中一个帐户拥有计算机帐户。 如果域加入失败,请检查 c:\windows\debug\netsetup.log。

如果仍需要备用解决方法,请查看计算机帐户预配工作流,并了解是否需要进行更改。 

  1. 使用在目标域中创建计算机帐户的同一帐户执行联接操作。

  2. 如果现有帐户已过时 (未使用) ,请先将其删除,然后再尝试再次加入域。

  3. 重命名计算机并使用尚不存在的其他帐户加入。

  4. 如果现有帐户归受信任的安全主体所有,并且管理员想要重复使用该帐户,请按照“采取操作”部分中的指导安装 2023 年 9 月或更高版本的 Windows 更新并配置允许列表。

非解决方案

  • 不要将服务帐户或预配帐户添加到域管理员安全组。

  • 请勿在尝试重新定义此类帐户的所有权时手动编辑计算机帐户上的安全描述符,除非删除了以前的所有者帐户。 虽然编辑所有者将使新检查成功,但计算机帐户可能会保留原始所有者的相同潜在风险和不需要的权限,除非明确查看和删除。

新建事件日志

事件日志

系统  

事件源

Netjoin

事件 ID

4100

事件类型

信息

事件文本

“在加入域期间,联系的域控制器在 Active Directory 中发现了同名的现有计算机帐户。

允许尝试重新使用此帐户。

已搜索域控制器:<域控制器名称>现有计算机帐户 DN:<计算机帐户> 的 DN 路径。 有关详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2202145。

事件日志

SYSTEM

事件源

Netjoin

事件 ID

4101

事件类型

错误

事件文本

在域加入期间,联系的域控制器在 Active Directory 中发现了同名的现有计算机帐户。 出于安全原因,阻止了重新使用此帐户的尝试。 已搜索域控制器:现有计算机帐户 DN:错误代码 <> 错误代码。 有关详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2202145。

默认情况下,调试日志记录可用, (无需在所有客户端计算机上启用 C:\Windows\Debug\netsetup.log 中的任何详细日志记录) 。

出于安全原因阻止重复使用帐户时生成的调试日志记录示例:

NetpGetComputerObjectDn: Crack results: (Account already exists) DN = CN=Computer2,CN=Computers,DC=contoso,DC=com
NetpGetADObjectOwnerAttributes: Looking up attributes for machine account: CN=Computer2,CN=Computers,DC=contoso,DC=com
NetpCheckIfAccountShouldBeReused: Account was created through joinpriv and does not belong to this user. Blocking re-use of account.
NetpCheckIfAccountShouldBeReused:fReuseAllowed: FALSE, NetStatus:0x0
NetpModifyComputerObjectInDs: Account exists and re-use is blocked by policy. Error: 0xaac
NetpProvisionComputerAccount: LDAP creation failed: 0xaac
ldap_unbind status: 0x0
NetpJoinCreatePackagePart: status:0xaac.
NetpJoinDomainOnDs: Function exits with status of: 0xaac
NetpJoinDomainOnDs: status of disconnecting from '\\DC1.contoso.com': 0x0
NetpResetIDNEncoding: DnsDisableIdnEncoding(RESETALL) on 'contoso.com' returned 0x0
NetpJoinDomainOnDs: NetpResetIDNEncoding on 'contoso.com': 0x0
NetpDoDomainJoin: status: 0xaac

2023 年 3 月新增事件 

此更新在域控制器上的 SYSTEM 日志中添加 4 (4) 新事件,如下所示:

事件级别

信息

事件 ID

16995

日志

SYSTEM

事件源

目录-服务-SAM

事件文本

安全帐户管理器使用指定的安全描述符来验证计算机帐户在加入域期间重复使用的尝试。

SDDL 值:<SDDL 字符串>

此允许列表是通过 Active Directory 中的组策略配置的。

有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=2202145。

事件级别

错误

事件 ID

16996

日志

SYSTEM

事件源

目录-服务-SAM

事件文本

包含计算机帐户重用允许列表的安全描述符用于验证客户端请求域加入的格式不正确。

SDDL 值:<SDDL 字符串>

此允许列表是通过 Active Directory 中的组策略配置的。

若要更正此问题,管理员需要更新策略,以将此值设置为有效的安全描述符或将其禁用。

有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=2202145。

事件级别

错误

事件 ID

16997

日志

SYSTEM

事件源

目录-服务-SAM

事件文本

安全帐户管理员发现了一个计算机帐户,该帐户似乎是孤立的,没有现有所有者。

计算机帐户:S-1-5-xxx

计算机帐户所有者:S-1-5-xxx

有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=2202145。

事件级别

警告

事件 ID

16998

日志

SYSTEM

事件源

目录-服务-SAM

事件文本

安全帐户管理员拒绝了在加入域期间重新使用计算机帐户的客户端请求。

计算机帐户和客户端标识不符合安全验证检查要求。

客户帐户:S-1-5-xxx

计算机帐户:S-1-5-xxx

计算机帐户所有者:S-1-5-xxx

检查此事件的记录数据,了解 NT 错误代码。

有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=2202145。

如果需要,netsetup.log可以提供详细信息。

已知问题

问题 1

安装 2023 年 9 月 12 日或更高版本的更新后,在设置了以下策略的环境中,域加入可能会失败:网络访问 - 限制允许对 SAM 进行远程调用的客户端 - Windows 安全 |Microsoft Learn。 这是因为客户端计算机现在对域控制器进行经过身份验证的 SAMRPC 调用,以执行与重用计算机帐户相关的安全验证检查。     这是意料之中的。 若要适应此更改,管理员应将域控制器的 SAMRPC 策略保留为默认设置,或者在 SDDL 设置中显式包含执行域加入的用户组,以授予他们权限。 

发生此问题的netsetup.log示例:

09/18/2023 13:37:15:379 NetpDsValidateComputerAccountReuseAttempt: returning NtStatus: c0000022, NetStatus: 5
09/18/2023 13:37:15:379 NetpDsValidateComputerAccountReuseAttempt: returning Result: FALSE
09/18/2023 13:37:15:379 NetpCheckIfAccountShouldBeReused: Active Directory Policy check with SAM_DOMAIN_JOIN_POLICY_LEVEL_V2 returned NetStatus:0x5.
09/18/2023 13:37:15:379 NetpCheckIfAccountShouldBeReused:fReuseAllowed: FALSE, NetStatus:0x0
09/18/2023 13:37:15:379 NetpModifyComputerObjectInDs: Account exists and re-use is blocked by policy. Error: 0xaac 
09/18/2023 13:37:15:379 NetpProvisionComputerAccount: LDAP creation failed: 0xaac

问题 2

如果删除了计算机所有者帐户,并且尝试重复使用计算机帐户,则会在系统事件日志中记录事件 16997。 如果发生这种情况,则可以将所有权重新分配给另一个帐户或组。

问题 3

如果只有客户端更新了 2023 年 3 月 14 日或更高版本,则 Active Directory 策略检查将返回0x32 STATUS_NOT_SUPPORTED。 以前在 11 月修补程序中实现的检查将适用,如下所示:

NetpDsValidateComputerAccountReuseAttempt: returning NtStatus: c00000bb, NetStatus: 32 
NetpDsValidateComputerAccountReuseAttempt: returning Result: FALSE
NetpCheckIfAccountShouldBeReused: Active Directory Policy check returned NetStatus:0x32.
NetpCheckIfAccountShouldBeReused:fReuseAllowed: FALSE, NetStatus:0x0
NetpModifyComputerObjectInDs: Account exists and re-use is blocked by policy. Error: 0xaac 
NetpProvisionComputerAccount: LDAP creation failed: 0xaac

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。