在 RHEL 中配置身份验证和授权
使用 SSSD、authselect 和 sssctl 配置身份验证和授权
摘要
authselect 和 sssctl 等工具支持您配置 SSSD、可插拔验证模块(PAM)和名称服务交换(NSS)。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 单击顶部导航栏中的 Create。
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 系统身份验证简介 复制链接链接已复制到粘贴板!
安全网络环境的基机是确保只有授权用户才能访问该系统。身份验证在授予访问权限前验证用户身份。
在任何 Red Hat Enterprise Linux 系统上,各种服务都可用于创建和管理用户身份。这包括本地系统文件、连接到 Kerberos 或 Samba 等大型身份域的服务,或者创建这些域的工具。
1.1. RHEL 中的身份验证方法 复制链接链接已复制到粘贴板!
身份验证是确认身份的过程。在网络交互中,身份验证涉及确保一方可以确认另一个方的身份。有许多可以通过网络使用身份验证的方式,如简单密码、证书、无密码方法、一次性密码(OTP)令牌或生物特征扫描。
授权定义经过身份验证的用户可以访问或执行的操作。
身份验证要求实体提供某种凭据来验证其身份。所需的凭证类型由正在使用的身份验证机制定义。
系统中本地用户的身份验证类型
- 基于密码的身份验证
- 几乎所有软件都允许用户通过提供可识别的用户名和密码来进行身份验证。这也被称为简单身份验证。
- 基于证书的身份验证
- 基于证书的客户端身份验证是安全套接字层(SSL)协议的一部分。客户端对随机生成的数据进行数字签名,并通过网络发送证书和签名的数据。服务器验证签名,并确认证书的有效性。
- Kerberos 身份验证
- Kerberos 建立一个短期凭证系统,称为票据授予票据(TGT)。用户出示凭证,即用户名和密码,其识别用户,并向系统指明用户可以发布票据。然后,TGT 可以被反复使,来请求对其他服务(如网站和电子邮件)的访问票据。使用 Kerberos 的身份验证可允许用户以这种方式只进行一次身份验证过程。
- 基于智能卡的身份验证
这是基于证书的身份验证的变体。智能卡(或令牌)存储用户证书 ; 当用户将令牌插入系统时,系统会读取证书并授予访问权限。使用智能卡的单点登录需要经过三个步骤:
- 用户将智能卡插入到读卡器中。Red Hat Enterprise Linux 上的可插拔验证模块(PAM)检测插入的智能卡。
- 系统将证书映射到用户条目,然后将智能卡上提供的证书(其使用私钥进行了加密,如基于证书的身份验证中所述)与用户条目中存储的证书进行比较。
- 如果证书针对密钥分发中心(KDC)成功进行了验证,则允许用户登录。
基于智能卡的身份验证构建在 Kerberos 构建的简单身份验证层上,方法是将证书添加为额外的识别机制,以及添加物理访问要求。
- 一次性密码身份验证
- 一次性密码可为您的身份验证安全性增加一步。身份验证将您的密码与自动生成的一次性密码结合使用。
- 外部身份提供者
- 您可以将用户与支持 OAuth 2 设备授权流的外部身份提供者(IdP)关联。当这些用户使用 RHEL 9.1 或更高版本中提供的 SSSD 版本进行身份验证时,它们在外部 IdP 执行身份验证和授权后接收带有 Kerberos 票据的 RHEL 身份管理(IdM)单点登录功能。
1.2. RHEL 中的单点登录概述 复制链接链接已复制到粘贴板!
如果没有中央身份存储,每个应用都会维护自己的用户凭据。因此,用户必须为每个他们访问的服务或应用程序输入密码。
通过配置单点登录(SSO),管理员创建单个密码存储。然后,用户可以使用单个密码登录,并获得对所有网络资源的访问权限。
Red Hat Enterprise Linux 支持适用于多个资源的 SSO,包括登录工作站、解锁屏幕保存器,以及使用 Mozilla Firefox 访问安全 Web 页面。通过其他可用的系统服务,如 Privileged Access Management (PAM)、名称服务交换(NSS)和 Kerberos,其他系统应用程序可以被配置为使用这些身份源。
SSO 是方便用户和服务器和网络的另一个安全层。在安全有效身份验证时隐藏 SSO。RHEL 提供了两个启用 SSO 的身份验证机制:
- 通过 Kerberos 域和活动目录域的基于 Kerberos 的身份验证
- 基于智能卡的身份验证
这两种方法都创建集中式身份存储(通过公共密钥基础架构中的 Kerberos 域或证书颁发机构)和本地系统服务,然后使用这些身份域而不是维护多个本地存储。
1.3. 可用于本地用户身份验证的服务 复制链接链接已复制到粘贴板!
所有 Red Hat Enterprise Linux 系统都包括为本地系统上本地用户配置身份验证的服务。它们是:
- 身份验证设置
-
身份验证配置工具
authselect为系统设置不同的身份后端和身份验证的方法(如密码、指纹或智能卡)。
-
身份验证配置工具
- 身份后端设置
- 安全系统服务守护进程(SSSD)设置多个身份提供程序,主要是基于 LDAP 的目录,如 Microsoft Active Directory 或 IdM。本地系统和应用程序都可以使用这些身份提供程序进行身份验证。SSSD 缓存密码和票据,允许通过重复使用凭证进行离线身份验证和单点登录。
-
realmd服务是一个命令行工具,允许您配置身份验证后端,它是 IdM 的 SSSD。realmd服务根据 DNS 记录检测可用的 IdM 域,配置 SSSD,然后将系统加入到域中。 -
名称服务切换(NSS)是一种用于低级系统调用的机制,其返回有关用户、组或主机的信息。NSS 确定应使用什么源,也就是哪个模块来获取所需的信息。例如,用户信息可以位于传统的 UNIX 文件中,如
/etc/passwd文件,或在基于 LDAP 的目录中,而主机地址则可从文件读取,如/etc/hosts文件或 DNS 记录;NSS 查找信息所存储的位置。
- 身份验证机制
- 可插拔验证模块(PAM)提供了一个系统来设置身份验证策略。使用 PAM 进行身份验证的应用程序加载控制身份验证不同方面的不同模块;应用程序使用的 PAM 模块取决于应用程序是如何配置的。可用的 PAM 模块包括 Kerberos、Winbind、SSSD 或基于本地 UNIX 文件的身份验证。
也提供了其他服务和应用程序,但这些是常见的。
第 2 章 使用 authselect 配置用户身份验证 复制链接链接已复制到粘贴板!
authselect 是一个实用程序,允许您通过选择特定的配置集来配置系统身份和身份验证源。配置集(profile)是一组文件,用于描述可插拔验证模块(PAM)和网络安全服务(NSS)的配置。您可以使用 default 配置集设置或创建自定义配置集。
2.1. authselect 的作用 复制链接链接已复制到粘贴板!
您可以使用 authselect 在 Red Hat Enterprise Linux 8 主机上配置用户身份验证。
您可以通过选择一个可用的配置集来配置身份信息和验证源和供应商:
-
默认
sssd配置集为使用 LDAP 身份验证的系统启用系统安全服务守护进程 (SSSD)。 -
winbind配置集为直接与 Microsoft Active Directory 集成的系统启用 Winbind 实用程序。 -
nis配置集确保了与传统网络信息服务 (NIS) 系统的兼容性。 -
minimal配置集只用于直接来自系统文件中的本地用户和组,它允许管理员删除不再需要的网络身份验证服务。
在为给定主机选择了一个 authselect 配置集后,配置集将应用于登录到主机的每个用户。
红帽建议在半集中式身份管理环境中使用 authselect,例如,如果您的机构使用 LDAP、Winbind 或 NIS 数据库来验证用户以在您的域中使用服务。
如果出现以下情况,您不需要使用 authselect :
-
您的主机是 Red Hat Enterprise Linux 身份管理(IdM)的一部分。使用
ipa-client-install命令将您的主机加入 IdM 域会自动在主机上配置 SSSD 身份验证。 -
您的主机通过 SSSD 成为活动目录的一部分。调用
realm join命令将您的主机加入 Active Directory 域会自动在您的主机上配置 SSSD 身份验证。
红帽建议不要更改 ipa-client-install 或 realm join 配置的 authselect 配置集。如果您需要修改它们,请在进行任何修改之前显示当前的设置,以便在需要时将它们恢复回来:
2.1.1. authselect 修改的文件和目录 复制链接链接已复制到粘贴板!
authselect 只修改一组有限的配置文件,以便更轻松地管理身份验证设置并进行故障排除。
|
| GNU C 库和其他应用使用此名称服务交换机 (NSS) 配置文件来确定从中获取一系列类别中的名称服务信息的来源,以及顺序。每个类别的信息都由一个数据库名来标识。 |
|
| Linux-PAM(可插拔验证模块)是处理系统中应用程序(服务)验证任务的模块系统。验证的特性是动态可配置的:系统管理员可以选择如何单独提供服务提供应用程序验证用户。
这些文件还包含以下信息:
|
|
|
此目录包含 |
2.1.2. /etc/nsswitch.conf 中的数据提供程序 复制链接链接已复制到粘贴板!
默认 sssd 配置集通过在 /etc/nsswitch.conf 中创建 sss 条目将 SSSD 设置为信息源:
这意味着,如果请求了有关这些项目之一的信息,系统首先会查找 SSSD:
-
passwd用于用户信息 -
group用户组群信息 -
netgroup用于 NISnetgroup信息 -
automount用于 NFS 自动挂载信息 -
services用于有关服务的信息
只有在 sssd 缓存和提供身份验证的服务器上找不到请求的信息,或者 sssd 没有运行时,系统才会查看本地文件,即 /etc/*。
例如,如果请求有关用户 ID 的信息,则首先在 sssd 缓存中搜索用户 ID。如果未在此处找到,则会查阅 /etc/passwd 文件。类似地,如果请求用户的组从属关系,则首先在 sssd 缓存中搜索它,并且仅在未找到时搜索 /etc/group 文件。
实际上,本地文件数据库通常不会被查阅。最重要的例外是 root 用户,它永远不会由 sssd 处理,而是由文件处理。
2.2. 选择 authselect 配置集 复制链接链接已复制到粘贴板!
作为系统管理员,您可以为特定主机选择 authselect 工具的配置集。该配置集将应用于登录到主机的每个用户。
先决条件
-
运行
authselect命令需要root凭证
步骤
选择适合您的身份验证供应商的
authselect配置集。例如,若要登录到使用 LDAP 的公司网络,请选择sssd。authselect select sssd
# authselect select sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 您可以通过在
authselect select sssd或authselect select winbind命令中添加以下选项来修改默认配置集设置,例如:-
with-faillock -
with-smartcard -
with-fingerprint
-
要查看可用选项的完整列表,请参阅 将脚本从 authconfig 转换为 authselect 或您系统上的
authselect-migration (7)手册页。
在完成 authselect select 过程前,请确定正确配置了与您的配置集相关的配置文件。例如,如果 sssd 守护进程没有正确配置并处于活动状态,则运行 authselect select 会导致只有本地用户可以使用 pam_unix 进行身份验证。
验证
验证
/etc/nsswitch.conf中是否存在 SSSD 的sss条目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
pam_sss.so条目中查看/etc/pam.d/system-auth文件的内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 修改可用的 authselect 配置集 复制链接链接已复制到粘贴板!
作为系统管理员,您可以修改一个默认配置集使其适合您的需要。
您可以修改 /etc/authselect/user-nsswitch.conf 文件中的任何项目,但以下除外:
-
passwd -
group -
netgroup -
automount -
services
随后运行 authselect select profile_name 会导致将允许的更改从 /etc/authselect/user-nsswitch.conf 传输到 /etc/nsswitch.conf 文件。不可接受的更改会被默认配置集的配置覆盖。
不要直接修改 /etc/nsswitch.conf 文件。
步骤
选择一个
authselect配置集,例如:authselect select sssd
# authselect select sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
按照您所需的更改编辑
/etc/authselect/user-nsswitch.conf文件。 应用
/etc/authselect/user-nsswitch.conf文件中的更改:authselect apply-changes
# authselect apply-changesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
-
查看
/etc/nsswitch.conf文件,以验证/etc/authselect/user-nsswitch.conf中的更改是否已在此传播。
2.4. 创建并部署您自己的 authselect 配置集 复制链接链接已复制到粘贴板!
作为系统管理员,您可以通过生成一个默认配置集的自定义副本来创建和部署自定义配置集。
这在修改一个现成的 authselect 配置集不足以满足您的需要时特别有用。当您部署自定义配置集时,配置集将应用于记录到给定主机上的每个用户。
流程
要创建自定义配置集,请运行
authselect create-profile命令。将<custom_profile> 替换为所需的配置集名称。例如,要基于 ready-madesssd配置集创建一个配置集,并有选项来自行配置/etc/nsswitch.conf文件中的项目,请使用以下命令:authselect create-profile <custom_profile> -b sssd --symlink-meta --symlink-pam
# authselect create-profile <custom_profile> -b sssd --symlink-meta --symlink-pam New profile was created at /etc/authselect/custom/<custom_profile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告如果您计划修改
/etc/authselect/custom/<custom_profile>/{password-auth,system-auth,fingerprint-auth,smartcard-auth,postlogin},然后在不使用--symlink-pam选项的情况下输入以上命令。这是为了确保在升级authselect-libs过程中修改持久。在命令中包含
--symlink-pam选项意味着 PAM 模板将是原始配置集文件的符号链接,而不是其副本;包括--symlink-meta选项意味着元文件(如 README 和 REQUIREMENTS)将是原始配置文件文件的符号链接,而不是其副本。这样可确保以后对原始配置集中的 PAM 模板和 meta 文件的所有更新都会反映在您的自定义配置集中。该命令在 /etc/
authselect/custom/ <custom_profile> / 目录中创建文件的副本。/etc/nsswitch.conf-
配置
/etc/authselect/custom/ <custom_profile> /nsswitch.conf文件。 运行带有 custom
/ <custom_profile> 的authselect select命令作为参数来选择自定义配置集:authselect select custom/<custom_profile>
# authselect select custom/<custom_profile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您的机器选择 <
;custom_profile> 配置集意味着,如果以后红帽更新了sssd配置集,您可以从所有更新中获益,但对/etc/nsswitch.conf文件的更新除外。例 2.1. 根据 sssd 配置集创建自定义配置集
您可以基于
sssd配置集创建一个配置集,它只查询/etc/hosts文件中的本地静态表查找主机名,而不在dns或myhostname数据库中查询。编辑
/etc/nsswitch.conf文件,修改以下行:hosts: files
hosts: filesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 基于
sssd创建自定义配置集,它排除了对/etc/nsswitch.conf的更改:authselect create-profile custom-sssd-profile -b sssd --symlink-meta --symlink-pam
# authselect create-profile custom-sssd-profile -b sssd --symlink-meta --symlink-pamCopy to Clipboard Copied! Toggle word wrap Toggle overflow 选择配置集:
authselect select custom/custom-sssd-profile
# authselect select custom/custom-sssd-profileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:检查选择自定义配置集是否有
-
根据所选的
sssd配置文件创建了/etc/pam.d/system-auth文件 原封不动保留
/etc/nsswitch.conf中的配置:hosts: files
hosts: filesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意运行
authselect selectsssd将会产生hosts: files dns myhostname
-
根据所选的
2.5. 将脚本从 authconfig 转换为 authselect 复制链接链接已复制到粘贴板!
如果您使用 ipa-client-install 或 realm join 加入域,您可以在脚本中安全地删除任何 authconfig 调用。如果不可能,将每个 authconfig 调用替换为其等同的 authselect 调用。要做到这一点请选择正确的配置集和适当的选项。另外,请编辑必要的配置文件:
-
/etc/krb5.conf -
/etc/sssd/sssd.conf(用于sssd配置文件)或/etc/samba/smb.conf(用于winbind配置集)
authconfig 选项和 authselect 配置文件的关系 以及 与 authconfig 选项等价的 Authselect 配置文件选项 显示了与 authconfig 选项等价的 authselect 。
| authconfig 选项 | authselect 配置集 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| authconfig 选项 | authselect 配置集特性 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
与 authconfig 命令等效的 authselect 命令示例显示了,Kickstart 对 authconfig 的调用转换为 Kickstart 对 authselect 的调用的示例。
| authconfig 命令 | authselect 等同的命令 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
2.6. 其他资源 复制链接链接已复制到粘贴板!
第 3 章 了解 SSSD 及其优势 复制链接链接已复制到粘贴板!
系统安全服务守护程序(SSSD)是一种用于访问远程目录和身份验证机制的系统服务。了解 SSSD 的工作原理、使用它的好处、如何处理配置文件,以及您可以配置的身份和身份验证供应商。
3.1. SSSD 如何工作 复制链接链接已复制到粘贴板!
您可以使用系统安全服务守护进程(SSSD)服务访问远程目录和身份验证机制。您可以把一个本地系统(一个 SSSD 客户端 )连接到外部后端系统(一个 provider)。
SSSD 支持多个身份和身份验证供应商,例如:
- LDAP 目录
- 身份管理(IdM)域
- Active Directory (AD)域
- Kerberos realm
SSSD 分为两个阶段:
- 它将客户端连接到远程供应商以检索身份和验证信息。
- 它使用获得的验证信息来创建客户端用户和凭证的本地缓存。
然后,本地系统中的用户可以使用保存在远程供应商的用户帐户进行身份验证。
SSSD 不会在本地系统上创建用户帐户。但是,可将 SSSD 配置为为 IdM 用户创建主目录。创建后,当用户注销时,IdM 用户主目录及其在客户端中的内容不会被删除。
图 3.1. SSSD 如何工作
SSSD 还可以为多个系统服务提供缓存,如名称服务交换机 (NSS) 或可插拔验证模块 (PAM)。
仅使用 SSSD 服务来缓存用户信息。在同一系统上运行名称服务缓存守护进程(NSCD)和 SSSD 进行缓存可能会导致性能问题和冲突。
3.2. 使用 SSSD 的好处 复制链接链接已复制到粘贴板!
使用系统安全服务守护进程(SSSD)为用户身份检索和用户身份验证提供了多个优点。
- 离线验证
- SSSD 可选保留一个从远程供应商获取的用户身份和凭证缓存。在此设置中,如果用户已在会话开始时对远程提供程序进行身份验证一次 - 即使远程提供程序或客户端脱机,也可以成功验证资源。
- 单一用户帐户:提高身份验证过程的一致性
使用 SSSD 时,不需要同时维护中央帐户和本地用户帐户进行离线身份验证。条件为:
- 在特定的会话中,用户必须至少登录一次:当用户第一次登录时,客户端必须连接到远程供应商。
SSSD 中必须启用缓存。
在没有 SSSD 时,远程用户通常会有多个用户帐户。例如,要连接到虚拟专用网络(VPN),远程用户需要有一个本地系统帐户,以及另外一个 VPN 帐户。在这种情况下,您必须首先在私有网络中进行身份验证,以便从远程服务器获取用户,并在本地缓存用户凭证。
使用 SSSD 时,利用缓存和离线身份验证,远程用户只需向本地机器验证即可连接到网络资源。然后,SSSD 维护其网络凭证。
- 这可以减少身份和验证提供程序上的负载
- 在请求信息时,客户端首先检查本地 SSSD 缓存。只有在缓存中没有这些信息时,SSSD 才会联系远程供应商。
3.3. 基于每个客户端有多个 SSSD 配置文件 复制链接链接已复制到粘贴板!
SSSD 的默认配置文件为 /etc/sssd/sssd.conf。除了这个文件外,SSSD 还可以从 /etc/sssd/conf.d/ 目录中的所有 *.conf 文件中读取其配置。
这个组合允许您在所有客户端中使用默认 /etc/sssd/sssd.conf 文件,并在以后的配置文件中添加附加设置,以针对每个客户端单独扩展功能。
SSSD 如何处理配置文件
SSSD 按以下顺序读取配置文件:
-
主
/etc/sssd/sssd.conf文件。 -
/etc/sssd/conf.d/中的其他 5.2.conf 文件,按字母顺序处理。
如果同一参数出现在多个配置文件中,SSSD 将使用最后一个读取的参数。
SSSD 不读取 conf.d 目录中的隐藏文件(以 .开头的文件)。
3.4. SSSD 的身份和验证供应商 复制链接链接已复制到粘贴板!
您可以将 SSSD 客户端连接到外部身份和身份验证供应商,如 LDAP 目录、身份管理 (IdM)、Active Directory(AD)域或 Kerberos 域。然后,SSSD 客户端使用 SSSD 供应商访问身份和身份验证远程服务。您可以将 SSSD 配置为使用不同的身份和身份验证供应商或它们的组合。
身份识别和验证供应商作为 SSSD 域
身份和身份验证提供程序在 SSSD 配置文件 /etc/sssd/sssd.conf 中配置为 domains(域)。供应商在文件的 [domain/ <domain_name> ] 或 [domain/default] 部分中列出。
您可以将单个域配置为以下供应商之一:
一个身份供应商,它提供用户信息,如 UID 和 GID。
-
使用
/etc/sssd/sssd.conf文件的[domain/ <domain_name> ]部分中的id_provider选项将域指定为 身份提供程序。
-
使用
一个身份验证供应商,用于处理身份验证请求。
-
使用
/etc/sssd/sssd.conf的[domain/ <domain_name> ]部分中的auth_provider选项将域指定为身份验证提供程序。
-
使用
访问控制提供程序,负责处理授权请求。
-
使用
/etc/sssd/sssd.conf的[domain/ <domain_name> ]部分中的access_provider选项将域指定为 访问控制 提供程序。默认情况下,选项设置为permit,这将始终允许所有访问。详情请查看 sssd.conf(5)man page。
-
使用
组合这些供应商,例如,所有对应的操作都是在单一服务器中执行的。
-
在这种情况下,
id_provider、auth_provider和access_provider选项都列在/etc/sssd/sssd.conf的同一[domain/ <domain_name> ] 部分或[domain/default]部分。
-
在这种情况下,
您可以为 SSSD 配置多个域。您必须至少配置一个域,否则 SSSD 不会启动。
代理供应商
代理供应商充当 SSSD 和 SSSD 无法直接访问的资源之间的中介中继。使用代理供应商时,SSSD 会连接到代理服务,代理会加载指定的库。
您可以将 SSSD 配置为使用代理提供商来启用:
- 其他验证方法,如指纹扫描仪
- 传统系统,如 NIS
-
在
/etc/passwd文件中定义的本地系统帐户作为身份提供程序和远程身份验证提供程序,如 Kerberos - 使用智能卡验证本地用户
身份供应商可用组合使用
您可以将 SSSD 配置为使用以下身份和验证供应商的组合。
第 4 章 配置 SSSD 以使用 LDAP 并需要 TLS 身份验证 复制链接链接已复制到粘贴板!
系统安全服务守护进程(SSSD)是一个在 Red Hat Enterprise Linux 主机上管理身份数据检索和身份验证的守护进程。系统管理员可以将主机配置为使用独立 LDAP 服务器作为用户帐户数据库。管理员还可以指定与 LDAP 服务器的连接必须使用 TLS 证书加密的要求。
强制 TLS ldap_id_use_start_tls 的 SSSD 配置选项,默认为 false。当使用没有 TLS 的 ldap:// 进行身份查找时,可能会导致攻击向量的风险,即中间人(MITM)攻击,它允许您通过更改,例如:更改 LDAP 搜索中返回的对象的 UID 或 GID 来冒充用户。
确保您的设置在可信环境中操作,并决定是否可以安全地对 id_provider = ldap 使用未加密的通信。注意 id_provider = ad 和 id_provider = ipa 不受影响,因为它们使用 SASL 和 GSSAPI 保护的加密连接。
如果使用未加密的通信不安全,您应该通过在 /etc/sssd/sssd.conf 文件中将 ldap_id_use_start_tls 选项设为 true 来强制实施 TLS。
4.1. 使用 SSSD 的 OpenLDAP 客户端以加密的方式从 LDAP 检索数据 复制链接链接已复制到粘贴板!
LDAP 对象的验证方法可以是 Kerberos 密码,也可以是 LDAP 密码。请注意,此处无法解决 LDAP 对象的身份验证和授权问题。
使用 LDAP 配置 SSSD 是一个复杂的流程,需要对 SSSD 和 LDAP 有非常专业的知识。考虑改为使用集成和自动化解决方案,如 Active Directory 或 Red Hat Identity Management (IdM)。有关 IdM 的详情,请参阅规划身份管理。
4.2. 配置 SSSD 以使用 LDAP 并需要 TLS 身份验证 复制链接链接已复制到粘贴板!
完成这个步骤,将 Red Hat Enterprise Linux (RHEL) 系统配置为 OpenLDAP 客户端。
使用以下客户端配置:
- RHEL 系统验证存储在 OpenLDAP 用户帐户数据库中的用户。
- RHEL 系统使用系统安全服务守护进程 (SSSD) 服务检索用户数据。
- RHEL 系统通过 TLS 加密的连接与 OpenLDAP 服务器通信。
您还可以使用此流程将 RHEL 系统配置为 Red Hat Directory Server 的客户端。
先决条件
- OpenLDAP 服务器安装并配置了用户信息。
- 您在要配置为 LDAP 客户端的主机上具有 root 权限。
-
在您要配置为 LDAP 客户端的主机上,已创建并配置了
/etc/sssd/sssd.conf文件,以将ldap指定为autofs_provider和id_provider。 -
您有来自发布 OpenLDAP 服务器的证书颁发机构的 root CA 签名证书链的 PEM 格式副本,存储在名为
core-dirsrv.ca.pem的本地文件中。
步骤
安装必要的软件包:
dnf -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir
# dnf -y install openldap-clients sssd sssd-ldap oddjob-mkhomedirCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将身份验证供应商切换到
sssd:authselect select sssd with-mkhomedir
# authselect select sssd with-mkhomedirCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将包含 root CA 签名证书链的
core-dirsrv.ca.pem文件从颁发 OpenLDAP 服务器的 SSL/TLS 证书的证书颁发机构链复制到/etc/openldap/certs文件夹。cp core-dirsrv.ca.pem /etc/openldap/certs
# cp core-dirsrv.ca.pem /etc/openldap/certsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 LDAP 服务器的 URL 和后缀添加到
/etc/openldap/ldap.conf文件中:URI ldap://ldap-server.example.com/ BASE dc=example,dc=com
URI ldap://ldap-server.example.com/ BASE dc=example,dc=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/etc/openldap/ldap.conf文件中,向/etc/openldap/certs/core-dirsrv.ca.pem添加指向 TLS_CACERT 参数的行:When no CA certificates are specified the Shared System Certificates are in use. In order to have these available along with the ones specified by TLS_CACERTDIR one has to include them explicitly:
# When no CA certificates are specified the Shared System Certificates # are in use. In order to have these available along with the ones specified # by TLS_CACERTDIR one has to include them explicitly: TLS_CACERT /etc/openldap/certs/core-dirsrv.ca.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/etc/sssd/sssd.conf文件中,将您的环境值添加到ldap_uri和ldap_search_base参数中,并将ldap_id_use_start_tls设为True:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/etc/sssd/sssd.conf中,修改[domain]部分中的ldap_tls_cacert和ldap_tls_reqcert值来指定 TLS 身份验证要求:… cache_credentials = True ldap_tls_cacert = /etc/openldap/certs/core-dirsrv.ca.pem ldap_tls_reqcert = hard …
… cache_credentials = True ldap_tls_cacert = /etc/openldap/certs/core-dirsrv.ca.pem ldap_tls_reqcert = hard …Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更改
/etc/sssd/sssd.conf文件的权限:chmod 600 /etc/sssd/sssd.conf
# chmod 600 /etc/sssd/sssd.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启并启用 SSSD 服务和
oddjobd守护进程:systemctl restart sssd oddjobd systemctl enable sssd oddjobd
# systemctl restart sssd oddjobd # systemctl enable sssd oddjobdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果您的 LDAP 服务器使用已弃用的 TLS 1.0 或 TLS 1.1 协议,请将客户端系统上的系统范围的加密策略切换到 LEGACY 级别,以允许 RHEL 使用这些协议进行通信:
update-crypto-policies --set LEGACY
# update-crypto-policies --set LEGACYCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多详细信息,请参阅红帽客户门户网站上的 RHEL 8 中的强加密默认值和弱加密算法的弃用 知识库文章,以及您系统上的
update-crypto-policies (8)手册页。
验证
验证您可以使用
id命令和指定 LDAP 用户从 LDAP 服务器检索用户数据:id <ldap_user>
# id <ldap_user> uid=17388( <ldap_user>) gid=45367(sysadmins) groups=45367(sysadmins),25395(engineers),10(wheel),1202200000(admins)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
系统管理员现在可以使用 id 命令从 LDAP 查询用户。该命令返回一个正确的用户 ID 和组群成员。
第 5 章 其他身份和身份验证供应商配置 复制链接链接已复制到粘贴板!
系统安全服务后台程序 (SSSD) 是一种用于访问远程目录和身份验证机制的系统服务。SSSD 的主要配置文件是 /etc/sssd/sssd.conf。以下章节概述了如何通过修改 /etc/sssd/sssd.conf 文件来配置 SSSD 服务和域:
- 调整 SSSD 如何解析并打印完整用户名,以启用离线身份验证。
- 配置 DNS 服务发现、简单访问提供程序规则和 SSSD 以应用 LDAP 访问过滤器。
5.1. 调整 SSSD 如何解释完整用户名 复制链接链接已复制到粘贴板!
SSSD 将完整的用户名字符串解析到用户名和域组件中。默认情况下,SSSD 根据 Python 语法的以下正则表达式,以 < ;user_name> @ <domain_name > 格式解释完整的用户名:
(?P_<name>_[^@]+)@?(?P_<domain>_[^@]*$)
(?P_<name>_[^@]+)@?(?P_<domain>_[^@]*$)
对于 Identity Management 和 Active Directory 供应商,默认用户名格式为 <user_name> @<domain_name> 或 < NetBIOS_name>\<user_name>。
您可以通过在 /etc/sssd/sssd.conf 文件中添加 re_expression 选项并定义自定义正则表达式来调整 SSSD 如何解释完整的用户名。
-
要全局定义正则表达式,请将正则表达式添加到
sssd.conf文件的[sssd]部分,如在全局范围内定义正则表达式所示。 -
要为特定的域定义正则表达式,请将正则表达式添加到
sssd.conf文件的相应的域部分(如[domain/LDAP])中,如 为特定域定义正则表达式 示例中所示。
先决条件
-
root访问权限
步骤
-
打开
/etc/sssd/sssd.conf文件: 使用
re_expression选项定义自定义正则表达式。例 5.1. 在全局范围内定义正则表达式
要全局定义所有域的正则表达式,请将
re_expression添加到sssd.conf文件的[sssd]部分:您可以使用以下全局表达式来定义 <
domain> \_<username>_ 或 <> 的格式:domain>@<user_name[sssd] [... file truncated ...] re_expression = (?P_<domain>_[^\\]*?)\\?(?P_<name>_[^\\]+$)
[sssd] [... file truncated ...] re_expression = (?P_<domain>_[^\\]*?)\\?(?P_<name>_[^\\]+$)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 5.2. 定义特定域的正则表达式
要单独为特定域定义正则表达式,请将
re_expression添加到sssd.conf文件的对应域部分:您可以使用以下全局表达式为 LDAP 域定义 <
domain> \_<username>_ 或 <domain>@<user_name> 的格式:[domain/LDAP] [... file truncated ...] re_expression = (?P_<domain>_[^\\]*?)\\?(?P_<name>_[^\\]+$)
[domain/LDAP] [... file truncated ...] re_expression = (?P_<domain>_[^\\]*?)\\?(?P_<name>_[^\\]+$)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. 调整 SSSD 如何打印完整用户名 复制链接链接已复制到粘贴板!
如果在 /etc/sssd/sssd.conf 文件中启用了 use_fully_qualified_names 选项,SSSD 默认根据以下扩展以 < name> @<domain > 格式打印完整的用户名:
%1$s@%2$s
%1$s@%2$s
如果未为受信任的域设置 use_fully_qualified_names,或者明确设置为 false,则仅打印没有域部分的用户名。
您可以通过在 /etc/sssd/sssd.conf 文件中添加 full_name_format 选项并定义自定义扩展来调整 SSSD 显示完整用户名的格式。
先决条件
-
root访问权限
步骤
-
以
root身份,打开/etc/sssd/sssd.conf文件。 要为所有域定义全局扩展,请将
full_name_format添加到sssd.conf的[sssd]部分:[sssd] [... file truncated ...] full_name_format = %1$s@%2$s
[sssd] [... file truncated ...] full_name_format = %1$s@%2$sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在这种情况下,用户名显示为
user@domain.test。要定义特定域的用户名打印格式,请将
full_name_format添加到sssd.conf的对应域部分。要使用
%2$s\%1$s为活动目录(AD)域配置扩展:[domain/ad.domain] [... file truncated ...] full_name_format = %2$s\%1$s
[domain/ad.domain] [... file truncated ...] full_name_format = %2$s\%1$sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,用户名显示为
ad.domain\user。要使用
%3$s\%1$s为活动目录(AD)域配置扩展:[domain/ad.domain] [... file truncated ...] full_name_format = %3$s\%1$s
[domain/ad.domain] [... file truncated ...] full_name_format = %3$s\%1$sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在这种情况下,如果活动目录域的扁平域名被设为
AD,则用户名显示为AD\user。
SSSD 可在某些名称配置中剥离名称的域组件,这可能会导致身份验证错误。如果将 full_name_format 设置为非标准值,您会收到警告提示您将其更改为标准格式。
5.3. 启用离线验证 复制链接链接已复制到粘贴板!
默认情况下,SSSD 不缓存用户凭证。在处理身份验证请求时,SSSD 始终联系身份提供程序。如果提供商不可用,用户身份验证会失败。
为确保在身份提供程序不可用时用户也可以被验证,在 /etc/sssd/sssd.conf 文件中将 cache_credentials 设置为 true 来启用凭证缓存。如果使用双因素身份验证,缓存的凭证指的是密码和第一个身份验证因素。请注意,对于智能卡身份验证,您不需要将 cache_credentials 设置为 true 或设置任何其他配置;只要缓存中记录了成功在线身份验证,就可以离线工作。
SSSD 永远不会以纯文本形式缓存密码。它仅存储密码的哈希。
虽然凭证存储为 salted SHA-512 哈希,但如果攻击者打算访问缓存文件并使用暴力攻击破解密码,这可能会构成安全风险。访问缓存文件需要特权访问权限,这是 RHEL 中的默认设置。
先决条件
-
root访问权限
步骤
-
打开
/etc/sssd/sssd.conf文件: 在 domain 部分中,添加
cache_credentials = true设置:[domain/<domain_name>] cache_credentials = true
[domain/<domain_name>] cache_credentials = trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选,但推荐:在身份提供程序不可用时为 SSSD 允许离线身份验证的时间限制:
- 配置 PAM 服务以使用 SSSD。
使用
offline_credentials_expiration选项来指定时间限制。请注意,限制以天数为单位。
例如,要指定用户在上一次成功登录后 3 天可以离线验证,请使用:
[pam] offline_credentials_expiration = 3
[pam] offline_credentials_expiration = 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. 配置 DNS 服务发现 复制链接链接已复制到粘贴板!
DNS 服务发现使应用程序能够检查给定域中特定类型的特定服务的 SRV 记录,然后返回与所需类型匹配的服务器。如果在 /etc/sssd/sssd.conf 文件中未明确定义身份或身份验证服务器,SSSD 可以使用 DNS 服务发现动态发现服务器。
例如,如果 sssd.conf 包含 id_provider = ldap 设置,但是 ldap_uri 选项没有指定任何主机名或 IP 地址,SSSD 会使用 DNS 服务发现来动态发现服务器。
SSSD 无法动态发现备份服务器,只有主服务器。
先决条件
-
root访问权限
步骤
-
打开
/etc/sssd/sssd.conf文件: 将主服务器值设置为
_srv_。对于 LDAP 供应商,使用
ldap_uri选项设置主服务器:[domain/<ldap_domain_name>] id_provider = ldap ldap_uri = _srv_
[domain/<ldap_domain_name>] id_provider = ldap ldap_uri = _srv_Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置服务类型,在密码更改供应商中启用服务发现:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选: 默认情况下,服务发现使用系统主机名的域部分作为域名。要使用不同的 DNS 域,请使用
dns_discovery_domain选项指定域名。 -
可选: 默认情况下,对 LDAP 服务类型的服务发现扫描。要使用不同的服务类型,请使用
ldap_dns_service_name选项指定类型。 -
可选: 默认情况下,SSSD 会尝试查找 IPv4 地址。如果尝试失败,SSSD 会尝试查找 IPv6 地址。要自定义此行为,请使用
lookup_family_order选项。 对于您要使用服务发现的每个服务,在 DNS 服务器中添加 DNS 记录:
_<service_name>.<protocol>.<domain_name> <TTL> <priority> <weight> <port_number> <hostname>_
_<service_name>.<protocol>.<domain_name> <TTL> <priority> <weight> <port_number> <hostname>_Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. 配置简单的访问提供程序规则 复制链接链接已复制到粘贴板!
simple 访问提供程序会基于用户名或组允许或拒绝访问。它可让您限制对特定机器的访问。
例如,您可以使用 simple 访问供应商限制对特定用户或组的访问。即使他们针对配置的身份验证提供程序成功进行身份验证,也不允许其他用户或组登录。
先决条件
-
root访问权限
流程
-
打开
/etc/sssd/sssd.conf文件: 将
access_provider选项设置为simple:[domain/<domain_name>] access_provider = simple
[domain/<domain_name>] access_provider = simpleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为用户定义访问控制规则。
-
要允许访问用户,请使用
simple_allow_users选项。 若要拒绝用户访问,可使用
simple_deny_users选项。重要如果您拒绝对特定用户的访问,则会自动允许对所有其他用户的访问。因此,允许访问特定用户通常被认为比拒绝对特定用户的访问更安全。
-
要允许访问用户,请使用
定义组的访问控制规则。选择以下任意一项:
-
若要允许访问组,可使用
simple_allow_groups选项。 若要拒绝对组的访问,可使用
simple_deny_groups选项。重要如果您拒绝访问特定组,则会自动允许访问其他任何组。因此,允许访问特定组通常被认为比拒绝对特定组的访问更安全。
例 5.3. 允许访问特定用户和组
以下示例允许访问
alice、bob和engineers组的成员,同时拒绝访问所有其他用户:[domain/<domain_name>] access_provider = simple simple_allow_users = alice, bob simple_allow_groups = engineers
[domain/<domain_name>] access_provider = simple simple_allow_users = alice, bob simple_allow_groups = engineersCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
若要允许访问组,可使用
将拒绝列表保留为空可能会导致允许任何人访问。
如果您要将可信 AD 用户添加到 simple_allow_users 列表中,请确保您使用完全限定域名(FQDN)格式,例如 aduser@ad.example.com。由于不同域中的短名称可以相同,这防止了访问控制配置的问题。
5.6. 配置 SSSD 以应用 LDAP 访问过滤器 复制链接链接已复制到粘贴板!
如果在 /etc/sssd/sssd.conf 中设置 access_provider 选项,SSSD 会使用指定的访问提供程序来评估哪些用户被授予系统访问权限。如果您正在使用的访问提供商是 LDAP 提供商类型的扩展,您也可以指定一个 LDAP 访问控制过滤器,用户必须匹配才能允许访问系统。
例如,当使用 Active Directory (AD) 服务器作为访问提供程序时,您可以将 Linux 系统的访问权限限制为指定的 AD 用户。与指定过滤器不匹配的所有其他用户的访问都被拒绝。
访问过滤器仅应用于 LDAP 用户条目。因此,在嵌套组上使用这种类型的访问控制可能无法正常工作。要在嵌套组中应用访问控制,请参阅配置 简单的 访问供应商规则。
在使用脱机缓存时,SSSD 会检查用户最近的在线登录尝试是否成功。在最近一次在线登录期间成功登录的用户仍将能够脱机登录,即使他们与访问过滤器不匹配。
先决条件
-
root访问权限
流程
-
打开
/etc/sssd/sssd.conf文件: 在
[domain]部分中,指定访问控制过滤器。-
对于 LDAP,请使用
ldap_access_filter选项。 对于 AD,请使用
ad_access_filter选项。另外,您必须通过将ad_gpo_access_control选项设置为禁用来禁用基于 GPO 的访问控制。例 5.4. 允许访问特定 AD 用户
例如,要只允许对属于
admins用户组且具有unixHomeDirectory属性集的 AD 用户进行访问,请使用:[domain/<ad_domain_name>] access provider = ad [... file truncated ...] ad_access_filter = (&(memberOf=cn=admins,ou=groups,dc=example,dc=com)(unixHomeDirectory=*)) ad_gpo_access_control = disabled
[domain/<ad_domain_name>] access provider = ad [... file truncated ...] ad_access_filter = (&(memberOf=cn=admins,ou=groups,dc=example,dc=com)(unixHomeDirectory=*)) ad_gpo_access_control = disabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
对于 LDAP,请使用
SSSD 也可以根据条目中的 authorizedService 或 host 属性检查结果。实际上,可以根据用户条目和配置评估所有选项 MDASH LDAP 过滤器,authorizedService 和 host MDASH。ldap_access_order 参数列出所有要使用的访问控制方法,按照应如何评估它们进行排序。
[domain/example.com] access_provider = ldap ldap_access_filter = memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com ldap_access_order = filter, host, authorized_service
[domain/example.com]
access_provider = ldap
ldap_access_filter = memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com
ldap_access_order = filter, host, authorized_service
第 6 章 SSSD 客户端侧的视图 复制链接链接已复制到粘贴板!
SSSD 提供 sss_override 工具,允许您创建一个本地视图,显示特定于本地机器的 POSIX 用户或组属性的值。您可以为所有 id_provider 值配置覆盖,但 ipa 除外。
如果您使用 ipa 提供程序,请在 IPA 中集中定义 ID 视图。如需更多信息,请参阅 使用 ID 视图覆盖 IdM 客户端 上的用户属性值。
有关对 SSSD 性能的潜在负面影响的信息,请参阅 ID 视图 对 SSSD 性能的负面影响。
6.1. 覆盖 LDAP username 属性 复制链接链接已复制到粘贴板!
作为管理员,您可以将现有主机配置为使用 LDAP 中的帐户。但是,LDAP 中的用户(名称、UID、GID、主目录、shell)的值可能与本地系统中的值不同。您可以通过定义本地用户名 来覆盖 LDAP 属性。
username
先决条件
-
root访问权限 -
安装了
sssd-tools软件包
流程
显示用户的当前信息:
id <ldap_username>
# id <ldap_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_> 替换为用户的 LDAP 用户名。username添加本地用户名:
sss_override user-add <ldap_username> -n <local_username>
# sss_override user-add <ldap_username> -n <local_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_username> 替换为 LDAP用户名,并将<local_username> 替换为所需的本地用户名。使用
sss_override user-add命令创建第一次覆盖后,重启 SSSD 以使更改生效:systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证是否添加了本地用户名:
id <local_username>
# id <local_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:显示用户的覆盖:
sss_override user-show <ldap_username>
# sss_override user-show <ldap_username> user@ldap.example.com:_<local_username>_::::::Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 6.1. 定义本地用户名
要为 LDAP 用户 sjones 添加本地用户名
:sarah显示 LDAP 用户 sjones
的当前信息:id sjones
# id sjones uid=1001(sjones) gid=6003 groups=6003,10(wheel)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加本地用户名
sarah:sss_override user-add sjones -n sarah
# sss_override user-add sjones -n sarahCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证本地用户名是否已添加,并且正确显示用户的覆盖:
id sarah sss_override user-show sjones
# id sarah uid=1001(sjones) gid=6003(sjones) groups=6003(sjones),10(wheel) # sss_override user-show sjones user@ldap.example.com:sarah::::::Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. 覆盖 LDAP UID 属性 复制链接链接已复制到粘贴板!
作为管理员,您可以将现有主机配置为使用 LDAP 中的帐户。但是,LDAP 中的用户(名称、UID、GID、主目录、shell)的值可能与本地系统中的值不同。您可以按照以下步骤定义不同的 UID 来覆盖 LDAP UID 属性。
先决条件
-
root访问权限 -
安装了
sssd-tools软件包
流程
显示用户当前的 UID:
id -u <ldap_username>
# id -u <ldap_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_> 替换为用户的 LDAP 用户名。username覆盖用户帐户的 UID:
sss_override user-add <ldap_username> -u <local_uid>
# sss_override user-add <ldap_username> -u <local_uid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_username> 替换为用户的 LDAP用户名,并将 <local_uid> 替换为新的 UID 号。使内存缓存过期:
sss_cache --users
# sss_cache --usersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
sss_override user-add命令创建第一次覆盖后,重启 SSSD 以使更改生效:systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证是否应用了本地 UID:
id -u <ldap_username>
# id -u <ldap_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:显示用户的覆盖:
sss_override user-show <ldap_username>
# sss_override user-show <ldap_username> user@ldap.example.com::_<local_uid>_:::::Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 6.2. 覆盖用户的 LDAP UID
使用本地 UID 6666 覆盖用户
sarah的 LDAPUID:显示 LDAP 用户
sarah的当前 UID:id -u sarah
# id -u sarah 1001Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 UID 6666 覆盖用户 sarah 的帐户的 UID:
sss_override user-add sarah -u 6666
# sss_override user-add sarah -u 6666Copy to Clipboard Copied! Toggle word wrap Toggle overflow 手动使内存缓存过期:
sss_cache --users
# sss_cache --usersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 SSSD 以使更改生效:
systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否应用了新的 UID,并正确覆盖用户显示:
id sarah sss_override user-show sarah
# id sarah 6666 # sss_override user-show sarah user@ldap.example.com::6666:::::Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. 覆盖 LDAP GID 属性 复制链接链接已复制到粘贴板!
作为管理员,您可以将现有主机配置为使用 LDAP 中的帐户。但是,LDAP 中的用户(名称、UID、GID、主目录、shell)的值可能与本地系统中的值不同。您可以按照以下步骤定义不同的 GID 来覆盖 LDAP GID 属性。
先决条件
-
root访问权限 -
已安装
sssd-tools
流程
显示用户当前的 GID:
id -g <ldap_username>
# id -g <ldap_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_username> 替换为用户的名称。覆盖用户帐户的 GID:
sss_override user-add <ldap_username> -g <local_gid>
# sss_override user-add <ldap_username> -g <local_gid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_username> 替换为用户的名称,并将 <local_gid> 替换为本地 GID 号。使内存缓存过期:
sss_cache --users
# sss_cache --usersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
sss_override user-add命令创建第一次覆盖后,重启 SSSD 以使更改生效:systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证是否应用了本地 GID:
id -g <ldap_username>
# id -g <ldap_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:显示用户的覆盖:
sss_override user-show <ldap_username>
# sss_override user-show <ldap_username> user@ldap.example.com::: 6666::::Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 6.3. 覆盖用户的 LDAP GID
使用 GID
6666覆盖用户sarah的 GID:显示用户
sarah的当前 GID:id -g sarah
# id -g sarah 6003Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 GID 6666 覆盖用户 sarah 的
帐户的GID:sss_override user-add sarah -g 6666
# sss_override user-add sarah -g 6666Copy to Clipboard Copied! Toggle word wrap Toggle overflow 手动使内存缓存过期:
sss_cache --users
# sss_cache --usersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果这是您的第一次覆盖,重启 SSSD 以使更改生效:
systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否应用了新的 GID 并正确覆盖用户显示:
id -g sarah sss_override user-show sarah
# id -g sarah 6666 # sss_override user-show sarah user@ldap.example.com::6666:::::Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. 覆盖 LDAP 主目录属性 复制链接链接已复制到粘贴板!
作为管理员,您可以将现有主机配置为使用 LDAP 中的帐户。但是,LDAP 中的用户(名称、UID、GID、主目录、shell)的值可能与本地系统中的值不同。您可以通过定义不同的主目录来覆盖 LDAP 主目录属性。
先决条件
-
root访问权限 -
已安装
sssd-tools
流程
以本地存储的方式显示用户的当前主目录:
getent passwd <ldap_username>
# getent passwd <ldap_username> <ldap_username>:x:XXXX:XXXX::/home/<home_directory>:/bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_username> 替换为用户的名称。输出显示了本地所看到的主目录值,这可能与 LDAP 记录不同。覆盖用户的主目录:
sss_override user-add <ldap_username> -h <new_home_directory>
# sss_override user-add <ldap_username> -h <new_home_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_username> 替换为用户的名称,并将 <new_home_directory> 替换为新的主目录。重启 SSSD 以使更改生效:
systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证是否定义了新主目录:
getent passwd <ldap_username>
# getent passwd <ldap_username> <ldap_username>:x:XXXX:XXXX::/home/<new_home_directory>:/bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:显示用户的覆盖:
sss_override user-show <ldap_username>
# sss_override user-show <ldap_username> user@ldap.example.com:::::::<new_home_directory>::Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 6.4. 覆盖用户的主目录
使用
admin覆盖sarah用户的主目录:显示
sarah用户的当前主目录:getent passwd sarah
# getent passwd sarah sarah:x:1001:6003::sarah:/bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用新主目录
admin覆盖sarah用户的主目录:sss_override user-add sarah -h admin
# sss_override user-add sarah -h adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 SSSD 以使更改生效:
systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证新主目录是否已定义,并正确覆盖用户显示:
getent passwd sarah sss_override user-show sarah
# getent passwd sarah sarah:x:1001:6003::admin:/bin/bash # sss_override user-show sarah user@ldap.example.com:::::::admin::Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5. 覆盖 LDAP shell 属性 复制链接链接已复制到粘贴板!
作为管理员,您可以将现有主机配置为使用 LDAP 中的帐户。但是,LDAP 中的用户(名称、UID、GID、主目录、shell)的值可能与本地系统中的值不同。您可以通过定义不同的 shell 来覆盖 LDAP shell 属性。
先决条件
-
root访问权限 -
已安装
sssd-tools
流程
以本地存储方式显示用户的当前 shell:
getent passwd <ldap_username>
# getent passwd <ldap_username> <ldap_username>:x:XXXX:XXXX::/home/<home_directory>:_<currentshell>_Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_username> 替换为用户的名称。覆盖用户的 shell:
sss_override user-add <ldap_username> -s <new_shell>
# sss_override user-add <ldap_username> -s <new_shell>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ldap_username> 替换为用户的名称,并将 <new_shell> 替换为新的 shell。重启 SSSD 以使更改生效:
systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证是否定义了新 shell:
getent passwd <ldap_username>
# getent passwd <ldap_username> <ldap_username>:x:XXXX:XXXX::/home/<home_directory>:_<new_shell>_Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:显示用户的覆盖:
sss_override user-show <ldap_username>
# sss_override user-show <ldap_username> user@ldap.example.com::::::_<new_shell>_:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 6.5. 覆盖用户的 shell
将用户
sarah的 shell 从/bin/bash改为sbin/nologin:显示用户
sarah的当前 shell:getent passwd sarah
# getent passwd sarah sarah:x:1001:6003::sarah:/bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用新的
/sbin/nologinshell 覆盖用户 sarah 的 shell:sss_override user-add sarah -s /sbin/nologin
# sss_override user-add sarah -s /sbin/nologinCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 SSSD 以使更改生效:
systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证新 shell 是否已定义并正确覆盖用户显示:
getent passwd sarah sss_override user-show sarah
# getent passwd sarah sarah:x:1001:6003::sarah:/sbin/nologin # sss_override user-show sarah user@ldap.example.com::::::/sbin/nologin:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6. 列出主机上的覆盖 复制链接链接已复制到粘贴板!
作为管理员,您可以列出主机上的所有用户和组覆盖,以验证是否已覆盖正确的属性。
先决条件
-
root访问权限 -
已安装
sssd-tools
步骤
列出所有用户覆盖:
sss_override user-find
# sss_override user-find user1@ldap.example.com::8000::::/bin/zsh: user2@ldap.example.com::8001::::/bin/bash: ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出所有组覆盖:
sss_override group-find
# sss_override group-find group1@ldap.example.com::7000 group2@ldap.example.com::7001 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7. 删除本地覆盖 复制链接链接已复制到粘贴板!
您可以删除全局 LDAP 目录中定义的本地覆盖。
先决条件
-
root访问权限 -
已安装
sssd-tools
步骤
要删除用户帐户的覆盖,请使用:
sss_override user-del <local_username>
# sss_override user-del <local_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <local_username > 替换为用户的名称。更改会立即生效。
要为组群删除覆盖,请使用:
sss_override group-del <group_name>
# sss_override group-del <group_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
sss_override user-del或sss_override group-del命令删除第一次覆盖后,重启 SSSD 以使更改生效:systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
当您为用户或组群删除覆盖时,此对象的所有覆盖都会被删除。
6.8. 导出和导入本地视图 复制链接链接已复制到粘贴板!
您的本地覆盖保存在本地 SSSD 缓存中。您可以将用户和组覆盖从此缓存导出到文件,以创建备份。这样可确保即使缓存被清除,您也可以稍后恢复配置。
先决条件
-
root访问权限 -
已安装
sssd-tools
步骤
要备份用户和组视图,请使用:
sss_override user-export /var/lib/sss/backup/sssd_user_overrides.bak sss_override group-export /var/lib/sss/backup/sssd_group_overrides.bak
# sss_override user-export /var/lib/sss/backup/sssd_user_overrides.bak # sss_override group-export /var/lib/sss/backup/sssd_group_overrides.bakCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要恢复用户和组视图,请使用:
sss_override user-import /var/lib/sss/backup/sssd_user_overrides.bak sss_override group-import /var/lib/sss/backup/sssd_group_overrides.bak
# sss_override user-import /var/lib/sss/backup/sssd_user_overrides.bak # sss_override group-import /var/lib/sss/backup/sssd_group_overrides.bakCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 7 章 配置 RHEL 主机以使用 AD 作为身份验证提供程序 复制链接链接已复制到粘贴板!
作为系统管理员,您可以在不将主机加入 AD 的情况下,使用 Active Directory (AD) 作为 Red Hat Enterprise Linux (RHEL) 主机的身份验证供应商。
在以下情况下使用此方法:
- 您不希望 AD 管理员控制启用和禁用主机。
- 主机(可以是一个公司 PC)只表示被您公司中的某一用户使用。
只有在您有特定原因以避免将主机加入 AD 时,才使用此方法。
考虑将系统完全加入 AD 或 Red Hat Identity Management (IdM)。将 RHEL 主机加入到域中可方便管理设置。如果您关注与将客户端直接加入 AD 中的客户端访问许可证,请考虑利用与 AD 信任协议中的 IdM 服务器。有关 IdM-AD 信任的更多信息,请参阅 规划 IdM 和 AD 之间的跨林信任 和 在 IdM 和 AD 之间安装信任。
完成此步骤后,AD_user 可以使用在 example.com 域中 AD 用户数据库中设置的密码登录到 rhel_host 系统。EXAMPLE.COM Kerberos 域对应于 example.com 域。
先决条件
- 您有访问 rhel_host 的 root 权限。
- AD_user 用户帐户存在于 example.com 域中。
- Kerberos realm 是 EXAMPLE.COM。
-
rhel_host 尚未使用
realm join命令加入到 AD。 您已安装了
sssd-proxy软件包。dnf install sssd-proxy
# dnf install sssd-proxyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
在本地创建 AD_user 用户帐户而不为其分配密码:
useradd AD_user
# useradd AD_userCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
/etc/nsswitch.conf文件进行编辑,并确保该文件包含以下行:passwd: sss files systemd group: sss files systemd shadow: files sss
passwd: sss files systemd group: sss files systemd shadow: files sssCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
/etc/krb5.conf文件进行编辑,并确保该文件包含以下部分和项目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
/etc/sssd/sssd.conf文件,并将以下部分和行插入到该文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更改
/etc/sssd/sssd.conf文件的权限:chmod 600 /etc/sssd/sssd.conf
# chmod 600 /etc/sssd/sssd.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动安全性系统服务守护进程(SSSD):
systemctl start sssd
# systemctl start sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 SSSD:
systemctl enable sssd
# systemctl enable sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
/etc/pam.d/system-auth文件,修改该文件使其包含以下部分和行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/etc/pam.d/system-auth文件的内容复制到/etc/pam.d/password-auth文件中。输入 yes 来确认覆盖文件的当前内容:cp /etc/pam.d/system-auth /etc/pam.d/password-auth
# cp /etc/pam.d/system-auth /etc/pam.d/password-auth cp: overwrite '/etc/pam.d/password-auth'? yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
为 AD_user 请求 Kerberos 票据 (TGT)。根据请求输入 AD_user 密码:
kinit AD_user
# kinit AD_user Password for AD_user@EXAMPLE.COM:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示获得的 TGT:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
AD_user 已使用 EXAMPLE.COM Kerberos 域中的凭据成功登录到 rhel_host。
第 8 章 使用 SSSD 报告主机的用户访问权限 复制链接链接已复制到粘贴板!
安全系统服务守护进程 (SSSD) 跟踪用户可以或无法访问哪些客户端。本章论述了使用 sssctl 工具创建访问控制报告并显示用户数据。
先决条件
- SSSD 软件包安装在网络环境中
8.1. sssctl 命令 复制链接链接已复制到粘贴板!
sssctl 是一个命令行工具,提供获取安全系统服务守护进程 (SSSD) 状态信息的统一方法。
您可以使用 sssctl 工具收集有关的信息:
- 域状态
- 客户端用户身份验证
- 对特定域的客户端的用户访问
- 有关缓存内容的信息
使用 sssctl 工具,您可以:
- 管理 SSSD 缓存
- 管理日志
- 检查配置文件
sssctl 工具取代了 sss_cache 和 sss_debuglevel 工具。
8.2. 使用 sssctl 生成访问控制报告 复制链接链接已复制到粘贴板!
您可以列出应用到您要运行报告的机器的访问控制规则,因为 SSSD 控制哪些用户可以登录到客户端。
访问报告不准确,因为这个工具不会跟踪由密钥发布中心(KDC)锁定的用户。
先决条件
- 您必须使用管理员权限登录。
流程
要生成访问控制报告,请运行以下命令,替换 <
domain_name>:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. 使用 sssctl 显示用户授权详情 复制链接链接已复制到粘贴板!
使用 sssctl user-checks 命令对依赖系统安全服务守护进程(SSSD)的应用程序中的身份验证和授权问题进行故障排除。
运行 sssctl user-checks <user_name > 以显示 Name Service Switch (NSS)和 D-Bus 接口的 InfoPipe 响应器中提供的用户数据。输出显示用户是否被授权使用 system-auth 可插拔验证模块(PAM)服务登录。
命令有两个选项:
-
-a用于 PAM 操作 -
-s用于 PAM 服务
如果您没有指定 a -a and -s 选项,sctl 工具将 使用默认选项: -a acct -s system-auth。
先决条件
- 您必须使用管理员权限登录。
流程
要显示特定用户的用户数据,请输入:
sssctl user-checks -a acct -s sshd <user_name>
[root@client1 ~]# sssctl user-checks -a acct -s sshd <user_name> user: example.user action: acct service: sshd ....Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 9 章 使用 SSSD 查询域信息 复制链接链接已复制到粘贴板!
您可以使用 sssctl 从系统安全服务守护进程(SSSD)检索和分析与域相关的数据。SSSD 可以列出身份管理(IdM)中的域,以及 Active Directory 中的域,这些域通过跨林信任连接到 IdM。
您可以列出可用的域,检查其状态,并对身份和身份验证问题进行故障排除。
9.1. 使用 sssctl 列出域 复制链接链接已复制到粘贴板!
您可以使用 sssctl domain-list 命令来调试域拓扑的问题。
这个状态可能立即不可用。如果该域不可见,请重复该命令。
先决条件
- 您必须使用管理员权限登录。
流程
可选: 要显示
sssctl命令的帮助信息,请输入:sssctl --help
[user@client1 ~]$ sssctl --help ....Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 要显示可用域列表,请输入:
sssctl domain-list
[root@client1 ~]# sssctl domain-list
implicit_files
idm.example.com
ad.example.com
sub1.ad.example.com
该列表包含 Active Directory 和 Identity Management 间的跨林信任域。
9.2. 使用 sssctl 验证域状态 复制链接链接已复制到粘贴板!
您可以使用 sssctl domain-status 命令来调试域拓扑的问题。
这个状态可能立即不可用。如果该域不可见,请重复该命令。
先决条件
- 您必须使用管理员权限登录。
流程
可选: 要显示
sssctl命令的帮助信息,请输入:sssctl --help
[user@client1 ~]$ sssctl --helpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要显示特定域的用户数据,将 <
domain_name> 替换为实际域名,并输入:sssctl domain-status <domain_name>
[root@client1 ~]# sssctl domain-status <domain_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 域 idm.example.com 的输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 域
idm.example.com在线,并在可应用命令的客户端可见。
如果域不可用,则结果为:
sssctl domain-status <domain_name>
[root@client1 ~]# sssctl domain-status <domain_name>
Unable to get online status
第 10 章 使用 SSSD 限制 PAM 服务的域 复制链接链接已复制到粘贴板!
可插拔验证模块 (PAM) 是身份验证和授权的通用框架。Red Hat Enterprise Linux 中的大多数系统应用程序依赖于底层 PAM 配置进行身份验证和授权。
系统安全服务守护进程 (SSSD) 可让您限制 PAM 服务可以访问哪些域。SSSD 根据运行特定 PAM 服务的用户评估来自 PAM 服务的身份验证请求。这意味着,如果 PAM 服务用户可以访问 SSSD 域,PAM 服务也可以访问该域。
10.1. 关于 PAM 复制链接链接已复制到粘贴板!
可插拔验证模块 (PAM) 提供集中式身份验证机制,系统应用可以使用此机制将身份验证中继到集中配置的框架。
PAM 可插拔,因为存在用于不同类型身份验证源(如 Kerberos、SSSD、NIS 或本地文件系统)的 PAM 模块。您可以对不同的身份验证源进行优先排序。
此模块化架构为管理员提供了很大的灵活性来为系统设置身份验证策略。PAM 对开发人员和管理员而言是有用的系统,原因如下:
- PAM 提供一种常见身份验证方案,可用于各种应用。
- PAM 为系统管理员提供了对身份验证的显著灵活性和控制力。
- PAM 提供单个全文档库,使开发人员无需创建自己的身份验证方案即可编写程序。
10.2. 域访问限制选项 复制链接链接已复制到粘贴板!
要限制对所选域的访问,您可以使用以下选项:
- pam_trusted_users in /etc/sssd/sssd.conf
-
列出 SSSD 信任的 PAM 服务的数字 UID 或用户名。默认设置是
all,这意味着所有服务用户都是受信任的,可以访问任何域。 - pam_public_domains in /etc/sssd/sssd.conf
-
指定不被信任 PAM 服务用户访问的公共 SSSD 域。选项接受
all和none值。默认值为none,这意味着没有域是公共域,不受信任的服务用户无法访问任何域。 - PAM 配置文件的域
指定 PAM 服务可以进行身份验证的域列表。如果您在没有指定任何域的情况下使用
域,PAM 服务将无法对任何域进行身份验证,例如:auth required pam_sss.so domains=
auth required pam_sss.so domains=Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 PAM 配置文件使用
domains,则 PAM 服务能够在可信用户下运行时对所有域进行身份验证。/etc/sssd/sssd.confSSSD 配置文件中的domain选项还指定 SSSD 尝试验证的域列表。请注意,PAM配置文件中的 domain 选项无法扩展sssd.conf中的域列表,它只能通过指定较短的列表来限制sssd.conf域列表。因此,如果在 PAM 文件中指定了域,但没有在sssd.conf中指定,则 PAM 服务无法对该域进行身份验证。
默认设置 pam_trusted_users = all 和 pam_public_domains = none 指定所有 PAM 服务用户都是可信并可访问任何域。使用 PAM 配置文件中的 domain 选项来限制域访问。
使用 PAM 配置文件中的 domains 指定域,sssd.conf 包含 pam_public_domains 也需要在 pam_public_domains 中指定域。如果未包含所需域,pam_public_domains 选项将使 PAM 服务无法针对域进行身份验证,以防此服务在不受信任的用户下运行。
PAM 配置文件中定义的域限制仅适用于身份验证操作,不适用于用户查找。
10.3. 限制 PAM 服务的域 复制链接链接已复制到粘贴板!
您可以将 PAM 服务身份验证限制为指定的域。
先决条件
- SSSD 已安装并运行。
流程
配置 SSSD 以访问所需的域。在
/etc/sssd/sssd.conf文件中的domain选项中定义 SSSD 可对其进行身份验证的域:[sssd] domains = <idm.example.com>, <ad.example.com>, <ldap.example.com>
[sssd] domains = <idm.example.com>, <ad.example.com>, <ldap.example.com>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在 PAM 配置文件中设置'domains' 选项,指定 PAM 服务可以对其进行身份验证的域。例如:
auth sufficient pam_sss.so forward_pass domains=<idm.example.com> account [default=bad success=ok user_unknown=ignore] pam_sss.so password sufficient pam_sss.so use_authtok
auth sufficient pam_sss.so forward_pass domains=<idm.example.com> account [default=bad success=ok user_unknown=ignore] pam_sss.so password sufficient pam_sss.so use_authtokCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此配置限制 PAM 服务只针对 <
idm.example.com>进行身份验证。
验证
-
针对 <
;idm.example.com>进行身份验证。它必须成功。
10.4. 关于 PAM 配置文件 复制链接链接已复制到粘贴板!
PAM 配置文件指定 Red Hat Enterprise Linux 中服务的身份验证方法和策略。每个 PAM 感知应用程序或服务在 /etc/pam.d/ 目录中都有相应的文件。文件以它控制访问的服务命名。例如,login 程序有一个名为 /etc/pam.d/login 的相应的 PAM 配置文件。
手动编辑 PAM 配置文件可能导致身份验证和访问问题。使用 authselect 工具配置 PAM。
PAM 配置文件格式
每个 PAM 配置文件都由为特定模块定义设置的指令组成。PAM 在某些模块的身份验证过程中使用参数将信息传递给可插拔模块。
module_type control_flag <module_name> <module_arguments>
module_type control_flag <module_name> <module_arguments>
例如:
auth required pam_unix.so
auth required pam_unix.so
PAM 模块类型
PAM 模块类型指定模块执行的身份验证任务的类型。模块可以执行以下任务:
- 帐户管理
- 身份验证管理
- 密码管理
- 会话管理
单个模块可以提供任何或所有模块类型。例如,pam_unix.so 提供所有四种模块类型。
模块名称,如 pam_unix.so ,为 PAM 提供包含指定模块类型的库的名称。目录名称被忽略,因为应用程序链接到 libpam 的合适版本,这样可找到模块的正确版本。
模块类型指令可以被堆栈或放在另一个模块之上,以便将多个模块一起用于一个目的。模块的顺序以及控制标记非常重要,它决定了特定模块的成功或失败对于向服务验证用户的整体目标是多么重要。
您可以堆栈 PAM 模块,以强制在允许用户进行身份验证前必须满足的特定条件。
PAM 控制标志
当 PAM 模块执行其功能时,它返回一个成功或失败结果。控制标志指示 PAM 如何处理此结果。
简单标记使用关键字,更复杂的语法如下 [ <value1> = <action1> < value2>= <action2> …] 格式。
当模块的控制标志使用 sufficient 或 requisite 值时,列出的模块的顺序对身份验证过程非常重要。
有关 PAM 控制标志的详细描述,包括选项的列表,请查看 pam.conf (5) 手册页。
10.5. PAM 配置示例 复制链接链接已复制到粘贴板!
请参阅具有详细描述的 PAM 配置文件的示例。
带注释的 PAM 配置示例
- 1
- 如果
/etc/securetty文件存在,此行确保仅允许从该文件中列出的终端进行 root 登录。如果终端没有在文件中列出,则以 root 登录登录失败,并显示Login incorrect消息。 - 2
- 提示用户输入密码,并根据存储在
/etc/passwd和/etc/shadow(如果存在)中的信息进行检查。nullok参数允许空密码。 - 3
- 检查
/etc/nologin文件是否存在。如果存在,且用户不是 root,则身份验证失败。注意在本例中,所有三个
auth模块都检查了,即使第一个auth模块失败了。这是一个很好的安全方法,可防止潜在的攻击者了解其身份验证在哪个阶段失败。 - 4
- 验证用户的帐户。例如,如果启用了 shadow 密码,
pam_unix.so模块的帐户类型会检查过期的帐户或用户是否需要更改密码。 - 5
- 如果当前密码已过期或者用户手动请求密码更改,则会提示输入新密码。然后,它会检查新创建的密码的强度,以确保它满足质量要求,且不会被基于字典的密码破解程序轻松破解。参数
retry=3指定用户有三次尝试创建强密码的机会。 - 6
pam_unix.so模块管理密码更改。shadow参数指示模块在更新用户密码时创建影子密码。nullok参数允许用户更改空密码,否则 null 密码被视为帐户锁定。use_authtok参数接受之前输入的任何密码,而不再次提示用户输入密码。这样,所有新密码在被接受之前都必须通过pam_pwquality.so检查,以确保密码安全。- 7
pam_unix.so模块管理会话,并在每个会话的开始和结束时记录用户名和服务类型。日志由systemd-journald服务收集,可使用journalctl命令查看。日志也存储在/var/log/secure中。此模块可以通过与其他会话模块堆叠来补充其它功能。
第 11 章 将身份验证从 nslcd 迁移到 SSSD 复制链接链接已复制到粘贴板!
11.1. 将 RHEL 客户端从 nslcd 迁移到 SSSD 复制链接链接已复制到粘贴板!
由于 nss-pam-ldapd 软件包已从 RHEL 中删除,因此红帽建议迁移到 SSSD 及其 ldap 提供程序,它取代了 nslcd 服务的功能。以下流程描述了如何配置 SSSD,以便在之前配置为使用 nss-pam-ldap 身份验证配置的客户端上来验证 LDAP 用户。
先决条件
- 您的 RHEL 客户端是 RHEL 8 或 RHEL 9。
-
您之前已将 RHEL 客户端配置为使用
nslcd服务认证到 LDAP 目录服务器。 - LDAP 目录服务使用 RFC-2307 中定义的模式。
流程
备份当前的身份验证配置:
authselect apply-changes -b --backup=ldap-configuration-backup
# authselect apply-changes -b --backup=ldap-configuration-backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
SSSD软件包:yum install sssd-ldap sssd-ad sssd-client \ sssd-common sssd-common-pac \ sssd-krb5 sssd-krb5-common
# yum install sssd-ldap sssd-ad sssd-client \ sssd-common sssd-common-pac \ sssd-krb5 sssd-krb5-commonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 停止并禁用
nslcd和nscd服务:systemctl stop nslcd nscd systemctl disable nslcd nscd
# systemctl stop nslcd nscd # systemctl disable nslcd nscdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
SSSD配置身份验证:authselect select sssd with-mkhomedir --force
# authselect select sssd with-mkhomedir --forceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为
SSSD配置文件设置必要的所有权和权限:chown root:root /etc/sssd/sssd.conf chmod 600 /etc/sssd/sssd.conf
# chown root:root /etc/sssd/sssd.conf # chmod 600 /etc/sssd/sssd.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
/etc/sssd/sssd.conf文件进行编辑。 输入以下配置,将
example.com和dc=example,dc=com等值替换为适合您环境的值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可能需要在
SSSD配置中指定 LDAP 模式:如果您在目录服务器中使用 RFC-2307bis 模式,请在
[domain/EXAMPLE.COM]部分中添加以下行:ldap_schema = rfc2307bis
ldap_schema = rfc2307bisCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用微软目录服务器服务器,请在
[domain/EXAMPLE.COM]部分中添加以下行,以启用基于 LDAP 的身份验证:ldap_schema = ad
ldap_schema = adCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您需要 Kerberos 身份验证,红帽建议使用
realm命令将 RHEL 客户端加入到 AD 域中,该命令会自动配置SSSD服务。启用并启动
SSSD服务:systemctl enable sssd systemctl start sssd
# systemctl enable sssd # systemctl start sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
确保您可以检索有关 LDAP 用户的信息:
id ldapuser getent passwd ldapuser
# id ldapuser uid=100424(ldapuser) gid=100424(ldapuser) groups=100424(ldapuser) # getent passwd ldapuser ldapuser:*: 100424: 100424:User, LDAP:/home/ldapuser:/bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保您可以以 LDAP 用户身份登录:
ssh -l ldapuser localhost
# ssh -l ldapuser localhost ldapuser@localhost's password: Last login: Tue Dec 07 19:34:35 2021 from localhost -sh-4.2$Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您需要使用 nslcd 和 nscd 恢复初始的 LDAP 配置,请使用以下命令:
authselect backup-restore=ldap-configuration-backup systemctl stop sssd && systemctl disable sssd systemctl start nslcd nscd systemctl enable nslcd nscd
# authselect backup-restore=ldap-configuration-backup
# systemctl stop sssd && systemctl disable sssd
# systemctl start nslcd nscd
# systemctl enable nslcd nscd
11.2. sssd.conf 选项等同于 nslcd.conf 选项 复制链接链接已复制到粘贴板!
为了帮助从 nslcd 迁移到 SSSD,下表显示了 nslcd.conf 配置文件中的常用选项,以及它们在 sssd.conf 配置文件中等同的选项。
nslcd.conf 选项 | sssd.conf 选项 | 描述 |
|---|---|---|
|
| 没有等同选项 |
运行守护进程的用户 ID。默认情况下,SSSD 以 |
|
| 没有等同选项 |
运行守护进程的组 ID。默认情况下,SSSD 以 |
|
|
|
LDAP 服务器的 URI,格式为: |
|
|
| 搜索基础的专有名称。 |
|
|
| 用于执行 LDAP 操作的默认绑定 DN |
|
|
| 默认绑定 DN 的身份验证令牌。目前只支持明文密码。 |
|
|
| 默认绑定 DN 的身份验证令牌。目前只支持明文密码。 |
|
|
| 指定在服务器提供的证书上执行哪些检查。 |
|
|
| 包含所有证书颁发机构证书的文件 |
|
|
| 在单独的文件中包含证书颁发机构证书的目录的路径。 |
|
|
| 可选的基本 DN、搜索范围和 LDAP 过滤器以限制 LDAP 搜索用户。 |
|
|
| 可选的基本 DN、搜索范围和 LDAP 过滤器以限制 LDAP 搜索组。 |
第 12 章 在本地 SSSD 配置中消除拼写错误 复制链接链接已复制到粘贴板!
您可以使用 sssctl config-check 命令测试主机上的 /etc/sssd/sssd.conf 文件是否包含任何拼写错误。
先决条件
- 以 root 身份登录。
-
sssd-tools软件包已安装。
流程
输入
sssctl config-check命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
/etc/sssd/sssd.conf文件并更正拼写错误。例如,如果您收到上一步中的出错信息,将ldap_search替换为ldap_search_base:[...] [domain/<domain_name>] ldap_search_base = dc=<domain_component>,dc=<tld> [...]
[...] [domain/<domain_name>] ldap_search_base = dc=<domain_component>,dc=<tld> [...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
重启 SSSD:
systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
输入
sssctl config-check命令:sssctl config-check
# sssctl config-checkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出应该表示没有发现问题:
Issues identified by validators: 0 Messages generated during configuration merging: 0 Used configuration snippet files: 0
Issues identified by validators: 0
Messages generated during configuration merging: 0
Used configuration snippet files: 0
/etc/sssd/sssd.conf 文件现在没有拼写错误。
第 13 章 IdM 中 SSSD 身份验证故障排除 复制链接链接已复制到粘贴板!
在 Identity Management(IdM)环境中的身份验证涉及许多组件:
在 IdM 客户端中:
- SSSD 服务。
- Name Services Switch (NSS)。
- 可插拔验证模块 (PAM)。
在 IdM 服务器上:
- SSSD 服务。
- IdM 目录服务器。
- IdM Kerberos 密钥分发中心 (KDC)。
如果您要以 Active Directory (AD) 用户进行身份验证:
- AD 域控制器上的目录服务器。
- AD 域控制器上的 Kerberos 服务器。
要验证用户,您必须使用 SSSD 服务执行以下功能:
- 从身份验证服务器检索用户信息。
- 提示用户输入其凭据,将这些凭据传递到身份验证服务器,然后处理结果。
故障排除涉及了解 SSSD 服务与存储用户信息的服务器之间的信息流。这有助于您确定问题的发生位置,并缩小潜在的原因。
13.1. 使用 SSSD 获取 IdM 用户信息时的数据流 复制链接链接已复制到粘贴板!
下图使用 getent passwd <idm_user_name> 命令在请求 IdM 用户信息的过程中简化 IdM 客户端和 IdM 服务器之间的信息流。
使用 getent passwd在 IdM 客户端和服务器之间用于用户信息检索的信息流
-
getent命令会触发来自libc库的getpwnam调用。 -
libc库引用/etc/nsswitch.conf配置文件来检查哪个服务负责提供用户信息,并发现SSSD服务的条目。 -
libc库打开ss_sss模块。 -
nss_sss 模块检查内存映射缓存以获取用户信息。如果缓存中存在数据,则
ss_sss模块会返回它。 -
如果用户信息不在内存映射缓存中,则会将请求传递给 SSSD
sssd_nss响应程序进程。 -
SSSD 服务检查其缓存。如果缓存中存在数据并有效,
sssd_nss响应程序会从缓存中读取数据并将其返回到应用。 -
如果缓存中没有数据或数据已过期,
sssd_nss响应器将查询相应的后端进程并等待回复。SSSD 服务在 IdM 环境中使用 IPA 后端,通过sssd.conf配置文件中的id_provider=ipa启用。 -
sssd_be后端进程连接到 IdM 服务器,并从 IdM LDAP 目录服务器请求信息。 - IdM 服务器上的 SSSD 后端响应 IdM 客户端上的 SSSD 后端进程。
- 客户端上的 SSSD 后端将生成的数据存储在 SSSD 缓存中,并提醒已更新缓存的响应程序进程。
-
sssd_nss前端响应器进程从 SSSD 缓存检索信息。 -
sssd_nss响应器将用户信息发送到ss_sss响应者,以完成请求。 -
libc库将用户信息返回到请求它的应用程序。
13.2. 使用 SSSD 获取 AD 用户信息时的数据流 复制链接链接已复制到粘贴板!
如果您在 IdM 环境和活动目录(AD)域之间建立了一个跨林信任,则检索 IdM 客户端的 AD 用户信息时的信息流与检索 IdM 用户信息时的信息流非常相似,只是多了一个联系 AD 用户数据库的额外步骤。
下图是当用户使用 getent passwd <user_name@ad.example.com> 命令请求 AD 用户信息时,简化了 信息流。这个图并没有包括使用 SSSD 检索 IdM 用户信息时的数据流中讨论的内部详细信息。它侧重于 IdM 客户端上的 SSSD 服务、IdM 服务器上的 SSSD 服务和 AD 域控制器上的 LDAP 数据库之间的通信。
在 IdM 客户端、IdM 服务器和 AD 域控制器之间检索 AD 用户信息的信息流
- IdM 客户端为 AD 用户信息查找其本地 SSSD 缓存。
-
如果 IdM 客户端没有用户信息,或者信息是 stale,客户端上的 SSSD 服务会联系 IdM 服务器上的
extdom_extop插件来执行 LDAP 扩展操作并请求信息。 - IdM 服务器上的 SSSD 服务在其本地缓存中查找 AD 用户信息。
- 如果 IdM 服务器在其 SSSD 缓存中没有用户信息,或者其信息为过时,它将执行 LDAP 搜索,以从 AD 域控制器请求用户信息。
- IdM 服务器上的 SSSD 服务从 AD 域控制器接收 AD 用户信息,并将其存储在其缓存中。
-
extdom_extop插件从 IdM 服务器上的 SSSD 服务接收信息,该服务完成 LDAP 扩展操作。 - IdM 客户端上的 SSSD 服务从 LDAP 扩展操作接收 AD 用户信息。
- IdM 客户端将 AD 用户信息存储在其 SSSD 缓存中,并将信息返回给请求它的应用程序。
13.3. 以 IdM 中的 SSSD 用户身份进行身份验证时的数据流 复制链接链接已复制到粘贴板!
以 IdM 服务器或客户端中的用户身份进行身份验证涉及以下组件:
-
启动身份验证请求的服务,如
sshd服务。 - 可插拔验证模块 (PAM) 库及其模块。
- SSSD 服务、其响应者和后端。
- 智能卡读取器(如果配置了智能卡验证)。
身份验证服务器:
- IdM 用户通过 IdM Kerberos 密钥分发中心 (KDC) 进行身份验证。
- Active Directory (AD) 用户通过 AD 域控制器 (DC) 进行身份验证。
下图是用户在尝试通过命令行上的 SSH 服务在本地登录主机期间需要进行身份验证时的简化信息流。
在身份验证尝试过程中,IdM 客户端和 AD 域控制器之间的信息流
-
使用
ssh命令尝试身份验证会触发libpam库。 libpam库引用/etc/pam.d/目录中与请求身份验证尝试的服务对应的 PAM 文件。在本例中,libpam 库涉及通过本地主机上的 SSH 服务进行身份验证,libpam库检查/etc/pam.d/system-auth配置文件并发现 SSSD PAM 的pam_sss.so条目:auth sufficient pam_sss.so
auth sufficient pam_sss.soCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
要确定哪些身份验证方法可用,
libpam库会打开pam_sss模块,并将SSS_PAM_PREAUTH请求发送到 SSSD 服务的sssd_pamPAM 响应者。 -
如果配置了智能卡验证,SSSD 服务会生成一个临时
p11_child进程,以检查智能卡并从中检索证书。 -
如果为用户配置了智能卡验证,
sssd_pam响应程序会尝试将智能卡中的证书与用户匹配。sssd_pam响应器还搜索用户所属的组,因为组成员身份可能会影响访问控制。 -
sssd_pam响应器将SSS_PAM_PREAUTH请求发送到sssd_be后端响应器,以查看服务器支持的身份验证方法,如密码或双因素身份验证。在 IdM 环境中,SSSD 服务使用 IPA 响应器,默认的身份验证方法是 Kerberos。在本例中,用户使用简单的 Kerberos 密码进行身份验证。 -
sssd_be响应器生成一个临时krb5_child进程。 -
krb5_child进程联系 IdM 服务器上的 KDC,并检查可用的身份验证方法。 KDC 响应请求:
-
krb5_child进程评估回复,并将结果发回到sssd_be后端进程。 -
sssd_be后端进程会收到结果。 -
sssd_pam响应器会收到结果。 -
pam_sss模块会收到结果。
-
-
如果为用户配置了密码身份验证,
pam_sss模块将提示用户输入其密码。如果配置了智能卡验证,pam_sss模块会提示用户输入其智能卡 PIN。 模块会发送带有用户名和密码的
SSS_PAM_AUTHENTICATE请求,该请求经过以下操作:-
sssd_pam响应器。 -
sssd_be后端进程。
-
-
sssd_be进程生成一个临时krb5_child进程来联系 KDC。 -
krb5_child进程尝试使用用户提供的用户名和密码从 KDC 检索 Kerberos Ticket Granting Ticket (TGT)。 -
krb5_child进程接收身份验证尝试的结果。 krb5_child进程:- 将 TGT 存储到凭据缓存中。
-
将身份验证结果返回到
sssd_be后端进程。
身份验证结果从
sssd_be进程传输到:-
sssd_pam响应器。 -
pam_sss模块。
-
-
pam_sss模块使用用户 TGT 的位置设置环境变量,以便其他应用可以引用它。
13.4. 缩小身份验证问题的范围 复制链接链接已复制到粘贴板!
要成功验证用户,您必须能够使用 SSSD 服务从存储用户信息的数据库检索用户信息。以下流程描述了测试身份验证流程的不同组件的步骤,以便您可以在用户无法登录时缩小身份验证问题的范围。
流程
验证 SSSD 服务及其进程是否正在运行。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证客户端可以通过 IP 地址联系用户数据库服务器。
ping <IP_address_of_the_database_server>
[user@client ~]$ ping <IP_address_of_the_database_server>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果此步骤失败,请检查您的网络和防火墙设置是否允许 IdM 客户端和服务器之间进行直接通信。请参阅使用和配置 firewalld。
验证客户端可以通过完全限定的主机名发现并联系 IdM LDAP 服务器(适用于 IdM 用户)或 AD 域控制器( AD 用户)。
dig -t SRV ldap._tcp.<domain>@<server_name> ping <fully_qualified_host_name_of_the_server>
[user@client ~]$ dig -t SRV ldap._tcp.<domain>@<server_name> [user@client ~]$ ping <fully_qualified_host_name_of_the_server>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果此步骤失败,请检查您的 Dynamic Name Service (DNS) 设置,包括
/etc/resolv.conf文件。请参阅配置 DNS 服务器顺序。注意默认情况下,SSSD 服务会尝试通过 DNS 服务 (SRV) 记录自动发现 LDAP 服务器和 AD DC。要将 SSSD 限制到特定的服务器,请使用以下选项在
sssd.conf配置文件中定义它们:-
ipa_server = <fully_qualified_host_name_of_the_server> -
ad_server = <fully_qualified_host_name_of_the_server> -
ldap_uri = <fully_qualified_host_name_of_the_server>
如果使用这些选项,请验证您可以联系它们中列出的服务器。
-
验证客户端是否可以对 LDAP 服务器进行身份验证,并使用
ldapsearch命令检索用户信息。如果您的 LDAP 服务器是 IdM 服务器,如
server.example.com,检索主机的 Kerberos 票据,并使用主机 Kerberos 主体进行身份验证数据库搜索:kinit -k 'host/client.example.com@EXAMPLE.COM' ldapsearch -LLL -Y GSSAPI -h server.example.com -b “dc=example,dc=com” uid=<idm_user>
[user@client ~]$ kinit -k 'host/client.example.com@EXAMPLE.COM' [user@client ~]$ ldapsearch -LLL -Y GSSAPI -h server.example.com -b “dc=example,dc=com” uid=<idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的 LDAP 服务器是 Active Directory (AD) 域控制器 (DC),如
server.ad.example.com,请检索主机的 Kerberos 票据,并使用主机 Kerberos 主体执行数据库搜索:kinit -k 'CLIENT$@AD.EXAMPLE.COM' ldapsearch -LLL -Y GSSAPI -h server.ad.example.com -b “dc=example,dc=com” sAMAccountname=<idm_user>
[user@client ~]$ kinit -k 'CLIENT$@AD.EXAMPLE.COM' [user@client ~]$ ldapsearch -LLL -Y GSSAPI -h server.ad.example.com -b “dc=example,dc=com” sAMAccountname=<idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的 LDAP 服务器是普通 LDAP 服务器,且您在
sssd.conf文件中设置了ldap_default_bind_dn和ldap_default_authtok选项,请验证是同一个ldap_default_bind_dn帐户:ldapsearch -xLLL -D "cn=ldap_default_bind_dn_value" -W -h ldapserver.example.com -b “dc=example,dc=com” uid=<idm_user>
[user@client ~]$ ldapsearch -xLLL -D "cn=ldap_default_bind_dn_value" -W -h ldapserver.example.com -b “dc=example,dc=com” uid=<idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果此步骤失败,请验证您的数据库设置是否允许您的主机搜索 LDAP 服务器。
由于 SSSD 服务使用 Kerberos 加密,因此请以无法登录的用户身份获得 Kerberos 票据。
如果您的 LDAP 服务器是 IdM 服务器:
kinit <idm_user>
[user@client ~]$ kinit <idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 LDAP 服务器数据库是 AD 服务器:
kinit <ad_user@AD.EXAMPLE.COM>
[user@client ~]$ kinit <ad_user@AD.EXAMPLE.COM>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果此步骤失败,请验证您的 Kerberos 服务器是否正常运行,所有服务器都已同步其时间,并且用户帐户未被锁定。
验证您是否可以检索有关命令行的用户信息。
getent passwd <idm_user> id <idm_user>
[user@client ~]$ getent passwd <idm_user> [user@client ~]$ id <idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果这一步失败了,请验证客户端上的 SSSD 服务是否可以收到用户数据库的信息:
-
查看
/var/log/messages日志文件中的错误。 - 在 SSSD 服务中启用详细的日志记录,收集调试日志,并查看提示性日志以了解问题的来源。
- 可选:创建一个红帽技术支持问题单,并提供您收集的故障排除信息。
-
查看
如果主机上具有
sudo权限,请使用sssctl工具来验证该用户是否被允许登录。sudo sssctl user-checks -a auth -s ssh <idm_user>
[user@client ~]$ sudo sssctl user-checks -a auth -s ssh <idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果这一步失败了,请验证您的授权设置,如 PAM 配置、IdM HBAC 规则和 IdM RBAC 规则:
-
确保用户的 UID 等于或大于
UID_MIN,它在/etc/login.defs文件中定义。 -
查看
/var/log/secure和/var/log/messages日志文件中的授权错误。 - 在 SSSD 服务中启用详细的日志记录,收集调试日志,并查看提示性日志以了解问题的来源。
- 可选:创建一个红帽技术支持问题单,并提供您收集的故障排除信息。
-
确保用户的 UID 等于或大于
13.5. SSSD 日志文件和日志记录级别 复制链接链接已复制到粘贴板!
每个 SSSD 服务都将日志记录到 /var/log/sssd/ 目录中自己的日志文件中。对于 example.com IdM 域中的 IdM 服务器,其日志文件可能类似这样:
SSSD 日志文件用途
krb5_child.log- Kerberos 身份验证中涉及的短期帮助程序进程的日志文件。
ldap_child.log- 与 LDAP 服务器通信的简短帮助程序进程的日志文件,涉及获取 Kerberos 票据。
sssd_<domain_name>.log对于
sssd.conf文件中的每个域部分,SSSD 服务会将与 LDAP 服务器通信的信息记录到单独的日志文件中。例如,在名为example.com的 IdM 域环境中,SSSD 服务将其信息记录到名为sssd_example.com.log的文件中。如果主机直接与名为ad.example.com的 AD 域集成,则信息将被记录到名为sssd_ad.example.com.log的文件中。注意如果您有一个 IdM 环境以及与 AD 域的跨林信任,则有关 AD 域的信息仍会记录到 IdM 域的日志文件中。
类似地,如果主机直接集成到 AD 域,则任何子域的信息都会写入到主域的日志文件中。
selinux_child.log- 用于检索和设置 SELinux 信息的短生命帮助器进程的日志文件。
sssd.log- SSSD 监控并与其响应器和后端进程通信的日志文件。
sssd_ifp.log- InfoPipe 响应器的日志文件,它提供了一个可通过系统总线访问的公共 D-Bus 接口。
sssd_nss.log- 用于检索用户和组信息的 Name Services Switch (NSS) 响应器的日志文件。
sssd_pac.log- Microsoft Privilege Attribute 证书 (PAC) 响应器的日志文件,从 AD Kerberos 票据收集 PAC,并从 PAC 中生成 AD 用户的信息,从而避免直接从 AD 请求它。
sssd_pam.log- 可插拔验证模块 (PAM) 响应器的日志文件。
sssd_ssh.log- SSH 响应器进程的日志文件。
SSSD 日志记录级别
设置一个 debug 级别后,也会启用它以下的所有 debug 级别。例如,把 debug 级别设置为 6 后,也会启用 debug 级别 0 到 5。
| 级别 | 描述 |
|---|---|
| 0 | 致命故障。阻止 SSSD 服务启动或导致它终止的错误。这是 RHEL 8.3 及更早版本的默认调试日志级别。 |
| 1 | 关键故障。错误没有导致 SSSD 服务被终止,但至少有一个主要功能无法正常工作。 |
| 2 | 严重故障。这个错误声明特定请求或操作失败。这是 RHEL 8.4 及之后的版本的默认调试日志级别。 |
| 3 | 小故障。在级别 2 中捕获的操作失败的错误。 |
| 4 | 配置设置。 |
| 5 | 功能数据。 |
| 6 | 跟踪操作功能的消息。 |
| 7 | 跟踪内部控制功能的消息。 |
| 8 | 功能内部变量的内容。 |
| 9 | 极低级别跟踪信息。 |
13.6. 在 sssd.conf 文件中为 SSSD 启用详细日志记录 复制链接链接已复制到粘贴板!
默认情况下,RHEL 8.4 及更新版本中的 SSSD 服务仅记录严重故障(调试级别 2),但不记录在对身份验证问题进行故障排除所需的详细级别。
要在 SSSD 服务重启过程中永久启用详细的日志记录,请在 /etc/sssd/sssd.conf 配置文件的每个部分添加 debug_level=<integer> 选项,其中 <integer> 值是一个 0 到 9 之间的数字。debug 级别 0 到 3 会记录大错误的日志,级别 8 和更高级别会提供大量详细的日志消息。级别 6 是调试身份验证问题的一个良好起点。
先决条件
-
您需要 root 密码来编辑
sssd.conf配置文件并重新启动 SSSD 服务。
流程
-
在文本编辑器中打开
/etc/sssd/sssd.conf文件。 将
debug_level选项添加到文件的每个部分,并将 debug 级别设置为您选择的详细程度。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存并关闭
sssd.conf文件。 重启 SSSD 服务以加载新的配置设置。
systemctl restart sssd
[root@server ~]# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.7. 使用 sssctl 命令为 SSSD 启用详细的日志记录 复制链接链接已复制到粘贴板!
默认情况下,RHEL 8.4 及更新版本中的 SSSD 服务仅记录严重故障(调试级别 2),但不记录在对身份验证问题进行故障排除所需的详细级别。
您可以在命令行中使用 sssctl debug-level <integer> 命令更改 SSSD 服务的 debug 级别,其中 <integer> 是 0 到 9 之间的一个数字。debug 级别 0 到 3 会记录大错误的日志,级别 8 和更高级别会提供大量详细的日志消息。级别 6 是调试身份验证问题的一个良好起点。
先决条件
-
您需要 root 密码来运行
sssctl命令。
流程
使用
sssctl debug-level命令将 debug 级别设置为您所需的详细程度。例如:sssctl debug-level 6
[root@server ~]# sssctl debug-level 6Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.8. 从 SSSD 服务收集调试日志,对 IdM 服务器的身份验证问题进行故障排除 复制链接链接已复制到粘贴板!
如果您在尝试以 IdM 用户身份对 IdM 服务器进行身份验证时遇到问题,请在服务器上的 SSSD 服务中启用详细的调试日志,并收集尝试检索用户信息的日志。
先决条件
-
您有
root权限。
流程
在 IdM 服务器上启用详细的 SSSD 调试日志。
sssctl debug-level 6
[root@server ~]# sssctl debug-level 6Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于遇到身份验证问题的用户,在 SSSD 缓存中使相关的对象无效,这样使您不会绕过 LDAP 服务器来从缓存的 SSSD 中获取信息。
sssctl cache-expire -u <idm_user>
[root@server ~]# sssctl cache-expire -u <idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过删除旧的 SSSD 日志来最大程度减少数据集的故障排除。
sssctl logs-remove
[root@server ~]# sssctl logs-removeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 尝试切换至遇到身份验证问题的用户,同时在尝试前后收集时间戳。这些时间戳进一步缩小了数据集的范围。
date; su <idm_user>; date
[root@server sssd]# date; su <idm_user>; date Mon Mar 29 15:33:48 EDT 2021 su: user idm_user does not exist Mon Mar 29 15:33:49 EDT 2021Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果您不想继续收集详细的 SSSD 日志,请降低 debug 级别。
sssctl debug-level 2
[root@server ~]# sssctl debug-level 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看 SSSD 日志,了解失败请求的信息。例如,检查
/var/log/sssd/sssd_example.com.log文件表明 SSSD 服务没有在cn=accounts,dc=example,dc=comLDAP 子树中找到用户。这可能表示用户不存在,或者存在于其他位置。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您无法确定导致身份验证问题的原因:
收集您最近生成的 SSSD 日志。
sssctl logs-fetch sssd-logs-Mar29.tar
[root@server ~]# sssctl logs-fetch sssd-logs-Mar29.tarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个红帽技术支持问题单并提供:
-
SSSD 日志:
sssd-logs-Mar29.tar 与日志对应的请求的控制台输出,包括时间戳和用户名:
date; id <idm_user>; date
[root@server sssd]# date; id <idm_user>; date Mon Mar 29 15:33:48 EDT 2021 id: 'idm_user': no such user Mon Mar 29 15:33:49 EDT 2021Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
SSSD 日志:
13.9. 从 SSSD 服务收集调试日志,以对 IdM 客户端的身份验证问题进行故障排除 复制链接链接已复制到粘贴板!
如果您在尝试以 IdM 用户身份向 IdM 客户端进行身份验证时遇到问题,请验证您是否可以检索有关 IdM 服务器的用户信息。如果您无法检索有关 IdM 服务器的用户信息,您将无法在 IdM 客户端上检索它(其会从 IdM 服务器检索信息)。
确认身份验证问题不源自 IdM 服务器后,从 IdM 服务器和 IdM 客户端收集 SSSD 调试日志。
先决条件
- 用户仅在 IdM 客户端而不是 IdM 服务器中存在身份验证问题。
-
您需要 root 密码来运行
sssctl命令并重新启动 SSSD 服务。
流程
-
在客户端上: 在文本编辑器中打开
/etc/sssd/sssd.conf文件。 在客户端: 将
ipa_server选项添加到文件的[domain]部分,并使用其完全限定域名(FQDN)将其设置为 IdM 服务器。这可避免 IdM 客户端自动发现其他 IdM 服务器,从而将此测试限制为一个客户端和一个服务器。[domain/<idm_domain_name>] ipa_server = <idm_server_fqdn> ...
[domain/<idm_domain_name>] ipa_server = <idm_server_fqdn> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在客户端上: 保存并关闭
sssd.conf文件。 在客户端上:重启 SSSD 服务以加载配置更改。
systemctl restart sssd
[root@client ~]# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在服务器和客户端上:启用详细的 SSSD 调试日志。
sssctl debug-level 6
[root@server ~]# sssctl debug-level 6Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl debug-level 6
[root@client ~]# sssctl debug-level 6Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在服务器和客户端中:为遇到身份验证问题的用户验证 SSSD 缓存中的对象,因此您不用绕过 LDAP 数据库,并检索 SSSD 信息已经缓存。
sssctl cache-expire -u <idm_user>
[root@server ~]# sssctl cache-expire -u <idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl cache-expire -u <idm_user>
[root@client ~]# sssctl cache-expire -u <idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在服务器和客户端上:通过删除旧的 SSSD 日志来最小化 dataset 故障排除。
sssctl logs-remove
[root@server ~]# sssctl logs-removeCopy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl logs-remove
[root@server ~]# sssctl logs-removeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在客户端上:尝试切换至遇到身份验证问题的用户,同时在尝试前后收集时间戳。这些时间戳进一步缩小了数据集的范围。
date; su <idm_user>; date
[root@client sssd]# date; su <idm_user>; date Mon Mar 29 16:20:13 EDT 2021 su: user idm_user does not exist Mon Mar 29 16:20:14 EDT 2021Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 在服务器和客户端上: 如果您不想继续收集详细的 SSSD 日志,请降低 debug 级别。
sssctl debug-level 0
[root@server ~]# sssctl debug-level 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl debug-level 0
[root@client ~]# sssctl debug-level 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 服务器和客户端:查看 SSSD 日志以获取有关失败请求的信息。
- 在客户端日志中查看来自客户端的请求。
- 在服务器日志中查看来自客户端的请求。
- 在服务器日志中检查请求的结果。
- 查看客户端收到来自服务器的请求结果的结果。
如果您无法确定导致身份验证问题的原因:
收集您最近在 IdM 服务器和 IdM 客户端中生成的 SSSD 日志。根据主机名或角色标记它们。
sssctl logs-fetch sssd-logs-server-Mar29.tar
[root@server ~]# sssctl logs-fetch sssd-logs-server-Mar29.tarCopy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl logs-fetch sssd-logs-client-Mar29.tar
[root@client ~]# sssctl logs-fetch sssd-logs-client-Mar29.tarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个红帽技术支持问题单并提供:
SSSD 调试日志:
-
来自服务器的
sssd-logs-server-Mar29.tar。 -
来自客户端的
sssd-logs-client-Mar29.tar
-
来自服务器的
与日志对应的请求的控制台输出,包括时间戳和用户名:
date; su <idm_user>; date
[root@client sssd]# date; su <idm_user>; date Mon Mar 29 16:20:13 EDT 2021 su: user idm_user does not exist Mon Mar 29 16:20:14 EDT 2021Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.10. 跟踪 SSSD 后端中的客户端请求 复制链接链接已复制到粘贴板!
SSSD 异步处理请求,并将来自不同请求的消息添加到同一日志文件中。要在后端日志中跟踪客户端请求,您可以使用唯一的请求标识符 RID" <integer> 和客户端 ID '[CID # <integer>]。这些标识符有助于隔离日志,以遵循跨多个 SSSD 组件的日志文件从头到尾的请求。
先决条件
- 您已启用了调试日志,并且已从 IdM 客户端提交了请求。
-
您有
root特权。
流程
要查看 SSSD 日志文件,请使用
less工具打开日志文件/var/log/sssd/sssd_<domain_name>.log。例如:less /var/log/sssd/sssd_example.com.log
[root@server ~]# less /var/log/sssd/sssd_example.com.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看 SSSD 日志,以了解有关客户端请求的信息。
(2021-07-26 18:26:37): [be[testidm.com]] [dp_req_destructor] (0x0400): [RID#3] Number of active DP request: 0 (2021-07-26 18:26:37): [be[testidm.com]] [dp_req_reply_std] (0x1000): [RID#3] DP Request AccountDomain #3: Returning [Internal Error]: 3,1432158301,GetAccountDomain() not supported (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] DP Request Account #4: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] Number of active DP request: 1
(2021-07-26 18:26:37): [be[testidm.com]] [dp_req_destructor] (0x0400): [RID#3] Number of active DP request: 0 (2021-07-26 18:26:37): [be[testidm.com]] [dp_req_reply_std] (0x1000): [RID#3] DP Request AccountDomain #3: Returning [Internal Error]: 3,1432158301,GetAccountDomain() not supported (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] DP Request Account #4: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] Number of active DP request: 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个 SSSD 日志文件的示例输出显示了两个不同请求的唯一标识符
RID#3和RID#4。
但是,对 SSSD 客户端接口的单一客户端请求通常会在后端触发多个请求,因此客户端请求和后端中的请求之间不是 1 对 1 的关系。虽然后端中的多个请求有不同的 RID 号,但每个初始后端请求都包括唯一的客户端 ID,这样管理员就可以通过多个 RID 号追踪到单个客户端请求。
以下示例显示了一个客户端请求 [sssd.nss CID #1],以及后端中生成的多个请求,[RID#5] 到 [RID#13]:
13.11. 使用日志分析器工具跟踪客户端请求 复制链接链接已复制到粘贴板!
系统安全服务守护进程(SSSD)包含一个日志解析工具,可用于跟踪跨多个 SSSD 组件的日志文件从头到尾的请求。
13.11.1. 日志分析器工具如何工作 复制链接链接已复制到粘贴板!
使用日志解析工具,您可以跨多个 SSSD 组件的日志文件来从头到尾追踪 SSSD 请求。您可以使用 sssctl analyze 命令运行分析器工具。
日志分析器工具帮助您解决 SSSD 中的 NSS 和 PAM 问题,并更容易查看 SSSD 调试日志。您只能提取和打印与跨 SSSD 进程的某些客户端请求相关的 SSSD 日志。
SSSD 会从用户身份验证(su、ssh)信息来分别追踪用户和组身份信息(id,getent)。NSS 响应器中的客户端 ID(CID)与 PAM 响应器中的 CID 无关,在分析 NSS 和 PAM 请求时您会看到重叠的号。使用 sssctl analyze 命令和 --pam 选项来查看 PAM 请求。
从 SSSD 内存缓存返回的请求不会被记录,不能通过日志分析器工具进行追踪。
13.11.2. 运行日志分析器工具 复制链接链接已复制到粘贴板!
使用日志分析器工具跟踪和分析 SSSD 中的客户端请求。
先决条件
-
您必须在
[$responder]部分和/etc/sssd/sssd.conf文件的[domain/$domain]部分中至少将debug_level设置为至少 7,以启用日志解析功能。 -
要分析的日志必须来自使用支持的
libtevent链 ID 所构建的 SSSD 的兼容版本,这就是 RHEL 8.5 及之后版本中的 SSSD。
流程
在
list模式下运行日志分析器工具以确定您在跟踪的请求的客户端 ID,添加-v选项以显示详细输出:sssctl analyze request list -v
# sssctl analyze request list -vCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会显示最近对 SSSD 所做的客户端请求的详细列表。
注意如果分析 PAM 请求,请运行
sssctl analyze request list命令和--pam选项。使用
show [unique client ID]选项运行日志分析器工具,来显示与指定客户端 ID 号相关的日志:sssctl analyze request show 20
# sssctl analyze request show 20Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,您可以针对日志文件运行日志分析器工具,例如:
sssctl analyze --logdir=/tmp/var/log/sssd request list
# sssctl analyze --logdir=/tmp/var/log/sssd request listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.12. 其它资源 复制链接链接已复制到粘贴板!
- 常规 SSSD 调试 过程(红帽知识库)
第 14 章 为单点登录配置应用程序 复制链接链接已复制到粘贴板!
单点登录(SSO)是一种身份验证模式,允许您通过一个登录流程登录多个系统。您可以将浏览器和电子邮件客户端配置为使用 Kerberos 票据、SSL 认证或令牌来作为对用户进行身份验证的一种方法。
不同应用程序的配置可能有所不同。本章演示了以 Mozilla Thunderbird 电子邮件客户端和 Mozilla Firefox Web 浏览器为例,来如何配置 SSO 身份验证模式。
14.1. 先决条件 复制链接链接已复制到粘贴板!
您已安装了以下应用程序:
- Mozilla Firefox 版本 88
- Mozilla Thunderbird 版本 78
14.2. 将 Firefox 配置为使用 Kerberos 进行单点登录 复制链接链接已复制到粘贴板!
您可以将 Firefox 配置为使用 Kerberos 对互联网站点和其他受保护的网站进行单点登录(SSO)。为此,您必须首先配置 Firefox ,来向合适的密钥分发中心(KDC)发送 Kerberos 凭据。
即使将 Firefox 配置为传递 Kerberos 凭据,您仍需要有效的 Kerberos 票据。要生成 Kerberos 票据,请使用 kinit 命令并在 KDC 上提供用户密码。
[jsmith@host ~] $ kinit Password for jsmith@EXAMPLE.COM:
[jsmith@host ~] $ kinit
Password for jsmith@EXAMPLE.COM:
流程
-
在 Firefox 的地址栏中,输入
about:config来显示当前配置选项的列表。 -
在 Filter 字段中,键入
negotiate来限制选项列表。 - 双击 network.negotiate-auth.trusted-uris 项。
输入要进行身份验证的域的名称,包括前面的句点(.)。如果要添加多个域,请在逗号分隔的列表中输入它们。
图 14.1. 手动 Firefox 配置
14.3. 查看 Firefox 中的证书 复制链接链接已复制到粘贴板!
您可以在 Mozilla Firefox 中查看存储的证书以验证身份验证设置。
流程
在 Mozilla Firefox 中,打开 Firefox 菜单并选择 Preferences。
在左侧面板中,选择 Privacy & Security 部分。
- 向下滚动到 证书 部分。
点 View Certificates 打开 Certificate Manager。
14.4. 在 Firefox 中导入 CA 证书 复制链接链接已复制到粘贴板!
您可以将证书导入到 Mozilla Firefox 中,以与使用这些证书进行安全连接的网站、服务器或应用程序建立信任。
先决条件
- 您的设备上已有一个 CA 证书。
流程
- 打开证书管理器。
选择 Authorities 标签页,点 Import。
图 14.2. 在 Firefox 中导入 CA 证书
- 从您的设备中选择下载的 CA 证书。
14.5. 在 Firefox 中编辑证书信任设置 复制链接链接已复制到粘贴板!
您可以更改 Mozilla Firefox 信任证书的方式。
先决条件
- 您已成功导入了证书。
流程
- 打开证书管理器。
- 在 Authorities 选项卡下,选择适当的证书,再单击 Edit Trust。
编辑证书信任设置。
图 14.3. 在 Firefox 中编辑证书信任设置
14.6. 在 Firefox 中导入用于身份验证的个人证书 复制链接链接已复制到粘贴板!
您可以导入用于身份验证的个人证书到网站和服务。
先决条件
- 您的设备上已存储了一个个人证书。
流程
- 打开证书管理器。
选择 您的证书 选项卡,然后单击 导入。
图 14.4. 在 Firefox 中导入用于身份验证的个人证书
- 从您的计算机导入适当的证书。
14.7. 查看 Thunderbird 中的证书 复制链接链接已复制到粘贴板!
您可以查看 Mozilla Thunderbird 中的证书,以管理电子邮件客户端的安全设置。
流程
在 Thunderbird 中,打开主菜单并选择 Preferences。
图 14.5. 从菜单中选择 Preferences
在左侧面板中,选择 Privacy & Security 部分。
图 14.6. 选择 security 部分
- 向下滚动到 证书 部分。
点 Manage Certificates 打开 Certificate Manager。
图 14.7. 打开证书管理器
14.8. 在 Thunderbird 中导入证书 复制链接链接已复制到粘贴板!
您可以在 Mozilla Thunderbird 电子邮件客户端中导入证书。
先决条件
- 您的设备上已存储了一个 CA 证书。
流程
- 打开证书管理器。
选择 Authorities 标签页,点 Import。
图 14.8. 在 Thunderbird 中导入 CA 证书
- 选择下载的 CA 证书。
14.9. 在 Thunderbird 中编辑证书信任设置 复制链接链接已复制到粘贴板!
您可以在 Mozilla Thunderbird 电子邮件客户端中编辑证书信任设置。
先决条件
- 您已成功导入了证书。
流程
- 打开证书管理器。
- 在 Authorities 选项卡下,选择适当的证书,再单击 Edit Trust。
编辑证书信任设置。
图 14.9. 编辑 Thunderbird 中的证书信任设置
14.10. 在 Thunderbird 中导入个人证书 复制链接链接已复制到粘贴板!
您可以在 Mozilla Thunderbird 电子邮件客户端中导入用于个人身份验证的证书。
先决条件
- 您的设备上已存储了一个个人证书。
流程
- 打开证书管理器。
在您的 证书选项卡 下,单击 导入。
图 14.10. 在 Thunderbird 中导入用于身份验证的个人证书
- 从您的计算机导入所需的证书。
- 关闭 证书管理器。
打开主菜单并选择帐户设置。
图 14.11. 从菜单中选择帐户设置
在您的帐户电子邮件地址的左侧面板中选择 End-To-End Encryption。
选择 End-To-End Encryption 部分。
- 在 S/MIME 部分下,单击第一个 Select 按钮,以选择要用于签名消息的个人证书。
在 S/MIME 部分下,单击第二个 Select 按钮,以选择用于加密和解密消息的个人证书。
选择用于签名和加密/解密的证书。
如果您忘记导入有效证书,您可以使用 Manage S/MIME 证书 选项直接 打开证书管理器。