净用户/域返回错误5 – 访问被拒绝

我确实有一个域,在所有用户和计算机对象上已经更改了默认的ACL,并且启用了列表对象模式 (基于目录对象的基于访问的枚举)。 最值得注意的是,大多数目录对象的“Everyone:读取”权限已从列表中删除,因此用户无法读取“外部”对象以符合隐私保护策略。

在这个星座中,应用程序的客户端(基于UniPaas框架,如果这很重要)试图读取特定用户的组成员身份,并且由于未知原因而失败。 从软件制造商,我们得到了一个简单的testing案例,其中net user %USERNAME% /domain失败,出现错误5 – 访问在此基础架构中被拒绝。 networking协议的net use正在使用,它的失败方式与我们所看到的应用程序的networking痕迹相对应。

我现在有点不知所谓的内部net user调用(特别是它用来读取属性的API以及用户必须获得的权限)。 我如何开始debugging呢?

编辑:我想出了一件事是运行Wiresharkloggingnetworkingnet user %username% /domain调用引起的networkingstream量。 一切都看起来不错,直到为BUILTIN域(S-1-5-32)发出一个SAMR OpenDomain调用,返回STATUS_ACCESS_DENIED,之后所有连接都被拆除。 请参阅此pcap跟踪中的数据包33和34 。 这似乎是拒绝来自net user响应的原因,虽然我不知道这里出了什么问题。

看起来你已经设法阻止了builtin组的列举。 这个net user调用打开连接到两个域作为其操作的一部分:

  1. 基于域SID到您的AD域。
  2. 基于广为人知的SID (S-1-5-32)的BUILTIN域。

大部分查询都是通过第一个连接完成的,其中一个通过第二个连接完成。 这个过程将$YOURDOMAIN\Domain Users变成众所周知的BUILTIN\Domain Users (S-1-5-32-545)的原理,系统知道这个原则是特殊的。 当连接到BUILTIN域被拒绝时,整个调用失败。

检查域树中Builtin AD容器的权限 – 它应该有一个"Authenticated Users:Read" ACE。 此外,应该允许Builtin容器的枚举 – 一个Authenticated Users:Read ACE的顶级域也应该照顾这一点。