Active Directory 林恢复 - 恢复多域林中的单个域

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2 和 2012

在某些情况下,可能仅需要恢复具有多个域的林中的单个域,而不需要恢复完整的林。 本主题介绍了恢复单个域时的注意事项和可能的策略。

与林恢复过程类似,从域中的备份还原一个或多个 DC,并执行剩余 DC 的元数据清理。 然后,通过加入新成员、安装 AD DS 角色并提升这些角色来添加新域控制器。 还可以使用 DC 克隆从媒体 安装任务。

单域恢复为重建全局编录 (GC) 服务器带来了独特的挑战。 例如,如果域的第一个域控制器 (DC) 是从一周前创建的备份还原的,则林中所有其他 GC 中该域的数据将比还原的 DC 数据要新。 若要重新建立 GC 数据一致性,有两个选项可用:

  • 从林中的所有 GC(恢复的域中的 GC 除外)中取消托管并重新托管恢复的域分区,同时并完成后,重新托管林中的所有 DC。 此外,请确保不会重载剩余的 DC。 在大型环境中,协调此活动可能非常复杂。

  • 按照林恢复过程来恢复域,然后从其他域中的 GC 中删除延迟对象。

以下各部分提供了每个选项的一般注意事项。 对于不同的 Active Directory 环境,进行恢复所需完成的一整套步骤会有所不同。

重新创建组托管服务帐户 (gMSA)

警告

如果林中的 KDS 根密钥对象遭到入侵,则应在多个域中重新创建 gMSA 帐户,即使域本身未遭到入侵。

此问题和解决方法在如何从黄金 gMSA 攻击中恢复

必须阻止攻击者使用从被盗域控制器备份中获取的数据,以使用 gMSA 计算凭据进行身份验证。 使用公开的 KDS 根密钥对象的林域中的所有 gMSA 替换为使用新 KDS 根密钥对象的 gMSA 帐户。 组托管服务帐户入门中介绍了此过程和几个重要更改:

  • 禁用所有现有的 gMSA 帐户,将 userAccountControl 属性设置为 4098(工作站类型 + 禁用)。

  • 根据创建密钥分发服务 KDS 根密钥中所述,创建新的 KDS 根密钥对象。

    重要

    在同一域控制器上重启 Microsoft 密钥分发服务 (KDSSVC)。 这是必需的,以便 KDSSVC 选取新对象。 创建新的 gMSA 帐户以替换同一域控制器上的现有帐户。 此时,必须将现有 gMSA 帐户编辑为唯一服务主体名称,才能分配给活动 gMSA。

  • 将成员服务器重新加入域后,请使用新帐户更新使用 gMSA 的组件。

若要确保新的 gMSA 使用新的 KDS 根密钥对象,请检查二进制数据 msDS-ManagedPasswordId 具有匹配 KDS 根键对象的 GUID 的属性。 该对象将具有 CN=e3779ca1-bfa2-9f7b-b9a5-20cf44f2f8d6 的 CN。

gmsa cn value

gMSA 的 msDS-ManagedPasswordId 应具有 GUID 起始偏移量 24,其中 GUID 的前三部分采用字节交换顺序(红色、绿色、蓝色),其余部分为正常字节顺序(橙色):

guid with color coding

如果使用新的 KDS 根密钥创建了第一个 gMSA,则所有后续的 gMSA 创建都将正常。

清理

  • 删除使用旧 KDS 根密钥对象的旧 gMSA 帐户。
  • 删除旧的 KDS 根密钥对象。

重新托管所有 GC

警告

所有域的默认域管理员用户帐户(“RID-500”)的登录名和密码必须可用,并且启用了帐户,以防出现阻止访问 GC 进行登录的问题。

注意

若要允许在没有 GC 验证的情况下登录,还可以将 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\IgnoreGCFailures 值配置为 1。

如果未知,请为每个域中的另一个帐户使用 whoami /all 来获取域 ID,或运行以下命令来标识 RID 500。\$DomainSID = (Get-ADDomain).DomainSID.Value\$ObjSID = New-ObjectSystem.Security.Principal.SecurityIdentifier("\$DomainSID-500")\$RID500 = \$ObjSID.Translate([System.Security.Principal.NTAccount])\$RID500.Value

可以使用 repadmin /unhostrepadmin /rehost 命令(repadmin /experthelp 的一部分)重新托管所有 DC。 你将在未恢复的每个域中的每个 GC 上运行 repadmin 命令。 需要确保所有 GC 不再保留恢复的域的副本。 为此,请先从林的所有未恢复域的所有域控制器取消托管域分区。 由于 GCS 不再包含分区,因此可以重新托管它。 重新托管时,请考虑林的站点和复制结构。 例如,在重新托管该站点的其他 DC 之前,请完成每个站点的一个 DC 的重新托管。

对于每个域只有几个域控制器的小型组织,此选项可能十分有利。 所有 GC 都可以在周五晚上重建,并且如果必要,可以在周一早上之前完成所有只读域分区的复制。 但是,如果需要恢复覆盖全球站点的大型域,则在其他域的所有 GC 上重新托管只读域分区会显著影响操作,并可能需要停机。

检查和删除延迟对象

在林中所有其他域的 GC 上,为恢复的域的只读分区检查和删除潜在的延迟对象。

延迟对象清理的源必须是恢复的域中的 DC。 若要确保源 DC 中没有任何域分区的延迟对象,可以删除全局编录。

对于那些无法承担与重新托管域命名上下文相关的停机风险的大型组织,删除延迟对象是有利的。

有关详细信息,请参阅使用 repadmin 删除延迟对象

后续步骤