RHEL/CentOS 8配置ldap客户端的8个简单步骤

时间:2020-01-09 10:41:11  来源:igfitidea点击:

在本教程中,将介绍在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-clientssssd和其他相关的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

我们可以根据环境修改值。
其中我提供了BaseCDNldap_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 neverTLS_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客户端的步骤。
最后一步是重新启动/启动sssdoddjobd服务

[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服务器。