OpenLDAP ACL 防止匿名用户获取所有组的列表

OpenLDAP ACL 防止匿名用户获取所有组的列表

我正在尝试保护现有的 OpenLDAP 安装,其中要求允许匿名用户在知道 LDAP 中特定用户条目的 uid 的情况下检索有关记录的信息。假设结构如下:

dc=example,dc=com
  ou=People
    uid=user1
    uid=user2
  ou=Groups
    cn=user1
      memberUid:user1
    cn=user2
      memberUid:user2
    cn=common
      memberUid:user1
      memberUid:user2

现在,如果匿名用户知道 LDAP 中存在条目 uid=user1,他们应该能够检索此用户所属组的列表。但是他们应该无法发现其他组。

因此ldapsearch -b "ou=Groups,dc=example,dc=com"不应返回任何内容,而ldapsearch -b "ou=Groups,dc=example,dc=com" "(&(objectClass=posixGroup)(memberUid=user1))"应返回 user1 是成员的所有组。

到目前为止,我尝试了几种不同的 ACL,但都没有成功。要么搜索有效,但也可以列出所有组,要么无法列出所有组,但搜索无效。

有没有办法使用 ACL 实现所需的行为?

PS:数据库使用标准 nis 模式,因为数据库中已经有数据,因此更改为 rfc2307bis 不是一种选择(并且还有其他原因导致在这种情况下无法进行这种更改)。

答案1

我认为这种方式不可能实现,因为您无法限制哪些组可以读取。但是,OpenLDAP 提供了一种可能对您有帮助的替代方法。这称为“反向组维护”(请参阅​​第 12.8 章在(过时的)文档中) 和memberOf覆盖层。基本上,它维护用户所属的每个组的列表,从而可以轻松查找此类信息。

有关如何以现代方式做到这一点的帮助,请cn=config查看这里

相关内容