我有一个由两个林组成的 Active Directory 设置:
- 1 个多域林,包含 1 个林根域和 2 个直接子域
- 1 个用于 DMZ 发布目的的单域林
我在 DMZ 域中创建了 3 个传出信任,针对林根域创建了 1 个可传递林信任,以及 2 个外部非传递信任(又名快捷信任)。
所有四个域中的所有 DC 都是全局编录服务器。
我尝试将其形象化如下:
现在,问题来了。当我dmzRoot.tld
向域中的安全组授予对 中的资源的访问权限时,它对 中的安全组成员childA
用户有效,但对 中的域用户无效,即使他们是 中的安全组成员。childA
childB
childA
假设我想授予本地管理员对成员服务器的访问权限dmzRoot.tld
。我将其添加childA.ForestRoot.tld\dmzAdministrators
到成员服务器上的本地内置管理员组。
childA.ForestRoot.tld\dmzAdministrators
有以下成员:
- childA\dmzAdmin
- childB\superUser
现在,如果我以 的身份进行身份验证childA\dmzAdmin
,我就可以以本地管理员身份登录到成员服务器,如果我查看 的输出whoami /groups
,就会发现该childA.ForestRoot.tld\dmzAdministrators
组已清楚地列出。
但是,如果我以身份进行身份验证childB\superUser
,我会收到一条消息,提示该帐户未获得远程登录授权。如果我检查whoami /groups
该帐户,则不会列出childB\superUser
该组。childA.ForestRoot.tld\dmzAdministrators
在对用户进行身份验证时,组 SID似乎childA
从未包含在 PAC 中childB
,即使所有 DC 都是 GC。
我在测试过的 dmzRoot.tld 机器上禁用了 PAC 验证,但这没有帮助。
关于如何有效地排除故障,有什么建议吗?如何跟踪身份验证的踪迹来确定失败的位置?
答案1
事实证明,快捷方式信任是导致问题的原因。
当 AD Kerberos 身份验证跨域时,目标领域(即dmzRoot.tld
)会标识一种信任关系,通过该信任关系,用户的原始领域(例如childA.ForestRoot.tld
)是受信任的域。
由于向的可传递森林信任ForestRoot.tld
和向的外部信任(快捷信任)都childA
符合该条件,因此目标领域必须选择一个,并且快捷信任优先于(因为它是显式的)森林信任中的隐式信任关系。
自从SID 过滤器隔离默认情况下在传出信任上启用,只有来自受信任领域(在本例中为childA
域)的 SID 才会在身份验证时受到尊重,外部 SID 将被过滤掉。
总结一下,有两个解决方案:
- 删除外部信任,并依赖森林信任。由于森林信任是可传递的,因此整个森林中的所有 SID 都将保留在您的令牌中。
- 禁用 SID 筛选隔离
dmzRoot.tld
域的传出信任
希望这是有意义的