最近,通过将 Netware 迁移到 Windows 文件服务器,我们最终创建了大量 AD 组。现在我们在身份验证和获取资源访问权限方面遇到了一些问题。
经过一些初步的故障排除后,我们发现域管理员是太多组的成员(最近统计为 397 个),并且 Kerberos 票证大小已超过 12000 字节(为 13783)(事件 ID 6)。我发现以下文章似乎准确地描述了发生了什么,并提出了一些如何修复它的建议:
目标是将注册表中的 MaxTokenSize 限制提高到 65535。但是我找不到关于这将产生什么影响的讨论?长期目标是合理化组数量的增长,但短期内这似乎是一个解决方案。过去有没有人有过这样的经历,在推出这一变化之前,我们应该注意哪些注意事项?
我们目前正在运行 Server 2008 域和林功能级别,所有 DC 都是 64 位虚拟机。
更新:在对此进行更多阅读后,我发现在 Server 2012 中,MaxTokenSize 的默认值设置为 48000。这看起来是我们应该采用的一个合理选择。有一件事我似乎仍然找不到信息,那就是用户拥有更大令牌的可能影响。有人建议这会增加 IIS 服务器上的内存使用量,但有人知道 DC 和成员服务器(即 32 位 Citrix 服务器等)是否会出现这种情况吗?
答案1
许多组织很久以前就将其设置为 65535。有很多 Microsoft kb 文章推荐这样做。之前的建议是 100,000,直到 Microsoft 意识到该值不起作用,他们将其更正为 65535。
如果您将集成 Windows 身份验证与 IIS 网站(例如 SharePoint)结合使用,那么较大的令牌可能会导致身份验证失败。通过增加 http.sys 服务的 MaxRequestBytes 值,可以轻松解决此问题。这是因为每个 http 请求中都包含带有组的 Kerberos 令牌。还有一个 IIS 设置可以提高集成身份验证的性能,这样只需对第一个请求进行身份验证。
我建议检查您的组并将一些组转换为分发组,除非它们绝对需要成为安全组。即使最大令牌大小为 65535,一个帐户也可能成为太多组的成员,以至于无法登录。
答案2
这是最大限度令牌大小。令牌仅在必要时才会消耗那么多内存。这并不意味着所有 Kerberos 令牌都始终为 48000 字节。
这种问题通常只出现在拥有许多安全组的大型企业中,并且已经积累了多年。
在Windows2012中,用户帐户可以属于的组数量有了新的硬性限制:1,015。
如果您发现 Kerberos 令牌膨胀问题,请检查 DOMAIN USERS 组嵌套了多少个组。这是一种不好的做法。
尝试将 DOMAIN USERS 从所有不必要的组的成员中删除。
这里有一篇很好的文章可以参考: https://blogs.technet.microsoft.com/shanecothran/2010/07/16/maxtokensize-and-kerberos-token-bloat/