用户帐户上的日志记录失败

用户帐户上的日志记录失败

在基于 Windows Server 的计算机上记录包含 1,010 个以上组成员的用户帐户可能会失败

项目

10/12/2022

本文解决了登录 1,010 个以上组的成员的用户帐户失败的问题。

适用于: Windows Server 2008 R2 Service Pack 1原始 KB 编号: 328889

症状

当用户尝试使用本地计算机帐户或域用户帐户登录到计算机时,登录请求可能会失败。 你会收到以下错误消息:

登录消息:由于以下错误,系统无法登录:在登录尝试期间,用户的安全上下文累积了过多的安全 ID。 请重试或咨询系统管理员。

当登录用户是大约 1,010 个或多个安全组的显式或可传递成员时,会出现此问题。

应用程序和安全事件日志 ID 4625 可能会显示此错误代码:

0xc000015a

错误 STATUS_TOO_MANY_CONTEXT_IDS。

原因

当用户登录到计算机时,本地安全局 (LSA,本地安全机构子系统的一部分) 生成访问令牌。 该令牌表示用户的安全上下文。 访问令牌包含用户所属的每个组的唯一安全标识符 (SID) 。 这些 SID 包括来自用户和组帐户的 SIDHistory 的可传递组和 SID 值。

在访问令牌中包含用户组成员身份的 SID 的数组不能包含不超过 1,024 个 SID。 LSA 无法从令牌中删除任何 SID。 因此,如果有更多的 SID,LSA 将无法创建访问令牌,用户将无法登录。

生成 SID 列表时,LSA 还会为用户的组成员身份插入多个通用的已知 SID, (以传输方式) 进行评估。 因此,如果用户是超过 1,010 个自定义安全组的成员,则 SID 总数可能超过 1,024 SID 限制。

重要

管理员帐户和非管理员帐户的令牌都受限。自定义 SID 的确切数目因登录类型而异 (例如,创建令牌的域控制器和计算机的交互式、服务、网络) 和操作系统版本。使用 Kerberos 或 NTLM 作为身份验证协议与访问令牌限制无关。当用户属于多个组时,Kerberos 客户端设置 MaxTokenSize 会在 Kerberos 身份验证问题中进行讨论。 Kerberos 上下文中的令牌是指 Windows Kerberos 主机接收的票证的缓冲区。 根据票证的大小、SID 类型以及是否启用 SID 压缩,缓冲区可以容纳的 SID 比访问令牌中要少或多得多。

自定义 SID 列表将包括:

用户/计算机的主要 SID 以及帐户所属的安全组。登录范围内组 的 SIDHistory 属性中的 SID。

由于 SIDHistory 属性可以包含多个值,因此,如果多次迁移帐户,可以快速达到 1,024 个 SID 的限制。 在以下情况下,访问令牌中的 SID 数将小于用户所属组的总数:

用户来自 SIDHistory 和 SID 筛选掉的受信任域。用户来自受信任的域,在信任中隔离了 SID。 然后,仅包含来自用户所在的同一域的 SID。仅包含资源域中的域本地组 SID。仅包含资源服务器中的服务器本地组 SID。

由于这些差异,用户可以登录到一个域中的计算机,但不能登录到另一个域中的计算机。 用户还可以登录到域中的一台服务器,但不能登录到同一域中的另一台服务器。

可以使用 NTDSUTIL 了解受影响用户的域组成员身份。 它具有一个组成员身份评估工具,该工具也可跨林边界工作。 该工具还适用于以下用户:

远高于 1,024 个 SID 限制的用户属于许多组的用户,即使具有 65,535 字节的缓冲区,Kerberos 也无法检索票证

请按照下列步骤操作:

在具有 AD 管理工具的计算机上打开命令提示符 (域控制器或具有 RSAT) 的计算机。

切换到 gro mem eva 该工具,然后获取可用命令作为以下屏幕截图:

连接到评估所需的 DC:

设置用户域的帐户 DC %s – DC设置用户林的全局目录 %s – GC设置资源 DC %s – 资源域的 DC根据需要设置凭据,或在结果看起来不正确或集合失败时详细设置日志。

按如下所示运行评估 (,例如) 中的contoso.com管理员:

Run contoso.com Admin

执行将收集步骤 1-2 中的用户详细信息,在步骤 3 中收集资源域组详细信息,然后在步骤 4 和步骤 5 中编译报表。

结果将作为以下屏幕截图存储在当前目录中的 TSV 文件中:

请参阅以下指南,阅读 TSV 文件:

SID 类型: 告知它是组/用户还是 SIDHistory 的主要 SID。SID 历史记录计数:此帐户从 SIDHistory 引入多少个 SID?一级 MemberOf 计数:此条目在单个级别上向集合添加多少个 SID (条目的成员) ?总 MemberOf 计数:此条目总共向集合添加了多少个 SID?组所有者:对于已委派组管理的环境,可能会提示如何使用过多的组 来攻击 用户登录。组类型:Sid 类型。 WellKnown、用户 SID、全局和通用安全组将位于为此用户创建的所有令牌中。 域本地安全组将仅在此资源域中。 当用户仅在特定资源域中出现登录问题时,这一点可能很重要。Member WhenChanged (UTC) :对组成员身份的最新更改。 它可以帮助与用户 () 首次报告登录问题的时间相关联。

查找要针对更改的组的提示:

具有 SIDHistory 的组具有良好的杠杆作用,有助于减少 SID 计数。

通过嵌套引入许多其他组的组具有减少 SID 计数的极大杠杆作用。

在组名称中查找线索,以确定是否不再使用该组。 例如,我们有一个客户,其软件部署解决方案中每个应用程序都有一个组。 我们发现了包含 office2000 或 access2000 的组。

将组列表的报表传递给服务和应用程序管理员。 确定不再需要的组,可能仅针对此业务部门或部门中的此用户。

限制:

此工具不包括本文下面列出的某些特殊/WellKnown SID。 因此,请记住,用户必须清除报表中 1,024 中的多个 SID,然后才能成功登录。

该工具也不涵盖服务器本地组。 如果仅在资源域的某些服务器上遇到问题,用户或其某些组可能是服务器本地组的成员。

若要获取服务器本地组及其成员的列表,

注意

在提升的命令提示符下以管理员身份运行。

Net localgroup | findstr * > %computername%-grouplist.txt

若要从域中获取成员列表,请执行下列操作:

Md server-groupsFor /f “delims=*” %d in (%computername%-grouplist.txt) do Net localgroup %d | findstr > server-groups%d-domain-memberlist.txt**

将报告的组与 NTDSUTIL 中的用户报表混合并匹配。

解决方案

若要解决此问题,请根据自己的情况使用以下方法之一。

方法 1

此解决方法适用于以下情况:

遇到登录错误的用户不是管理员。管理员可以成功登录到计算机或域。

此解析必须由有权更改用户组成员身份的管理员执行。 管理员必须更改用户的组成员身份,以确保用户不再是超过 1,010 个安全组的成员。 考虑可传递的组成员身份和本地组成员身份。

用于减少用户令牌中 SID 数量的选项包括以下内容。 NTDSUTIL 中的数据收集应有助于查看更改或删除范围内的组:

从足够数量的安全组中删除用户。

将未使用的安全组转换为分发组。 分发组不计入访问令牌限制。 需要转换后的组时,可以将分发组转换回安全组。

确定安全主体是否依赖于 SID 历史记录进行资源访问。 如果没有,请从这些帐户中删除 SIDHistory 属性。 可以通过权威还原检索属性值。

注意

尽管用户可以成为其成员的最大安全组数为 1,024,但最佳做法是将该数字限制为小于 1,010。 此数字可确保令牌生成始终成功,因为它为 LSA 插入的泛型 SID 提供了空间。

方法 2

该解析适用于管理员帐户无法登录到计算机的情况。

如果因组成员身份过多而登录的用户是管理员组的成员,则具有管理员帐户凭据的管理员 (即,具有已知相对标识符 [RID] 为 500 的帐户) 必须通过选择“安全模式启动”选项 (或选择“使用网络启动”选项) 来重启域控制器。 在安全模式下,管理员必须使用管理员帐户凭据登录到域控制器。

Microsoft 更改了令牌生成算法。 LSA 可以为管理员帐户创建访问令牌,以便管理员可以登录,而不考虑管理员帐户所属的可传递组或不妥协组数。 使用这些安全模式启动选项之一时,为管理员帐户创建的访问令牌包括管理员帐户所属的所有内置组和所有域全局组的 SID。

这些组通常包括:

每个人都 (S-1-1-0) BUILTINUsers (S-1-5-32-545) BUILTINAdministrators (S-1-5-32-544) NT AUTHORITYINTERACTIVE (S-1-5-4) NT AUTHORITYAuthenticated Users (S-1-5-11) 本地 (S-1-2-0) DomainDomain Users (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzz-513) DomainDomain Admins (S-1-5-21-xxxxxxxx-yyyyy-zzzzzzzz-512) BUILTINPre-Windows 2000 兼容访问 (S-1-5-32-554) (如果每个人都是此组的成员)NT AUTHORITY如果域控制器正在运行 Windows Server 2003,则此组织 (S-1-5-15)

注意

如果使用安全模式启动选项,则 UI) (Active Directory 用户和计算机管理单元用户界面不可用。 在 Windows Server 2003 中,管理员可以通过选择“网络启动”选项的安全模式登录;在此模式下,可使用Active Directory 用户和计算机管理单元 UI。

管理员通过选择安全模式启动选项之一并使用管理员帐户的凭据登录后,管理员必须识别并修改导致拒绝登录服务的安全组的成员身份。

进行此更改后,用户应能够在完成等于域复制延迟的时间段后成功登录。

方法 3

如果创建了多个组来授予对特定服务器集上使用的资源的访问权限,并且这些资源与许多其他服务器无关,则此选项具有最大的吸引力。用户的访问令牌始终包含用户、全局组和通用组的 SID。 但是,它只包含资源服务器所在的域的Domain-Local组的 SID。 因此,从用户所属的 600 个组中,有 400 个正在帮助授予对两组服务器上的文件服务器资源的访问权限,然后可以使用以下想法:

根据Domain-Local组数将服务器拆分为多个组。而不是一个包含所有组和服务器的资源域,而是具有多个域,其中只有定义的包含所需服务器的组。有一个单独的域,用于对域本地组稍有需要的服务器。 一个示例可能是 Exchange 服务器,因为 Exchange 对通用组有很强的偏好。更多信息

帐户的通用 SID 通常包括:

每个人都 (S-1-1-0) BUILTINUsers (S-1-5-32-545) BUILTINAdministrators (S-1-5-32-544) NT AUTHORITYAuthenticated Users (S-1-5-11) 登录会话 Sid (S-1-5-5-X-Y) 如果用户是此组的成员,则 BUILTINPre-Windows 2000 兼容访问 (S-1-5-32-554) (嵌套)

重要

工具 Whoami 通常用于检查访问令牌。 此工具不显示登录会话 SID。

SID 的示例,具体取决于登录会话类型:

本地 (S-1-2-0) 控制台登录 (S-1-2-1) NT AUTHORITYNETWORK (S-1-5-2) NT AUTHORITYSERVICE (S-1-5-6) NT AUTHORITYINTERACTIVE (S-1-5-4) NT AUTHORITYTERMINAL SERVER 用户 (S-1-5-13) NT AUTHORITYBATCH (S-1-5-3)

常用主要组的 SID:

DomainDomain Computers (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzz-515) DomainDomain Users (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzz-513) DomainDomain Admins (S-1-5-21-xxxxxxxx-yyyyy-zzzzzzzz-512)

记录登录会话的验证方式的 SID,以下值之一:

身份验证机构断言标识 (S-1-18-1) 服务断言标识 (S-1-18-2)

提供有关令牌上下文和声明详细信息的 SID,可能不止一个:

(S-1-5-21-0-0-0-496) 使用设备声明S-1-5-21-0-0-0-0-497 (使用的用户声明) 此组织证书 (S-1-5-65-1) 令牌是在 PKI 验证标识 (S-1-18-4) 的帮助下生成的令牌是使用 MFA 方法 (S-1-18-5) 生成的凭据防护 (S-1-18-6) 使用

描述令牌的一致性级别的 SID,最常见的示例:

中等必需级别 (S-1-16-8192) 高级必需级别 (S-1-16-12288)

访问令牌包含相对于用户/计算机源的 SID,这是以下值之一:

NT AUTHORITYOTHER_ORGANIZATION (S-1-5-1000) NT AUTHORITY此组织 (S-1-5-15) 如果帐户来自与计算机相同的林。

注意

如 SID 条目 登录会话 SID 中的注释所示,请不要对工具输出列表中的 SID 进行计数,并假定所有目标计算机和登录类型都已完成。 如果帐户的 SID 超过 1,000 个,则应认为其有达到此限制的危险。 不要忘记这一点,根据创建令牌的计算机,也可以添加服务器或工作站本地组。xxxxxxxx-yyyyy-zzzzzzzzzz 指示 SID 的域或工作站组件。

以下示例演示当用户登录到域中的计算机时,哪些域本地安全组将显示在用户的令牌中。

在此示例中,假设 Joe 属于 域 A ,并且是域本地组 Domain AChicago Users 的成员。 Joe 也是域本地组 Domain BChicago Users 的成员。 当 Joe 登录到属于域 A ((例如域 AWorkstation1) )的计算机时,会在计算机上为 Joe 生成一个令牌,令牌除了包含所有通用和全局组成员身份外,还包含域 A芝加哥用户的 SID。 它不会包含域 BChicago 用户的 SID,因为 Joe 登录 (域 AWorkstation1 的计算机) 属于域 A。

同样,当 Joe 登录到属于 域 B ((例如域 BWorkstation1) )的计算机时,会在计算机上为 Joe 生成令牌,令牌除了包含所有通用和全局组成员身份外,还包含域 B芝加哥用户的 SID;它不会包含域 A芝加哥用户的 SID,因为 Joe 登录 (域 BWorkstation1) 的计算机属于域 B。

但是,当 Joe 登录到属于 域 C ((例如域 CWorkstation1) )的计算机时,会在登录计算机上为 Joe 生成一个令牌,该计算机包含 Joe 用户帐户的所有通用和全局组成员身份。 域 A芝加哥用户的 SID 和域 BChicago 用户的 SID 都不会显示在令牌中,因为 Joe 所属的域本地组与 Joe 登录 (域 CWorkstation1) 的计算机的域不同。 相反,如果 Joe 是属于域 C (的某个域本地组的成员,例如,域 C芝加哥用户) ,则计算机上为 Joe 生成的令牌将包含除所有通用和全局组成员身份外,还包含域 C芝加哥用户的 SID。

参考

已知的 SID

已知的 SID 结构

组成员资格评估


比丘资源网 » 用户帐户上的日志记录失败

发表回复

提供最优质的资源集合

立即查看 了解详情