为什么需要 Windows 2000 之前的兼容访问来枚举组成员身份?

为什么需要 Windows 2000 之前的兼容访问来枚举组成员身份?

我正在尝试锁定安全性,包括删除 UNIX 插件创建的泄露密码哈希。我从 Pre-Windows 2000 Compatible Access 组中删除了经过身份验证的用户。但是,执行此操作后,一小部分用户无法登录各种非 Windows 的东西,如 Redmine、Subversion、我们的 VPN 等。这些服务使用 ldapbind 用户帐户进行身份验证,然后使用 SSL LDAP 对 AD 进行身份验证并检查组成员身份。我们还使用运行 SSSD 的 Linux 计算机,通过 Kerberos 进行身份验证并使用 LDAP 检查组成员身份。

我发现的问题是无法枚举一小部分用户的组成员身份。他们可以进行身份​​验证但无法获得授权。例如,如果我登录 Linux 计算机并执行“id user”,则不会找到这些用户的任何信息。但是“id user”会返回大多数用户的信息。我想不出有效的用户帐户和无效的用户帐户之间有什么区别。可能发生了什么?

答案1

您从 Windows 2000 之前的兼容访问中删除了经过身份验证的用户,以防止用户读取彼此的 UNIX 密码哈希。Windows 2000 之前的兼容访问有权读取大多数对象的几乎所有属性,并且大多数非管理员安全主体都是通过这种方式读取对象属性的。通过读取属性来确定用户的组成员身份memberOf,并且unixUserPassword,现在大多数用户读取属性的能力已被删除。受保护组中的用户没有被破坏,而不在受保护组中的用户被破坏的原因是,奇怪的是,AdminSDHolder 授予的读取受保护对象属性的权限比未受保护对象的权限更大。

没有“正确”的答案来解决您的问题,因为首先将机密数据存储在 AD 中通常不是一个好主意(这正是原因)。您可以考虑设置机密性位。我从未这样做过,但这篇知识库文章详细介绍了这一点:如何在 Windows Server 2003 Service Pack 1 中将属性标记为机密

相关内容