在没有 pam_groupdn 的情况下管理 LDAP 登录:允许多个组

Bil*_*iss 3 linux ldap authentication pam-ldap

我相信你们中的一些人已经处理过同样的问题。我希望有人有比我现在正在做的更好的答案。

因此,您在 LDAP 目录中有一些用户,有一天您会说“嘿!我可以通过 SSH 验证这个东西!” 这很好。

然后有一天你意识到你只希望某些用户能够进入一台机器。比如说,开发人员应该只能进入开发箱,而不是生产箱。您进行了一些谷歌搜索,并pam_groupdn在您的 LDAP 配置 ( /etc/ldap.conf) 中找到了如下内容:

pam_groupdn CN=developers,OU=groups,DC=yourcompany
Run Code Online (Sandbox Code Playgroud)

而且,这很好。您为产品创建另一个小组,为 QA 设立另一个小组,等等。也许有一天您有第二个产品开发小组,所以他们有自己的小组。任何。

有一天,您将拥有一台服务器,开发人员和 QA 都需要能够登录该服务器。呃...事实证明它pam_groupdn不需要多个值。你做什么工作?好吧,如果你没有多想,你会说“哦,我只是建立一个开发人员和 QA 小组!”。

pam_groupdn CN=developers-and-QA,OU=groups,DC=yourcompany
Run Code Online (Sandbox Code Playgroud)

那……不好,但没关系,对吧?

然后有一天,你就会得到一个开发人员,你意识到你需要将它们添加到15组,因为有developers-and-QAproduct1-and-product2developers-who-have-access-to-prod等。废话。

必须有更好的方法来做到这一点,对吧?我给 的开发人员发了电子邮件pam_ldap,他们说不幸的是没有办法pam_groupdn获取多个值(不用修改代码)。

任何人都想分享他们如何在 LDAP 中管理组组而不诉诸复制/粘贴?

小智 7

一个可行的解决方案是应用 apam_filter而不是pam_groupdnin /etc/ldap.conf

# Filter to AND with uid=%s
pam_filter |(member=CN=developers,OU=groups,DC=yourcompany)(member=CN=QA,OU=groups,DC=yourcompany)
Run Code Online (Sandbox Code Playgroud)

“Filter to AND with uid=%s”意味着发送到 LDAP 服务器的过滤器将是这样的: &(uid=<your username>)(<your pam_filter>)

用户必须是developers或 的成员QA。如果他不是这些组之一的成员,则 LDAP 服务器的响应中会出现错误消息,并且密码甚至不会发送到 LDAP 服务器。

适用于我的 RHEL 5.8 环境。

对于不同的过滤器变体,请在谷歌上查看“ldap 过滤器语法”...


Tim*_*awa 5

如果您使用 NSS,则可以AllowGroups在 中设置参数/etc/ssh/sshd_config。如果没有,您应该查看动态列表

dn: cn=devandqa,ou=groups,dc=company,dc=com
cn: devandqa
objectClass: groupOfNames
labeledURI: ldap:///ou=groups,dc=company,dc=com?memberUid?one?(|(cn=developers)(cn=qa))
Run Code Online (Sandbox Code Playgroud)

类似的事情。您还需要包括架构并包括覆盖等......所以这是一个开始。