如何在 Rocky Linux 9 上安装 OpenLDAP 服务器和客户端
OpenLDAP 是轻量级目录访问协议 (LDAP) 的软件实现。 OpenLDAP 是免费的开源软件,其 BSD 风格的许可证称为 OpenLDAP 公共许可证。其命令行驱动器 LDAP 软件可在大多数 Linux 发行版上使用,例如 CentOS、Ubuntu、Debian、SUSE 等。 OpenLDAP 是一套完整的 LDAP 服务器软件套件,其中包括 SLAPD(独立 LDAP 守护进程)、SLURPD(独立 LDAP 更新复制守护进程)以及一些用于管理 LDAP 服务器的实用程序和工具。 OpenLDAP 是一个高度可定制的 LDAP 服务器,支持所有主要的计算平台。
在本指南中,您将在 Rocky Linux 9 服务器上安装和设置 OpenLDAP。您将安装 OpenLDAP 服务器、手动配置 OpenLDAP 服务器,并在 OpenLDAP 服务器上启用安全 SSL/TLS。您还将通过 OpenLDAP 客户端和 SSSD(系统安全服务守护进程)将客户端计算机添加到 OpenLDAP 服务器。另外,通过 OpenLDAP 用户登录客户端计算机来验证您的安装。
先决条件
要完成本指南,您必须满足以下要求:
- 具有至少 4 GB RAM 和 2 个 CPU 且运行 Rocky Linux 9 系统的服务器 - 本示例使用主机名“ldap”和 fqdn“ldap.hwdomain.lan ”的 Rocky Linux'。
- 将用作客户端的计算机 - 此示例使用主机名为“客户端”的客户端计算机 Rocky Linux。
- 具有 sudo/root 管理员权限的非 root 用户。
- 在宽容模式下运行的 SELinux。
以下是本指南将使用的详细服务器:
Hostname IP Address Used as
-----------------------------------------
ldap 192.168.5.25 OpenLDAP Server
client 192.168.5.80 OpenLDAP Client
当这些要求准备就绪后,您现在可以开始 OpenLDAP 安装。
设置 FQDN 和 /etc/hosts
在开始 OpenLDAP 安装之前,您必须在目标服务器上设置正确的 fqdn(完全限定域名)和 /etc/hosts 文件。
输入以下“hostnamectl”命令来设置 OpenLDAP 服务器的 FQDN。在此示例中,OpenLDAP 服务器的 FQDN 将为“ldap.hwdomain.lan”。
sudo hostnamectl set-hostname ldap.hwdomain.lan
现在使用以下 nano 编辑器命令打开'/etc/hosts' 文件。
sudo nano /etc/hosts
将以下行添加到文件中,并确保更改详细主机名、FQDN 和 IP 地址。
# ip - fqdn - hostname
192.168.5.25 ldap.hwdomain.lan ldap
完成后保存并关闭文件。
现在输入以下命令来验证服务器的 FQDN 并确保 FQDN 指向正确的服务器 IP 地址。
sudo hostname -f
ping -c3 ldap.hwdomain.lan
成功后,您应该收到与此类似的输出 - OpenLDAP 服务器的 fqdn 是“ldap.hwdomain.lan”,它指向服务器 IP 地址“192.168.5.25 ” '。
现在转到下一步开始安装 OpenLDAP 服务器。
安装 OpenLDAP 服务器
在最新的 Rocky Linux 9 服务器上,OpenLDAP 软件包可在“plus”存储库中使用,但默认情况下未启用。
在本部分中,您将在 Rocky Linux 服务器上安装 OpenLDAP 服务器和客户端。但在此之前,您必须在系统上启用“plus”存储库。
输入以下'dnf config-manager'命令以启用'plus'存储库。然后,验证系统上的存储库列表。
sudo dnf config-manager --set-enabled plus
sudo dnf repolist
您应该收到如下输出 - Rocky Linux 'plus' 存储库已启用。
现在输入以下“dnf install”命令来安装 OpenLDAP 服务器和客户端软件包。出现提示时,输入 y 进行确认,然后按 ENTER 继续。
sudo dnf install openldap-servers openldap-clients
安装 OpenLDAP 后,输入以下 systemctl 命令实用程序来启动并启用 OpenLDAP 服务“slapd”。这样,OpenLDAP 应该以默认配置运行并启用,这意味着它将在系统启动时自动启动。
sudo systemctl start slapd
sudo systemctl enable slapd
通过输入以下命令验证 OpenLDAP 服务状态。
sudo systemctl status slapd
输出“活动(正在运行)”确认 OpenLDAP 服务“slapd”正在运行。输出“...enabled..” 确认 OpenLDAP 将在系统启动时自动启动。
安装并运行 OpenLDAP 服务器后,您将设置防火墙以添加 LDAP 和 LDAPS 服务,以确保两个服务端口都可以从网络外部访问。
设置防火墙
在本部分中,您将设置防火墙以打开 LDAP 和 LDAPS 服务,并确保这两种服务都可以从外部网络访问。
输入以下“firewall-cmd” 命令将 LDAP 和 LDAPS 服务添加到 firewalld。然后,重新加载firewalld以应用更改。输出“成功”确认新规则已添加到防火墙中。
sudo firewall-cmd --add-service={ldap,ldaps} --permanent
sudo firewall-cmd --reload
现在运行以下“firewall-cmd”命令来验证firewalld 上启用的服务列表。
sudo firewall-cmd --list-all
当您在“服务”部分看到“ldap”和“ldaps”时,这意味着添加到防火墙的这两个服务都可以访问来自外部网络。
配置基本 OpenLDAP 服务器
在本部分中,您将配置 OpenLDAP 服务器安装。您将为 OpenLDAP 服务器设置密码并将一些基本架构导入 OpenLDAP 服务器。这些操作可以通过 OpenLDAP 服务器包提供的“ldapadd”实用程序来完成。
开始之前,输入以下“slappasswd”命令来生成 OpenLDAP 服务器的密码哈希。输入密码并重复,然后复制生成的哈希密码。
slappasswd
现在使用以下 nano 编辑器命令创建一个新的 LDIF 文件“changerootpass.ldif”。 LDIF 或 LDAP 数据交换格式是一种文件格式,包含一组 LDAP 条目记录,可用于更新 LDAP 服务器。
nano changerootpass.ldif
将以下内容添加到文件中,并确保使用您生成的密码更改哈希密码。
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}Uf13AbVHOcs/aDWJOvDxxfBSl3omExG2
完成后保存并关闭文件。
现在运行以下“ldapadd”命令,通过“changerootpass.ldif”文件更改 OpenLDAP root 密码。
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f changerootpass.ldif
成功后,您应该收到类似于以下内容的输出:
接下来,输入以下“ldapadd”命令以导入 OpenLDAP 服务器的基本架构。
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
输出 :
最后,您现在可以输入以下 systemctl 命令实用程序来重新启动 OpenLDAP 服务并应用更改。
sudo systemctl restart slapd
至此,您现在已经配置了 root 密码并为 OpenLDAP 服务器导入了基本架构。在下一步中,您将在 OpenLDAP 服务器上设置默认 DN(专有名称)以及基本组和组织条目。
配置基本域
在本节中,您将通过 LDIF 文件为 OpenLDAP 服务器设置基本 DN(域名)。在此示例中,OpenLDAP 的基本 DN 是'hwdomain.lan'。
使用以下 nano 编辑器命令创建一个新文件“setdomain.ldif”。
nano setdomain.ldif
将以下内容添加到文件中,并确保将基本 DN 'dc=hwdomain,dc=lan' 更改为您的域。另外,请务必使用生成的 root 密码更改哈希密码。
# setdomain.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=Manager,dc=hwdomain,dc=lan" read by * none
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=hwdomain,dc=lan
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=hwdomain,dc=lan
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}Uf13AbVHOcs/aDWJOvDxxfBSl3omExG2
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=hwdomain,dc=lan" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=hwdomain,dc=lan" write by * read
完成后保存并关闭文件。
现在输入以下“ldapmodify”命令为您的 OpenLDAP 服务器应用新的 dn。在此,您使用了“ldapmodify”而不是“ldapadd”,因为您想要修改当前的 OpenLDAP 服务器。
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f setdomain.ldif
成功后,您应该收到这样的输出。
您现在可以输入以下“ldapsearch”命令来验证 OpenLDAP 服务器的基本 DN。 OpenLDAP 服务器的基本 dn 存储在“namingContexts”中。
sudo ldapsearch -H ldap:// -x -s base -b "" -LLL "namingContexts"
成功后,您应该获得 OpenLDAP 服务器的基本 dn。本示例中 OpenLDAP 服务器的基本 dn 为 'dn=hwdomain,dn=lan' 或 'hwdomain.lan'。
配置基本 DN 后,接下来将设置基本组和组织,您可以在其中存储 OpenLDAP 用户。实现方式与设置基本 dn 的方式类似。
配置基本组和组织
在此示例中,您将为 OpenLDAP 服务器设置两个基本组。您将通过 LDIF 文件添加两个名为“人员”和“组”的“ou”或组织单位。您将在这些 ou、People 和 Group 中存储所有 OpenLDAP 用户。
输入以下 nano 编辑器命令以创建新文件“addou.ldif”。
nano addou.ldif
将以下内容添加到文件中,并确保将基本域名更改为您的域。
# addou.ldif
dn: dc=hwdomain,dc=lan
objectClass: top
objectClass: dcObject
objectclass: organization
o: My hwdomain Organisation
dc: hwdomain
dn: cn=Manager,dc=hwdomain,dc=lan
objectClass: organizationalRole
cn: Manager
description: OpenLDAP Manager
dn: ou=People,dc=hwdomain,dc=lan
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=hwdomain,dc=lan
objectClass: organizationalUnit
ou: Group
完成后保存并关闭文件。
接下来,输入以下“ldapadd”命令来添加 ou“People”和“Group”。当提示输入密码时,输入 OpenLDAP 服务器密码。
sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f addou.ldif
当操作成功时,您应该收到与此类似的输出。
通过在终端中输入以下“ldapsearch”命令来验证 OpenLDAP 服务器上的“ou”列表。
sudo ldapsearch -x -b "dc=hwdomain,dc=lan" ou
您应该看到名为“People”和“Group”的两个 ou 已添加并在 OpenLDAP 服务器上可用。
至此,您已经为 OpenLDAP 服务器添加并配置了基本 dn 或域名、两个 ou 或组织单位。在下一步中,您将学习如何通过 LDIF 文件添加新用户。
添加新用户到 OpenLDAP 服务器
在本部分中,您将通过 LDIF 文件在 OpenLDAP 中添加和设置新用户。步骤很简单,您只需通过“slappasswd”生成哈希密码,然后创建一个新的 LDIF 文件用于添加用户,然后运行“ldapadd”命令将新用户添加到OpenLDAP 服务器。
首先,输入以下“slappasswd”命令为新用户生成哈希密码。输入密码并重复,然后复制生成的密码。
slappasswd
现在输入以下 nano 编辑器命令来创建新文件“adduser.ldif”。
nano adduser.ldif
将以下内容添加到文件中,并确保更改用户名、密码和默认 dn。在此示例中,您将创建一个名为“rocky”的新用户,并将成为“People”组织的一部分。
# adduser.ldif
dn: uid=rocky,ou=People,dc=hwdomain,dc=lan
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: rocky
sn: temp
userPassword: {SSHA}cDG5NuQd+rYn6rWh1r5UnysUOwJlt1uk
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/rocky
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
dn: cn=rocky,ou=Group,dc=hwdomain,dc=lan
objectClass: posixGroup
cn: rocky
gidNumber: 2000
memberUid: rocky
完成后保存并关闭文件。
现在输入以下“ldapadd”命令,通过“adduser.ldif”文件添加新用户。
sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f adduser.ldif
出现提示时输入 OpenLDAP 服务器,成功后,您应该收到如下输出。
输入以下“ldapsearch”命令来验证新用户“rocky”并确保其已添加并在您的 OpenLDAP 服务器上可用。此命令将打印 ou“People”上的所有可用用户。
sudo ldapsearch -x -b "ou=People,dc=hwdomain,dc=lan"
像这样的输出确认 OpenLDAP 用户“rocky”已创建并添加到 OpenLDAP 服务器。
使用 SSL/TLS 保护 OpenLDAP
在本部分中,您将在 OpenLDAP 服务器上设置并启用安全 LDAPS。您将生成 OpenLDAP 服务器将使用的 SSL/TLS 证书,然后设置 OpenLDAP 以使用 SSL/TLS 证书并启用安全 LDAPS 协议。
输入以下“openssl”命令以生成 SSL/TLS 自签名证书。输入有关您的证书的详细信息,完成后,您的证书将存储在“/etc/pki/tls/”目录中。
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/pki/tls/ldapserver.key \
-out /etc/pki/tls/ldapserver.crt
生成 SSL/TLS 证书后,将 SSL/TLS 证书的所有权更改为用户“ldap”和组“ldap”。这将允许 OpenLDAP 访问证书文件。
sudo chown ldap:ldap /etc/pki/tls/{ldapserver.crt,ldapserver.key}
接下来,使用以下 nano 编辑器命令创建一个新的 LDIF 文件“tls.ldif”。
sudo nano tls.ldif
将以下配置添加到文件中。如果您使用自定义证书,请务必更改详细信息证书文件及其完整路径。
# tls.ldif
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/pki/tls/ldapserver.crt
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/pki/tls/ldapserver.key
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/pki/tls/ldapserver.crt
完成后保存并关闭文件。
接下来,输入以下“ldapadd”命令以在 OpenLDAP 服务器上应用 SSL/TLS。
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif
成功后,您应该收到这样的输出。
现在使用以下 nano 编辑器命令打开 OpenLDAP 服务器配置'/etc/openldap/ldap.conf'。
sudo nano /etc/openldap/ldap.conf
取消注释“TLS_CACERT”参数,并使用生成的 CA 证书文件的路径更改该值。然后,添加新参数“TLS_REQCERT”并将其设置为“从不”,这是因为您使用的是自签名证书。
TLS_CACERT /etc/pki/tls/ldapserver.crt
# because you're using Self-Signed Certificate - you must add this
TLS_REQCERT never
完成后保存并关闭文件。
现在输入以下 systemctl 命令实用程序以重新启动 OpenLDAP 服务“slapd”并应用更改。
sudo systemctl restart slapd
至此,OpenLDAP 服务器现在可以在 LDAP 和 LDAPS 协议上运行。输入以下命令以验证 OpenLDAP 服务器上是否启用了 LDAPS。
sudo ldapsearch -x -b dc=hwdomain,dc=lan -ZZ
启用 LDAPS 后,您应该会收到所有 OpenLDAP 服务器设置的输出。参数“-ZZ”将强制您使用安全 LDAPS 进行连接。
现在您已经在 OpenLDAP 服务器上配置并启用了安全 LDAPS。在下一步中,您将学习如何将 Linux 主机添加到 OpenLDAP 服务器。
将客户端计算机添加到 OpenLDAP 服务器
在本部分中,您将通过 OpenLDAP 客户端和 SSSD 服务将客户端主机添加到 OpenLDAP 服务器。在此示例中,您将添加主机名为“client”、IP 地址为“192.168.5.80”的 Rocky Linux 客户端计算机。
以下是将主机添加到 OpenLDAP 服务器的一些详细步骤:
- 设置 fqdn 和 /etc/hosts 文件。
- 安装 OpenLDAP 客户端和 SSSD 软件包。
- 启用 SSSD 作为身份验证源。
- 配置 OpenLDAP 客户端和 SSSD 服务。
现在让我们开始将 Rocky Linux 客户端计算机添加到 OpenLDAP 服务器。
设置 FQDN 和 /etc/hosts
输入以下“hostnamectl”命令来设置客户端计算机的 FQDN。
sudo hostnamectl set-hostname client.hwdomain.lan
现在使用以下 Nano 编辑器打开 '/etc/hosts' 文件。
sudo nano /etc/hosts
将以下行添加到文件中,并确保使用 OpenLDAP 服务器详细信息更改详细主机名和 IP 地址。
# ip - fqdn - hostname
192.168.5.25 ldap.hwdomain.lan ldap
完成后保存并关闭文件。
安装 OpenLDAP 客户端和 SSSD 软件包
接下来,输入以下 dnf 命令以在 Rocky Linux 客户端计算机上启用“plus”存储库。然后,使用以下命令验证已启用的存储库的列表。
sudo dnf config-manager --set-enabled plus
sudo dnf repolist
这样的输出确认了“plus”存储库已添加并启用。
现在通过“dnf install”命令安装 OpenLDAP 客户端和 SSSD(系统安全服务守护进程)软件包,如下所示。
sudo dnf install openldap-clients sssd sssd-ldap oddjob-mkhomedir
出现提示时,输入 y 进行确认,然后按 ENTER 继续。
安装 OpenLDAP 客户端和 SSSD 软件包后,您就可以设置并连接到 OpenLDAP 服务器了。
启用 SSSD 身份验证源
输入以下“authselect”命令以在 Rocky Linux 客户端上启用“sssd”身份验证源。参数“with-mkhomedir”允许经过 SSSD 身份验证的用户自动创建主目录。
sudo authselect select sssd with-mkhomedir --force
您应该收到与此类似的输出,它还指示您启动并启用“oddjobd”服务。
接下来,输入以下“systemctl”命令实用程序来启动并启用“oddjobd”服务。然后,验证oddjobd服务以确保该服务正在运行。
sudo systemctl enable --now oddjobd.service
sudo systemctl status oddjobd.service
下面的输出确认 oddjobd 服务已启用,并将在系统启动时自动启动。并且oddjobd服务的状态是正在运行。
启用 sssd 身份验证源并运行 oddjobd 服务后,您现在将 OpenLDAP 服务器添加到您的配置中。
配置 OpenLDAP 客户端和 SSSD 服务
使用以下 nano 编辑器命令打开配置文件“/etc/openldap/ldap.conf”。
sudo nano /etc/openldap/ldap.conf
取消注释“URI”和“BASE”参数,并使用您的 OpenLDAP 服务器域名和基本域更改值。
URI ldap://ldap.hwdomain.lan/
BASE dc=hwdomain,dc=lan
完成后保存并退出文件。
接下来,使用以下 nano 编辑器命令创建一个新的 SSSD 配置文件“/etc/sssd/sssd.conf”。
sudo nano /etc/sssd/sssd.conf
将以下行添加到文件中,并确保更改 OpenLDAP 服务器的 'ldap_uri' 和 'ldap_search_base' 参数的详细信息。
[domain/default]
id_provider = ldap
autofs_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://ldap.hwdomain.lan/
ldap_search_base = dc=hwdomain,dc=lan
ldap_id_use_start_tls = True
ldap_tls_cacertdir = /etc/openldap/certs
cache_credentials = True
ldap_tls_reqcert = allow
[sssd]
services = nss, pam, autofs
domains = default
[nss]
homedir_substring = /home
完成后保存并关闭文件。
现在通过下面的 chmod 命令将 SSSD 配置文件 '/etc/sssd/sssd.conf' 的权限更改为 600。
sudo chmod 0600 /etc/sssd/sssd.conf
最后,输入以下 systemctl 命令实用程序来启动并启用 SSSD 服务。
sudo systemctl start sssd
sudo systemctl enable sssd
现在输入以下命令来验证 SSSD 服务以确保该服务正在运行。
sudo systemctl status sssd
下面的输出确认 SSSD 服务正在运行并启用,这意味着 SSSD 服务将在系统启动时自动启动。
至此,您现在已通过 OpenLDAP 客户端和 SSSD 将 Rocky Linux 客户端计算机添加到 OpenLDAP 服务器。在下一步中,您将通过您创建的 OpenLDAP 用户“rocky”登录客户端计算机来验证 OpenLDAP 服务器和 OpenLDAP 客户端。
通过 OpenLDAP 用户连接到客户端计算机
在本部分中,您将通过 OpenLDAP 用户登录客户端计算机来验证 OpenLDAP 服务器和 OpenLDAP 客户端的安装。因此,您将使用在 OpenLDAP 服务器上创建的用户“rocky”登录到 IP 地址为“192.168.5.80”的客户端计算机。
从 OpenLDAP 服务器中,输入以下“ssh”命令以登录到“192.168.5.80”上的客户端计算机。输入yes确认客户端计算机的SSH指纹,然后输入OpenLDAP用户“rocky”的密码。
ssh [email
成功后,您应该登录到客户端计算机 shell。现在输入以下命令来验证当前用户。
id
whoami
输出“rocky”确认您已通过 OpenLDAP 用户“rocky”登录到客户端计算机。至此,您在 Rocky Linux 9 上的 OpenLDAP 服务器安装就完成了。
结论
在本指南中,您已在 Rocky Linux 9 服务器上安装了 OpenLDAP 服务器。您还使用自签名 SSL/TLS 证书保护 OpenLDAP 安装的安全。您还了解了一些 OpenLDAP 实用程序的基本用法,例如“ldapadd”用于添加新条目(例如用户和新配置)、“ldapsearch”用于搜索 OpenLDAP 服务器上可用的条目,以及“ldapmodify”实用程序用于编辑OpenLDAP 服务器的当前配置。
除此之外,您还通过 OpenLDAP 客户端和 SSSD(系统安全服务守护进程)将 Rocky Linux 客户端计算机添加并配置到 OpenLDAP 服务器。然后,您还通过您创建的 OpenLDAP 用户登录到客户端计算机来验证 OpenLDAP 服务器和客户端的安装。
有了这个,您现在可以将更多客户端计算机添加到 OpenLDAP 服务器,以便您可以通过 OpenLDAP 进行集中用户管理。您还可以将 OpenLDAP 服务器与您的应用程序集成。要了解更多详细信息,请查看 OpenLDAP 的官方文档。