Webmin 需要什么 OpenLDAP ACL?

Webmin 需要什么 OpenLDAP ACL?

我对 OpenLDAP ACL 配置这一神秘科学感到困惑。我想将用户登录数据存储在 OpenLDAP 中,并将其提供给多个服务,以便用户可以对所有服务使用相同的用户名和密码。

我在 VPS 上设置了 Virtualmin/Webmin,并使用以下说明设置了 OpenLDAP 和 Webmin:https://www.virtualmin.com/documentation/installation/ldap/ 这样,就可以从 LDAP 中检索 Unix 用户和 Webmin 用户的帐户数据。

现在我想尽可能地限制 LDAP ACL,但不知道如何做。我想到了以下策略:

  • 服务的每个 LDAP 用户都应具有必要的最少读/写权限以使服务正常运行。
  • 匿名 LDAP 用户应该能够登录,但不能读取任何内容。
  • 与人类相对应的 LDAP 用户不应该能够读取/写入除了他们自己的属性之外的任何内容(直到有必要为止)。

使用这些说明我为 OpenLDAP 提出了以下 ACL:

olcAccess: {0}to * by dn="cn=admin,dc=example,dc=com" write by * break
olcAccess: {1}to * attrs=userPassword by self =xw by anonymous auth by * none
olcAccess: {2}to * attrs=shadowLastChange by self write by users read
olcAccess: {3}to dn.subtree=ou=WebminUG,dc=example,dc=com by dn="uid=WebminUG,ou=sysusers,dc=example,dc=com" write by users read
olcAccess: {4}to * by users read

假设基本 DN 是dc=example,dc=com

遗憾的是,无论出于什么原因,此 ACL 都不起作用。尝试登录 Webmin 时会显示“登录失败。请重试。”如果用户名或密码不匹配,则会显示相同的消息。即使su Username在 shell 中也不起作用(如果UsernameLDAP 中存储了某个 Unix 用户),错误表明该用户不存在。

目前,我将 ACL 设置为olcAccess: to * by users write by anonymous read,因为我不知道如何在不破坏设置的情况下使其更加严格。

你能帮我弄清楚该怎么办吗?为什么我的配置拒绝访问?如有必要,我很乐意提供更详细的信息。

编辑: 我认为它失败了,因为我忘了添加“catch-all”规则。以下有效:

olcAccess: {0}to * by dn="cn=admin,dc=mueli-deisswil,dc=ch" write by * break
olcAccess: {1}to * attrs=userPassword by self =xw by anonymous auth by * none
olcAccess: {2}to * attrs=shadowLastChange by self write by users read
olcAccess: {3}to dn.subtree=ou=WebminUG,dc=example,dc=com by dn="uid=WebminUG,ou=sysusers,dc=example,dc=com" write by users read
olcAccess: {4}to * by users write by anonymous read

但是,如果我将最后一行更改为to * by users read by anonymous auth,或者仅将两个权限中的一个更改为read/ auth,那么它会再次失败。

有没有没有的解决方案to * by anonymous read

为了更容易理解目录的布局如下:

dc=example,dc=com                       // Base DN

ou=people,dc=example,dc=com             // Here "human users" are stored
uid=Elie,ou=people,dc=example,dc=com    // Entry of Elie Xample. ;)

ou=unix-groups,dc=example,dc=com        // Here unix groups corresponding to unix accounts are stored
cn=Elie,ou=unix-groups,dc=example,dc=com

ou=sysusers,dc=example,dc=com           // Here the users of services are stored
uid=WebminUG,ou=sysusers,dc=example,dc=com
uid=NextCloud,ou=sysusers,dc=example,dc=com

ou=WebminUG,dc=example,dc=com           // Here the data of Webmin-Users is stored
cn=Elie,ou=WebminUG,dc=example,dc=com   // The Webmin-User of Elie Xample

相关内容