Active Directory 复制错误 5 - 访问被拒绝

本文介绍 AD 操作失败并出现错误 5:访问被拒绝的情况的症状、原因和解决步骤。

适用于: Windows Server 2012 R2
原始 KB 编号: 2002013

症状

  1. DCDIAG 报告 Active Directory 复制测试失败,错误状态代码 (5) : 访问被拒绝

    Testing server: <site name><destination dc name>  
    Starting test: Replications  
    Replications Check  
    [Replications Check,<destination DC name] A recent replication attempt failed:  
    From <source DC> to <destination DC>  
    Naming Context: <directory partition DN path>  
    The replication generated an error (5):  
    Access is denied.  
    The failure occurred at <date> <time>.  
    The last success occurred at <date> <time>.
    3 failures have occurred since the last success.
    
  2. DCDIAG 报告 DsBindWithSpnEx () 失败并出现错误 5。

  3. REPADMIN.EXE 报告上次复制尝试失败,状态为 5。

    REPADMIN 通常引用状态 5 的命令包括但不限于:

    • REPADMIN /KCC
    • REPADMIN /REPLICATE
    • REPADMIN /REPLSUM
    • REPADMIN /SHOWREPL
    • REPADMIN /SHOWREPS
    • REPADMIN /SYNCALL

    显示从 CONTOSO-DC2 到 CONTOSO-DC1 的入站复制失败并拒绝复制访问错误的示例输出REPADMIN /SHOWREPS如下所示:

    Default-First-Site-Name\CONTOSO-DC1  
    DSA Options: IS_GC  
    Site Options: (none)  
    DSA object GUID: b6dc8589-7e00-4a5d-b688-045aef63ec01  
    DSA invocationID: b6dc8589-7e00-4a5d-b688-045aef63ec01  
    
    ==== INBOUND NEIGHBORS ======================================  
    
    DC=contoso, DC=com  
    Default-First-Site-Name\CONTOSO-DC2 via RPC  
    DSA object GUID: 74fbe06c-932c-46b5-831b-af9e31f496b2  
    Last attempt @ <date> <time> failed, result 5 (0x5):  
    Access is denied.  
    <#> consecutive failure(s).  
    Last success @ <date> <time>.
    
  4. 状态为 5 的 NTDS KCC、NTDS 常规或 Microsoft-Windows-ActiveDirectory_DomainService事件记录在目录服务事件日志中。

    通常引用 8524 状态的 Active Directory 事件包括但不限于:

    事件 Source 事件字符串
    NTDS 常规 1655 Active Directory 尝试与以下全局目录通信,但尝试失败。
    NTDS KCC 1925 尝试为以下可写目录分区建立复制链接失败。
    NTDS KCC 1926 尝试建立指向具有以下参数的只读目录分区的复制链接失败。
  5. Active Directory 站点和服务中的 “立即复制 ”命令返回 拒绝访问

    右键单击源 DC 中的连接对象,现在选择 复制 失败, 并拒绝 Access。 屏幕上的错误消息文本和屏幕截图如下所示:

  6. 对话框标题文本: 立即复制

    对话框消息文本:

    尝试将命名上下文 <%directory 分区名称%>从域控制器<源 DC 同步到域控制器<目标 DC>> 期间发生以下错误:访问被拒绝

    操作不会继续

    对话框中的按钮: 确定

    “立即复制”对话框中显示“拒绝访问”错误。

原因

错误 5: 访问被拒绝 的有效根本原因包括:

  1. 注册表中的 RestrictRemoteClients 设置的值为 2
  2. 不会向企业域控制器组或触发即时复制的管理员授予“从网络访问此计算机”用户权限。
  3. 目标 DC 注册表中的 CrashOnAuditFail 设置的值为 2
  4. 目标 DC 使用的密钥分发中心 (KDC) 与源 DC 之间存在时间差。 时差超过了默认域策略中定义的 Kerberos 允许的最大时间偏差。
  5. 源 DC 和目标 DC 之间存在 SMB 签名不匹配。
  6. 源 DC 与目标 DC 之间存在 LM 兼容性 不匹配。
  7. 由于简单的复制延迟或复制失败,服务主体名称未注册或不存在。
  8. UDP 格式的 Kerberos 数据包正被网络基础结构设备(如路由器和交换机)分段。
  9. 源或目标 DC 上的安全通道无效。
  10. 信任链中的信任关系已损坏或无效。
  11. 注册表部分中的 KDCNames 设置 HKLM\System\CurrentControlSet\Control\LSA\Kerberos\Domains 错误地包含本地 Active Directory 域名。
  12. 某些网络适配器具有 大型发送卸载 功能。
  13. 在源或目标 DC 上使用微型防火墙网络适配器筛选器驱动程序的防病毒软件。

Active Directory 错误和事件(如此 KB 的症状部分引用的事件)也可能失败,并出现错误 8453,并出现类似的错误字符串 复制访问被拒绝。 以下根本原因可能导致 AD 操作失败并出现 8453: 复制访问被拒绝 ,但不会导致失败,错误 5: 复制被拒绝

  1. 复制 目录更改 权限不允许 NC 头。
  2. 开始复制的安全主体不是已被授予 复制目录更改的组的成员。
  3. 属性中缺少标志, UserAccountControl 包括 SERVER_TRUST_ACCOUNTTRUSTED_FOR_DELEGATION
  4. RODC 升级为域,而无需先运行 ADPREP /RODCPREP

解决方案

AD 复制失败并出现错误 5,有多种根本原因。 最初使用以下工具解决问题:

  • DCDIAG
  • DCDIAG /TEST:CheckSecurityError
  • 公开常见问题的 NETDIAG

如果仍未解决,请按最常见、最复杂、最不中断的顺序将已知原因列表更改为最不常见、最复杂、最具破坏性的顺序。

运行 DCDIAG、DCDIAG /TEST:CheckSecurityError 和 NETDIAG

泛型 DCDIAG 运行多个测试。

DCDIAG /TEST:CheckSecurityErrors编写用于执行特定测试 (包括 SPN 注册检查) 来排查 Active Directory 操作复制失败的问题:

  • 错误 5: 访问被拒绝
  • 错误 8453: 复制访问被拒绝

DCDIAG /TEST:CheckSecurityErrors 不作为 DCDIAG 默认执行的一部分运行。

  1. 在目标 DC 上运行 DCDIAG
  2. 运行 DCDIAG /TEST:CheckSecurityError
  3. 运行 NETDIAG
  4. 解决 DCDIAG 和 NETDIAG 标识的任何故障。 重试以前失败的复制操作。 如果仍然失败,继续 走很长的路

漫长的路要走

  1. RestrictRemoteClients 值设置为 2

    此注册表值RestrictRemoteClients设置为 中的 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\RPC0x2 值。

    若要解决该问题,请执行下列操作:

    1. 禁用强制实施此设置的策略。

    2. RestrictRemoteClients删除注册表设置并重新启动。

      有关此设置的详细信息,请参阅 RestrictRemoteClients 注册表项已启用

      注册表 RestrictRemoteClients 值由以下组策略设置设置:

      计算机配置>管理模板>系统>远程过程调用 - 对未经身份验证的 RPC 客户端的限制

      如果启用策略设置并将其设置为“身份验证”,则应用注册表值0x2,且无例外

      此选项仅允许经过身份验证的 RPC 客户端连接到应用策略设置的计算机上运行的 RPC 服务器。 它不允许出现异常。 如果选择此选项,则系统无法使用 RPC 接收远程匿名呼叫。 此设置绝不应应用于域控制器。

  2. 选中 “从网络权限访问此计算机 ”。

    在 Windows 的默认安装中,默认域控制器策略链接到域控制器 OU 容器。 它向以下安全组授予 从网络用户访问此计算机 的权限:

    本地策略 默认域控制器策略
    管理员 管理员
    经过身份验证的用户 经过身份验证的用户
    所有人 所有人
    企业域控制器 企业域控制器
    [Windows 2000 之前的兼容访问] [Windows 2000 之前的兼容访问]

    如果 Active Directory 操作失败并出现错误 5: 访问被拒绝,请验证:

    • 在默认域控制器策略中,已向上述列表中的安全组授予 从网络权限访问此计算机 的权限。
    • 域控制器计算机帐户位于域控制器 OU 中。
    • 默认域控制器策略链接到域控制器 OU 或托管计算机帐户的备用 OU。
    • 组策略正在当前记录错误 5 的目标域控制器上应用。
    • 拒绝从网络用户权限访问此计算机 尚未启用或未引用失败的直接组或嵌套组。
    • 策略优先级、阻止继承、WMI 筛选或类似操作不会阻止策略设置应用于 DC 角色计算机。

    可以使用 RSOP 验证策略设置。MSC 是 GPRESULT /Z 首选工具,因为它更准确。

    注意

    本地策略优先于站点、域和 OU 中定义的策略。

    注意

    管理员一度在默认域控制器策略中直接从网络中删除企业域控制器和每个人 删除这两者是致命的。 没有理由从此权限中删除 企业域控制器 ,因为只有 DC 是此组的成员。

  3. CrashOnAuditFail = 2

    当 = 值为 2HKLM\System\CurrentControlSet\Control\LSA\CrashOnAuditFail,AD 复制失败,

    CrashOnAduitFail如果已启用“审核:如果无法在 组策略 中记录安全审核”设置,则立即关闭系统,并且本地安全事件日志已满,则触发值 2

    启用审核后,Active Directory 域控制器特别容易出现最大容量安全日志,并且安全事件日志的大小受事件查看器或组策略等效项中的“不覆盖事件 (手动清除日志) 或根据需要覆盖”选项的约束。

    用户操作:

    如果 HKLM\System\CCS\Control\LSA\CrashOnAuditFail = 为 2

    • 根据需要清除安全事件日志 (保存到备用位置)
    • 重新规避安全事件日志上的任何大小约束,包括基于策略的设置。
    • 重新创建 CrashOnAuditFail (REG_DWORD) = 1
    • 重新 启动

    看到CrashOnAuditFail01 时,一些 CSS 工程师通过再次清除安全事件日志、删除the CrashOnAuditFail注册表值和重新启动目标 DC 来解决拒绝访问错误。

    相关内容: 管理审核和安全日志

  4. 时间偏斜过长

    默认域策略中的 Kerberos 策略设置允许在 KDC 域控制器和 Kerberos 目标服务器之间) 5 分钟的默认值 (默认值差,以防止重播攻击。 一些文档指出,客户端和 Kerberos 目标之间的时间必须在彼此之间的五分钟内。 另一些则指出,在 Kerberos 身份验证的上下文中,重要的时间是调用方使用的 KDC 与 Kerberos 目标上的时间之间的增量。 此外,Kerberos 不关心相关 DC 上的系统时间是否与当前时间匹配。 它只关心 KDC 和目标 DC 之间的相对时间差在 Kerberos 策略允许的最大时间偏差 (默认的 5 分钟或更短) 内。

    在 Active Directory 操作的上下文中,目标服务器是由目标 DC 联系的源 DC。 当前运行 KDC 服务) Active Directory 林 (中的每个域控制器都是潜在的 KDC。 因此,你需要考虑针对源 DC 的所有其他 DC 的时间准确性,包括目标 DC 本身的时间。

    检查时间准确性的两种方法包括:

    C:\> DCDIAG /TEST: CheckSecurityError
    

    AND

    C:\> W32TM /MONITOR
    

    在失败复制请求时在目标 DC 上查找 LSASRV 40960 事件,该请求引用了源 DC 的 GUIDed CNAME 记录并出现扩展错误:

    0xc000133:主域控制器的时间与备份域控制器或成员服务器的时间大不相同。

    捕获目标计算机连接到源 DC 上的共享文件夹的网络跟踪 (和其他操作) 可能会显示屏幕上的错误 已发生扩展错误。 但网络跟踪显示:

    来自源 DC 的 KerberosV5:TGS 请求领域 > TGS 请求
    KerberosV5:KRB_ERROR - KRB_AP_ERR_TKE_NVV (33) > TGS 响应,其中KRB_AP_ERR_TKE_NYV > 映射到票证尚无效

    TKE_NYV响应指示 TGS 票证上的日期范围比目标上的时间新,指示时间偏斜过长。

    注意

    W32TM /MONITOR 仅检查测试计算机域中 DC 上的时间,因此需要在每个域中运行此功能并比较域之间的时间。

    注意

    如果发现系统时间不准确,请努力找出原因以及可以做些什么来防止未来时间不准确。 林根 PDC 是否已使用外部时间源进行配置? 引用时间源是否联机并在网络上可用? 时间服务是否正在运行? DC 角色计算机是否配置为使用 NT5DS 层次结构到源时间?

    注意

    当 Windows Server 2008 R2 目标 DC 上的时差太大时,DSSITE 中的 “立即复制” 命令。MSC 失败并显示屏幕错误 客户端和服务器之间存在时间和/或日期差异。 此错误字符串映射到错误 1398 decimal/0x576 十六进制,其符号错误名称 ERROR_TIME_SKEW

    相关内容: 设置时钟同步容错以防止重播攻击

  5. SMB 签名不匹配

    SMB 签名的最佳兼容性矩阵由四个策略设置及其基于注册表的等效项定义:

    策略设置 注册表路径
    Microsoft 网络客户端:如果服务器同意) , (对通信进行数字签名 HKLM\SYSTEM\CCS\Services\Lanmanworkstation\Parameters\Enablesecuritysignature
    Microsoft 网络客户端:始终) (对通信进行数字签名 HKLM\SYSTEM\CCS\Services\Lanmanworkstation\Parameters\Requiresecuritysignature
    Microsoft 网络服务器:如果服务器同意) , (对通信进行数字签名 HKLM\SYSTEM\CCS\Services\Lanmanserver\Parameters\Enablesecuritysignature
    Microsoft 网络服务器:始终) (对通信进行数字签名 HKLM\SYSTEM\CCS\Services\Lanmanserver\Parameters\Requiresecuritysignature

    关注目标域控制器和源域控制器之间的 SMB 签名不匹配,其中经典情况是在一端启用或需要设置,但在另一端禁用。

    注意

    内部测试显示 SMB 签名不匹配导致复制失败并出现错误 1722: RPC 服务器不可用

  6. UDP 格式的 Kerberos 数据包碎片

    网络路由器和交换机可能会碎片化或完全丢弃 Kerberos 和 EDNS0 使用的大型 UDP 格式的网络数据包, (DNS) 。 与运行 Windows Server 2008 和 2008 R2 的计算机相比,运行 Windows 2000 和 Windows 2003 操作系统系列的计算机容易受到 UDP 碎片影响。

    用户操作:

    • 在目标 DC 的控制台中,按其完全限定的计算机名称对源 DC 执行 ping 操作,以标识网络路由支持的最大数据包。

      c:\> Ping <source DC hostname.>. <fully qualified computer name> -f -l 1472
      
    • 如果最大的非分段数据包小于 1,472 字节,则按首选项顺序 ()

      • 修改网络基础结构以正确支持大型 UDP 帧。 它可能需要对路由器、交换机或防火墙进行固件升级或配置更改。

        OR

      • 将目标 DC) 上的 maxpacketsize (设置为 PING -f -l 命令标识的最大数据包,减少 8 个字节,以考虑 TCP 标头并重新启动修改后的 DC。

        OR

      • 将目标 DC) 上的 maxpacketsize (设置为“1”值,这会触发 Kerberos 使用 TCP。 重新启动修改后的 DC 以使更改生效。

重试失败的 Active Directory 操作

  1. 安全通道无效/密码不匹配

    使用 nltest /sc: querynetdom verify验证安全通道。

    有关使用 NETDOM / RESETPWD重置目标 DC 的密码的详细信息,请参阅 如何使用 Netdom.exe 重置 Windows Server 域控制器的计算机帐户密码

    用户操作:

    • 禁用正在重新启动的 DC 上的 KDC 服务。

    • 在目标 DC 的控制台中,运行 NETDOM RESETPWD 以重置目标 DC 的密码:

      c:\>netdom resetpwd /server: server_name /userd: domain_name \administrator /passwordd: administrator_password
      
    • 如果在同一域中) 目标 DC 新密码的入站复制知识,请确保可能的 KDC 和源 DC (。

    • 重新启动目标 DC 以刷新 Kerberos 票证并重试复制操作。

  2. 无效的信任

    如果不同域中的 DC 之间的 AD 复制失败,请验证信任路径上的信任关系运行状况

    如果能够,请使用 NETDIAG 信任关系测试来检查损坏的信任。 NETDIAG 使用以下文本标识断开的信任:

    信任关系测试。 . . . . . :未能通过测试来确保域 <域名的 DomainSid> 正确。 [FATAL]到域 <域名> 的安全通道已断开。 [<%variable status code%>]

    例如,你有一个多域林,其中包含:

    • 根域 Contoso.COM
    • 子域 B.Contoso.COM
    • 孙域 C.B.Contoso.COM
    • 同一林中的树域Fabrikam.COM

    如果在子域和树域中C.B.Contoso.COMFabrikam.COM的 DC 之间复制失败,请按以下顺序验证信任运行状况:

    • 在 和 之间C.B.Contoso.COMB.Contoso.COM
    • 在 和 之间B.Contoso.COMContoso.COM
    • 在 和 之间Contoso.COMFabrikam.COM

    如果目标域之间存在快速信任,则无需验证信任路径链。 请改为验证目标域和源域之间的捷径信任。

    使用 Repadmin /showobjmeta * \<DN path for TDO in question> 受信任的域对象 (TDO 检查信任的最新密码更改) 验证目标 DC 是否以可传递方式入站复制可写入域目录分区,其中可能会发生信任密码更改。

    用于重置信任的命令:

    • 从根域 PDC:

      netdom trust <Root Domain> /Domain:<Child Domain> /UserD:CHILD /PasswordD:* /UserO:ROOT /PasswordO:* /Reset /TwoWay
      
    • 从子域 PDC:

      netdom trust <Child Domain> /Domain:<Root Domain> /UserD:Root/PasswordD:*/UserO:Child /PasswordO:* /Reset /TwoWay
      
  3. 无效的 Kerberos 领域 - 文章编写时,PolAcDmN/PolPrDmN (没有重现)

    从域控制器复制 时无法正常工作

    1. 启动注册表编辑器。
    2. 在左窗格中,展开“安全”
    3. 在“ 安全性 ”菜单上,选择“ 权限” ,向管理员本地组授予“安全配置单元及其子容器和对象的完全控制”。
    4. 找到 HKEY_LOCAL_MACHINE\SECURITY\Policy\PolPrDmN 项。
    5. 在注册表编辑器的右窗格中,选择一次无<名称>: REG_NONE条目。
    6. 在“ 视图 ”菜单上,选择“ 显示二进制数据”。 在对话框的“格式”部分中,选择“ 字节”。
    7. 域名显示为“二进制数据”对话框右侧的字符串。 域名与 Kerberos 领域相同。
    8. 找到 HKEY_LOCAL_MACHINE\SECURITY\Policy\PolACDmN 注册表项。
    9. 在注册表编辑器的右窗格中,双击“<无名称>: REG_NONE”条目。
    10. 在“二进制编辑器”对话框中,粘贴 PolPrDmN 中的值。 (PolPrDmN 中的值将是 NetBIOS 域名)。
    11. 重新启动域控制器。
  4. 无效的 Kerberos 领域 - KdcNames

    用户操作:

    • 在目标 DC 的主机上,运行 REGEDIT。
    • 在注册表中找到以下路径: HKLM\system\ccs\control\lsa\kerberos\domains
    • 对于 下HKLM\system\ccs\control\lsa\kerberos\domains的每个<完全限定域>,请验证 的值KdcNames是否引用有效的外部 Kerberos 领域,而不是同一 Active Directory 林中的本地域或其他域。
  5. 启用了 IPv4 大型发送卸载 的网络适配器:

    用户操作:

    • 打开“网络适配器”卡属性。
    • 选择“ 配置 ”按钮。
    • 选择“ 高级 ”选项卡。
    • 禁用 IPv4 大型发送卸载
    • 重新 启动。

数据收集

如果需要 Microsoft 支持方面的帮助,建议按照 使用 TSS 收集 Active Directory 复制问题的信息中所述的步骤收集信息。