LDAP应用篇(1)CentOS8接入登录
相比于服务器端的配置,做为客户端接入LDAP的文章和资料就多了许多。能看到的文章都介绍了使用 authconfig 或者 authconfig-tui(此半图形化工具仅V7版本可用) 进行配置的客户端接入方式,十分简单,参照文末的参考资料[1]即可正常完成。
但是对于 CentOS8 系统来说,却略有不同~它取消了 authconfig-tui 工具,同时声明了 authconfig 已经不建议使用,建议改用 authselect 进行配置。经过数天的研究,总算是通过了测试。
测试环境
目前测试客户端的信息如下:
域名/Hostname | IP | OS |
---|
client.example.com | 192.168.188.221 | Oracle Linux R8 |
同时,在 /etc/hosts 中添加服务端地址域名映射。
Linux接入
实际上研究过后回头发现整个步骤还是十分简单的,基本8-9步就可以完成。
安装依赖
# openssl-perl 暂不确定是否需要
yum install openldap-clients sssd sssd-ldap oddjob-mkhomedir -y
在SSSD和LDAP中启用TLS
在 ldap-client 中创建证书目录 /etc/openldap/certs,当然也可以创建在别的位置,将证书从服务器下载到该目录,也可以通过 openssl 命令从 OpenLDAP 服务端下载到本地证书目录中。
openssl s_client -connect server.example.com:636 -showcerts < /dev/null | openssl x509 -text > /etc/openldap/certs/ca.cert.pem
请注意这个证书目录要在后面的配置中反复使用。
配置LDAP客户端通过SSSD链接LDAP服务器
创建文件 /etc/sssd/sssd.conf ,如果已经存在,则覆写之前的内容。
[sssd]
config_file_version = 2
services = nss, pam,autofs
domains = default
[nss]
homedir_substring = /home
[pam]
[domain/default]
id_provider = ldap
autofs_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldaps://server.example.com:636
ldap_chpass_uri = ldaps://server.example.com:636
ldap_search_base = dc=example,dc=com
ldap_id_use_start_tls = False
ldap_tls_cacertdir = /etc/openldap/certs
cache_credentials = True
ldap_tls_reqcert = demand
entry_cache_timeout = 600
ldap_network_timeout = 3
ldap_connection_expire_timeout = 60
接下来,修改文件权限和所有者:
chmod 600 /etc/sssd/sssd.conf
chown root:root /etc/sssd/sssd.conf
配置 ldap.conf
编辑文件: /etc/openldap/ldap.conf ,添加下面的配置信息:
BASE dc=example,dc=com
URI ldaps://server.example.com:636
TLS_CACERT /etc/openldap/certs/ca.cert.pem
TLS_CACERTDIR /etc/openldap/certs
刷新证书
openssl rehash /etc/openldap/certs
配置mkhomedir来自动创建家目录
选择 sssd 作为认证管理套件,此时会备份原有配置系统文件:
authselect select sssd with-mkhomedir --force
# 返回:
备份保存在 /var/lib/authselect/backups/2022-05-19-14-07-19.3q9Ymg
选择了配置文件 "sssd"。
以下 nsswitch 映射信息被配置集覆盖:
- passwd
- group
- netgroup
- automount
- services
Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.
- with-mkhomedir is selected, make sure pam_oddjob_mkhomedir module
is present and oddjobd service is enabled and active
- systemctl enable --now oddjobd.service
启用SSSD 和 ODDJOBD 服务
systemctl enable sssd.service --now
systemctl enable oddjobd.service --now
验证LDAP用户登录
# 可以找到用户,但是无法登录
id <username>
这里需要注意下,可能会无法找到用户,可以试着重启一下 SSSD 服务:
systemctl restart sssd.service
用户过滤
如果不出意外,通过上面的配置,类 CentOS8 系统已经可以使用 LDAP 账户登入系统了。然而这里会发现个问题,似乎所有账户都可以直接登录,这显然不是我们需要的,再次打开 SSSD 的配置文件 /etc/sssd/sssd.conf,添加过滤配置:
access_provider = ldap
ldap_access_order = filter
# 符合一般的逻辑操作 & 标识和,| 表示或。
ldap_access_filter = (&(objectclass=shadowAccount)(objectclass=posixAccount)(memberOf=cn=ecs,ou=group,dc=example,dc=com))
这样,只有 memberOf 属性为 cn=ecs,ou=group,dc=example,dc=com 的 posixAccount 类型的账户方可登录该服务器。
修改完成后,依旧要记得重启 SSSD 服务。
参考资料
- 配置linux主机使用ldap用户
- 8 simple steps to configure ldap client RHEL/CentOS 8
- 在 RHEL 中配置身份验证和授权
- ldap-finds-user-but-permission-denied-when-logging-in
- openldap主机访问控制(基于用户组)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)