我正在尝试设置几个 Linux 工作站 (RedHat 7),并且正在尝试弄清楚如何针对具有一些不寻常要求的 LDAP 服务器设置身份验证。
我基本上知道如何使用 sssd 设置 LDAP 身份验证,但我不知道如何将身份验证限制为仅某些用户以满足我的要求。
要启用 LDAP 配置,我将使用以下命令行:
authconfig --enableldap --enableldapauth --ldapserver="<redacted>" --ldapbasedn="<redacted>" --update --enablemkhomedir
这将允许所有 LDAP 用户登录,据我所知,效果很好。但是,我的要求是只有 LDAP 中的某些用户可以登录,并且用户列表将在单独的文本文件中提供(按用户登录名)。
更多信息:我们有一个 LDAP 服务器(实际上是 Active Directory),有几千个用户。只允许大约 20 名需要在这些工作站上工作的人登录这些工作站。不幸的是,LDAP 不包含任何与此相关的信息,并且我无法控制 LDAP 服务器。相反,每隔几周,我就会收到一个文本文件,其中包含应允许登录的用户名列表。
如何设置身份验证以使用 LDAP 获取用户名/密码/用户 ID 等,同时将其仅限于此列表中的用户?
答案1
我找到了两种方法来完成我所需要的。第一个是 thrig 概述的。我必须将每个用户名单独添加到 /etc/security/access.conf 中。
第二个选项是在 sssd.conf 中指定 LDAP 查询字符串:
ldap_access_filter = (|(userid=user1)(userid=user2).....)
第二种解决方案构建起来非常繁琐,但最终在大型 LDAP 环境中具有重大性能优势,因为 sssd 只会检索一些 LDAP 记录。
答案2
将这些用户放入一个组中,然后使用pam_access
规则/etc/security/access.conf
仅允许用户位于该组中的登录(以及root
任何系统管理员和监控,如果需要)例如
+ : root wheel nagios : ALL
+ : yourusergrouphere : ALL
- : ALL : ALL