我正在尝试通过 ldap 设置 AWS 中 FreeBSD 服务器上 OpenSSH 连接的身份验证。实际的 ldap 服务器位于 AWS 外部,可通过 Internet 访问。
我在限制对服务器的访问时遇到了问题。当使用 pam_ldap 和 nss_ldap 以及 OpenLDAP 客户端(PADL 版本)时,使用适当的过滤器一切都运行正常。但是,登录需要几分钟时间。阅读了一些资料后,我切换到 nslcd,它似乎加快了很多速度,但我无法让过滤器正常工作以限制访问。
另外,我注意到用户并不具备所有次要组成员身份,因此我无法使用其他 pam 过滤器或 sshd 配置文件中的 AllowGroups 功能来解决此问题。
有问题的 ldap 服务器是一个庞大的大学范围的安装,因此有数千个群组。
我尝试过类似以下的过滤器,但没有成功。
过滤密码(&(objectClass=posixAccount)(memberOf=CN=customgroup,ou=User Groups,OU=groups,DC=thedomainoftheuniversity,DC=edu))
关于这个过滤器可能存在什么问题,您有什么建议吗?或者关于如何让所有组成员身份显示出来,以便我可以使用其他方法?
更新:我了解到 memberOf 属性不是架构的一部分,并且 LDAP 服务器是 eDirectory。我需要找到一种方法来从组中筛选用户。这些组确实实现了 posixGroup 并填充了成员属性。
答案1
我仍然无法让次要组显示在用户上,但限制现在起作用了。此配置受两个组的限制,并且还根据用户记录上的 OU 属性进行过滤。
pam_authz_search (&(objectClass=posixGroup)(|(cn=wd40)(cn=dev specs))(member=$dn))
pagesize 1000
referrals off
filter passwd (&(objectClass=posixAccount)(uid=*)(|(ou=Dev Svcs & Strategic Solutions - Faculty and Staff)(ou=Campaign Planning & Services - Faculty and Staff)))
map passwd homeDirectory "/home/$uid"
map passwd loginShell "/bin/tcsh"
map passwd gidNumber "20"
filter group (&(objectClass=posixGroup)(|(gidNumber=2281499)(gidNumber=2219401))
答案2
如果 eDirectory 是您的底层目录服务,那么有几点需要注意。PosixAccount 不是默认对象类。托管目录服务的 Uni 是否在用户上维护该对象类?
虽然 MemberOf 本身并不是 eDirectory 中的属性,但这个称呼有点用词不当,因为 User 类的属性名称是 Member,而 LDAP 服务器具有属性映射功能,查询中传入的通用属性会重新映射到本机属性。因此,在 LDAP 查询中,memberOf 通常是 member 的别名。您必须询问目录管理员是否禁用了该功能或原因。