RHEL/CentOS 8配置ldap客户端的8个简单步骤
在本教程中,将介绍在RHEL/CentOS 8 Linux节点上通过TLS使用SSSD配置LDAP客户端的步骤。
我希望我们已经知道openldap-server
已从RHEL 8中删除(它可能仍在某些开源软件包中可用),但是我们仍然可以使用SSSD将RHEL/CentOS 8配置为LDAP客户端。
在之前介绍的在RHEL/CentOS 7上配置LDAP客户端的步骤,我使用了authconfig-tui。
但是同样,RHEL/CentOS 8也不再推荐使用此工具,因此我们必须使用authconfig CLI。
实验室环境
在前面的文章中,我已经配置了LDAP服务器,因此我将使用相同的设置。
在本教程中,我将使用CentOS 8,但是相同的步骤也可以在RHEL 8上使用。
LDAP服务器IP:10.0.2.20基本DN:dc = example,dc = com LDAP服务器主机名ldap-server LDAP客户端主机名ldap-client
准备工作
我们必须具有配置了TLS或者SSL的工作LDAP服务器。
我们将使用TLS连接到LDAP服务器
面向初学者的基础知识LDAP教程–了解术语和用法分步教程:安装和配置OpenLDAP分步教程:使用TLS证书配置OpenLDAP
1.安装OpenLDAP Client软件包
首先,我们必须安装openldap-clients
,sssd
和其他相关的rpm。
我们还将安装" oddjob-mkhomedir"来为首次登录的任何ldap用户自动创建主目录。
如果这不是要求,则可以选择跳过此rpm进行安装。
说明:
在RHEL系统上,我们必须具有RHN的有效订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum
软件包管理器可以安装提供的rpm及其依赖项。
[root@client ~]# dnf -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir openssl-perl
2.在SSSD和LDAP中启用TLS
我们将使用TLS配置连接到我们在上一篇文章中配置的LDAP服务器。
如果我们打算使用SSL,那么我还将共享SSL的示例sssd配置。
在" ldap-client"上创建"/etc/openldap/cacerts"(我们可以选择使用任何其他目录)
[root@ldap-client ~]# mkdir /etc/openldap/cacerts
将" ca.cert.pem"从" ldap-server"复制到" ldap-client"
[root@ldap-server ~]# scp /etc/openldap/cacerts/ca.cert.pem ldap-client:/etc/openldap/cacerts/ca.cert.pem
3.配置LDAP客户端以使用SSSD向LDAP服务器进行身份验证
创建一个新的/etc/sssd/sssd.conf文件(如果不存在)或者删除所有内容并添加以下内容以使用ldap通信的TLS:
[root@ldap-client ~]# cat /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 = ldap://10.0.2.20 ldap_search_base = dc=example,dc=com ldap_id_use_start_tls = True ldap_tls_cacertdir = /etc/openldap/cacerts cache_credentials = True ldap_tls_reqcert = allow
我们可以根据环境修改值。
其中我提供了BaseCDN
和ldap_uri
,这是我的ldap-server
的IP。
如果我们已经配置了DNS或者更新了/etc/hosts文件,则可以使用主机名代替IP
提示:
为了能够使用SSL进行LDAP通信,请使用以下示例配置文件:
[domain/default] id_provider = ldap autofs_provider = ldap auth_provider = ldap chpass_provider = ldap ldap_uri = ldaps://ldap.example.com:636 ldap_chpass_uri = ldaps://ldap.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
接下来更改文件的权限和所有权
[root@ldap-client ~]# chmod 600 /etc/sssd/sssd.conf [root@ldap-client ~]# chown root:root /etc/sssd/sssd.conf
4.配置ldap.conf
在/etc/openldap/ldap.conf中添加以下内容
BASE dc=example,dc=com URI ldap://10.0.2.20 TLS_CACERT /etc/openldap/cacerts/ca.cert.pem TLS_CACERTDIR /etc/openldap/cacerts
提示:
另外,我们可以在此处选择添加 TLS_REQCERT never
TLS_REQCERT
参数,该参数指示客户端实施TLS安全性的严格程度。
我们将其设置为从不绕过与TLS证书功能相关的任何问题。
在这种情况下,我们可以删除或者注释掉" TLS_CACERT"和" TLS_CACERTDIR"条目
5.刷新证书
重新哈希我们从ldap-server复制的证书:
[root@ldap-client ~]# openssl rehash /etc/openldap/cacerts
6.配置mkhomedir以自动创建主目录
我们可以使用" oddjob-mkhomedir"为登录客户端节点的任何ldap用户自动创建主目录。
这需要由我们之前已经安装的oddjob-mkhomedir提供的" pam_mkhomedir.so"。
用authselect配置系统
[root@client ~]# authselect select sssd with-mkhomedir --force Profile "sssd" was selected. The following nsswitch maps are overwritten by the profile: - 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 - systemctl enable oddjobd.service - systemctl start oddjobd.service
7.启用并启动SSSD和ODDJOBD服务
现在,我们完成了使用RHEL/CentOS 8 Linux节点配置ldap客户端的步骤。
最后一步是重新启动/启动sssd
和oddjobd
服务
[root@ldap-client ~]# systemctl enable sssd.service --now [root@ldap-client ~]# systemctl enable oddjobd.service --now
8.验证LDAP用户登录
如果我们已经有一个用户,现在我们可以尝试在此客户机节点上使用LDAP用户进行连接,或者可以创建ldap用户。
就我而言,我有来自ldap
数据库的testuser1
。
[root@client ~]# id testuser1 uid=1001(testuser1) gid=1001 groups=1001
接下来,我将使用该用户进行连接
login as: testuser1 [email protected]'s password: Welcome to server1 This file was created on 2017-02-01 Go away if you have no business being here Contact [email protected] if anything is wrong Activate the web console with: systemctl enable --now cockpit.socket Last login: Thu May 23 12:49:01 2017 from 10.0.2.2 [testuser1@client ~]$
因此,我们的客户端能够正确连接ldap服务器。