在Fedora 32/31/30上安装和配置SSSD以进行OpenLDAP身份验证

在教程中,您将学习如何在Fedora 32/31/30上安装和配置用于OpenLDAP身份验证的SSSD。 固态硬盘 是系统安全服务守护程序(SSSD)的首字母缩写。 “ SSSD的主要功能是通过可以为系统提供缓存和脱机支持的通用框架,提供对本地或远程身份和身份验证资源的访问。它提供了几种接口,包括NSS和PAM模块或D-Bus接口”。

使用SSSD进行远程身份和身份验证的好处包括;

  • 减少身份和身份验证服务器上的负载:SSSD与身份和身份验证服务器联系后,便缓存该信息,因此,随后从缓存中提取此信息的请求,从而减轻了后端服务器的负载。
  • 离线认证:可以将SSSD配置为在指定的时间段内保留用户身份和凭据的缓存。即使远程服务器或SSSD客户端处于脱机状态,这也使用户能够对资源进行身份验证。
  • 单个用户帐户: SSSD凭证和帐户信息缓存使为脱机身份验证而同时维护中央帐户和本地用户帐户的需求无效。

在继续阅读本指南时,我们假设您已经安装了OpenLDAP服务器并正在运行。如果是,请按照下面的链接在CentOS 8上安装和配置OpenLDAP服务器。

在CentOS 8上安装和设置OpenLDAP

在Fedora 32/31/30上安装和配置用于OpenLDAP认证的SSSD

运行系统更新

在继续之前,请确保系统软件包是最新的。

dnf update

在Fedora 32/31/30上安装SSSD

运行以下命令以在Fedora 32/31/30上安装SSSD和其他SSSD工具。 (默认情况下可能已安装)。

dnf install sssd sssd-tools

在Fedora 32/31/30上配置SSSD进行OpenLDAP认证

一旦完成SSSD及其工具的安装,就可以对其进行配置以进行OpenLDAP身份验证。

请注意,默认情况下,SSSD不附带配置文件。因此,您需要创建SSSD配置(sssd.conf, 默认情况下)文件位于配置目录下, /etc/sssd 定义您的OpenLDAP身份验证设置。

vim /etc/sssd/sssd.conf

以下是我们的示例SSSD配置详细信息。确保在以下配置中进行相关更改,以反映您的OpenLDAP环境设置。

[sssd]
services = nss, pam
config_file_version = 2
domains = default

[nss]

[pam]
offline_credentials_expiration = 60

[domain/default]
ldap_id_use_start_tls = True
cache_credentials = True
ldap_search_base = dc=ldapmaster,dc=kifarunix-demo,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = ldap
sudo_provider = ldap
ldap_uri = ldap://ldapmaster.kifarunix-demo.com
ldap_default_bind_dn = cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com
ldap_default_authtok = [email protected]
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/pki/tls/cacert.crt
ldap_tls_cacertdir = /etc/pki/tls
ldap_search_timeout = 50
ldap_network_timeout = 60
ldap_access_order = filter
ldap_access_filter = (objectClass=posixAccount)

如果要通过OpenLDAP提供SUDO权限,则SSSD应该包括SUDO服务和SUDOERS搜索库,然后,SSSD配置文件应如下所示:

[sssd]
services = nss, pam, sudo
config_file_version = 2
domains = default

[sudo]

[nss]

[pam]
offline_credentials_expiration = 60

[domain/default]
ldap_id_use_start_tls = True
cache_credentials = True
ldap_search_base = dc=ldapmaster,dc=kifarunix-demo,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = ldap
sudo_provider = ldap
ldap_uri = ldap://ldapmaster.kifarunix-demo.com
ldap_default_bind_dn = cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com
ldap_default_authtok = [email protected]
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/pki/tls/cacert.crt
ldap_tls_cacertdir = /etc/pki/tls
ldap_search_timeout = 50
ldap_network_timeout = 60
ldap_sudo_search_base = ou=SUDOers,dc=ldapmaster,dc=kifarunix-demo,dc=com
ldap_access_order = filter
ldap_access_filter = (objectClass=posixAccount)

有关SSSD配置中使用的所有选项/参数的详细信息,请参阅, man sssd.conf

请点击以下链接,了解如何配置OpenLDAP以提供SUDO权限来验证客户端。

如何通过OpenLDAP服务器配置SUDO

在Fedora 32/31/30上安装OpenLDAP CA证书

SSSD要求对通信通道进行加密。因此,必须使用SSL配置OpenLDAP(uri使用 ldaps://)或TLS(已使用uri ldap://)。

如果您使用SSL配置了OpenLDAP(LDAP正在侦听端口636),运行以下命令以下载CA证书;

openssl s_client -connect ldapmaster.kifarunix-demo.com:636 -showcerts < /dev/null | openssl x509 -text | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

如果您使用TLS配置了OpenLDAP(LDAP正在侦听端口389),运行以下命令以下载CA证书;

openssl s_client -connect ldapmaster.kifarunix-demo.com:389 -starttls ldap -showcerts < /dev/null | openssl x509 -text | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

证书显示在标准输出上。

-----BEGIN CERTIFICATE-----
MIIDvzCCAqegAwIBAgIUc8imlOVhEej453dXtvacn7krg1MwDQYJKoZIhvcNAQEL
BQAwbzELMAkGA1UEBhMCS0UxDDAKBgNVBAgMA05haTEMMAoGA1UEBwwDTWFpMRww
...
...
Uy7ivNi2PL6mBwxMpyi0zTopqTXSvi54APm48dd0JPsGLTIgPMc1WvaN7TsUeIBs
Igf9K1e9M0Q+j2XEsTeCYVU/v0Jt0kER0+V/NM0IrDOX+6kRz6DNsZrwcMEf5Yvp
ARWZ
-----END CERTIFICATE-----

您需要复制此证书并将其安装在该行指定的文件中, ldap_tls_cacert = /etc/pki/tls/cacert.crt

vim /etc/pki/tls/cacert.crt

将证书粘贴到此处;

-----BEGIN CERTIFICATE-----
MIIDvzCCAqegAwIBAgIUc8imlOVhEej453dXtvacn7krg1MwDQYJKoZIhvcNAQEL
BQAwbzELMAkGA1UEBhMCS0UxDDAKBgNVBAgMA05haTEMMAoGA1UEBwwDTWFpMRww
...
...
Uy7ivNi2PL6mBwxMpyi0zTopqTXSvi54APm48dd0JPsGLTIgPMc1WvaN7TsUeIBs
Igf9K1e9M0Q+j2XEsTeCYVU/v0Jt0kER0+V/NM0IrDOX+6kRz6DNsZrwcMEf5Yvp
ARWZ
-----END CERTIFICATE-----

保存并退出文件。

在Fedora 32/31/30上配置NSS和PAM进行SSSD身份验证

更新NSS和PAM以使用SSSD管理身份验证资源。 Authselect 是一个实用程序,可简化用户身份验证的配置,尤其是在使用SSSD进行身份验证时。

在Fedora 32/31/30上配置SSSD配置文件

Authselect命令用于创建SSSD配置文件时,请修改以下文件;

  • /etc/pam.d/system-auth
  • /etc/pam.d/password-auth
  • /etc/pam.d/fingerprint-auth
  • /etc/pam.d/smartcard-auth
  • /etc/pam.d/postlogin
  • /etc/nsswitch.conf

因此,请备份这些文件,以防万一。

cp -r /etc/pam.d{,.original}
cp /etc/nsswitch.conf{,.original}

创建一个SSSD配置文件。此命令将覆盖nsswitch映射。

authselect select sssd

接下来,如果您已通过OpenLDAP配置SUDO,则系统将从SSSD / OpenLDAP获取sudo权限,因此请编辑 /etc/nsswitch.conf 包括下面的行。

sudoers:    files sss

您可以简单地将该行回显到配置文件中,如下所示;

echo "sudoers:    files sss" >> /etc/nsswitch.conf

配置登录时自动创建主目录

要在首次登录时为用户启用自动主目录创建功能,您需要安装 oddjob-mkhomedir,它提供了 pam_oddjob_mkhomedir 模块在登录时为用户创建主目录。

dnf install oddjob-mkhomedir

启动并启用oddjobd在系统引导上运行。

systemctl enable --now oddjobd

加载 pam_oddjob_mkhomedir PAM身份验证文件中的模块 /etc/pam.d/system-auth 启用自动主目录创建。

echo "session optional pam_oddjob_mkhomedir.so skel=/etc/skel/ umask=0022" >> /etc/pam.d/system-auth

重新启动odbjobd。

systemctl restart oddjobd

在Fedora 32/31/30上运行SSSD

在启动SSSD之前,您需要检查配置中是否存在任何拼写错误或权限。

sssctl config-check
File ownership and permissions check failed. Expected root:root and 0600.

根据检查输出,将读取/写入访问权限设置为 /etc/sssd/ 为所有者(根)。

chown -R root:root /etc/sssd
chmod 600 -R /etc/sssd

现在完成配置。启动并启用SSSD在系统启动时运行。

systemctl enable --now sssd

检查状态。

systemctl status sssd
● sssd.service - System Security Services Daemon
     Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-08-27 19:31:25 EAT; 2h 22min ago
   Main PID: 663 (sssd)
      Tasks: 3 (limit: 2332)
     Memory: 7.6M
        CPU: 713ms
     CGroup: /system.slice/sssd.service
             ├─663 /usr/sbin/sssd -i --logger=files
             ├─806 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
             └─807 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files

Aug 27 19:30:58 fedora32.kifarunix-demo.com systemd[1]: Starting System Security Services Daemon...
Aug 27 19:31:24 fedora32.kifarunix-demo.com sssd[663]: Starting up
Aug 27 19:31:24 fedora32.kifarunix-demo.com be[implicit_files][806]: Starting up
Aug 27 19:31:25 fedora32.kifarunix-demo.com nss[807]: Starting up
Aug 27 19:31:25 fedora32.kifarunix-demo.com systemd[1]: Started System Security Services Daemon.

通过SSSD验证OpenLDAP身份验证

已完成在Fedora 32/31/30上用于OpenLDAP认证的SSSD的安装和配置。现在是时候通过OpenLDAP验证系统身份验证了。

首先,确认您可以使用以下命令在系统上看到LDAP用户名 id 命令。

id janedoe
uid=10010(janedoe) gid=10010(janedoe) groups=10010(janedoe)

确认完成后,您可以验证登录名。您可以在台式机系统上使用SSH或GUI登录。

ssh -l janedoe localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:JyAO5/n9crE8qa923r0W0Ocw47LuVJFGuLZvnwRUM8k.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
[email protected]'s password: 
[[email protected] ~]$
[[email protected] ~]$ whoami
janedoe
[[email protected] ~]$ pwd
/home/janedoe
[[email protected] ~]$

太棒了!!这就是在Fedora 32/31/30上安装和配置SSSD以便进行OpenLDAP身份验证的全部过程。

Sidebar