将 RHEL 系统直接与 Windows Active Directory 集成
大约 35 分钟
将 RHEL 系统直接与 Windows Active Directory 集成
来源:官方文档 原始多页入口:将 RHEL 系统直接与 Windows Active Directory 集成 内容规模:约 31,000 字符,44 个章节标题,83 个命令/代码块,20 条提示框
阅读提要
- 副标题:将 RHEL 主机加入到 AD 中,并访问 AD 中的资源
- 摘要:您可以使用系统安全服务守护进程(SSSD)或 Samba Winbind 服务将 Red Hat Enterprise Linux (RHEL)主机加入到活动目录(AD)域,来访问 AD 资源。或者,也可以使用受管服务帐户(MSA)访问没有域集成的 AD 资源。
- 主要章节:将 RHEL 主机加入到 AD 中,并访问 AD 中的资源;对红帽文档提供反馈;第 1 章 使用 SSSD 将 RHEL 系统直接连接到 AD;第 2 章 使用 Samba Winbind 将 RHEL 系统直接连接到 AD;第 3 章 使用 RHEL 系统角色将 RHEL 系统加入到活动目录;第 4 章 管理到 AD 的直接连接;第 5 章 使用受管服务帐户访问 AD
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
将 RHEL 主机加入到 AD 中,并访问 AD 中的资源
- 要点:摘要
对红帽文档提供反馈
- 要点:我们致力于为您提供高质量的文档,您的反馈将对我们有很大帮助。为帮助我们改进,您可以通过 Red Hat Jira 跟踪系统提交建议或报告错误。
- 要点:流程
- 列表:登录到 Jira 网站。 如果您还没有帐户,请创建一个。
- 列表:单击顶部导航栏中的 Create。
- 列表:在 Summary 字段中输入描述性标题。
- 列表:在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 列表:点窗口底部的 Create。
第 1 章 使用 SSSD 将 RHEL 系统直接连接到 AD
- 要点:要在 Red Hat Enterprise Linux (RHEL)系统上配置和验证服务,请使用系统安全服务守护进程(SSSD)和 realmd。SSSD 处理身份和身份验证,而 realmd 检测到域并配置服务。您可以使用算法 POSIX ID 映射或 AD 定义的属性。
1.1. 使用 SSSD 直接集成概述
- 要点:系统安全服务守护进程(SSSD)提供了一个中央框架,用于进行身份验证和授权,利用用户缓存进行离线访问。它与可插拔验证模块(PAM)和名称切换服务(NSS)集成,以将 RHEL 系统直接连接到 AD 林。
- 要点:SSSD 是推荐的组件,将 Red Hat Enterprise Linux (RHEL)系统与以下身份服务器类型之一连接:
- 列表:Active Directory
- 列表:RHEL 中的身份管理(IdM)
- 列表:任何通用 LDAP 或 Kerberos 服务器
- 列表:将 RHEL 客户端从 AD 域移动到 IdM 服务器
- 列表:创建林设计
- 列表:创建域设计
- 注意:注意 默认情况下,直接与 SSSD 集成在一个 AD 林中正常工作。
- 注意:重要 如果 IdM 处于联邦信息处理标准(FIPS)模式,IdM-AD 集成无法正常工作,因为 AD 只支持使用 AES HMAC-SHA1 加密,而在 FIPS 模式下用于 Red Hat Enterprise Linux (RHEL) 9 只允许 AES HMAC-SHA2。详情请参阅附加资源。 IdM 不支持更严格的 FIPS:OSPP 加密策略,该策略只用于通用标准评估的系统。
1.2. 支持直接集成的 Windows 平台
- 要点:直接集成需要特定的 Windows 服务器版本和功能级别。兼容性可以扩展到在 Windows Server 2008 级别上运行的林至 2016 年。
- 要点:在以下支持的操作系统中测试了直接集成:
- 列表:林功能级别范围:Windows Server 2008 - Windows 服务器 2016
- 列表:域功能级别范围:Windows Server 2008 - Windows 服务器 2016
- 列表:Windows Server 2022
- 列表:Windows Server 2019
- 列表:Windows Server 2016
- 注意:注意 Windows Server 2019 和 Windows Server 2022 没有引入新的功能级。Windows Server 2019 和 Windows Server 2022 使用的最高功能级是 Windows Server 2016。
1.3. 用于与 AD 集成的选项:使用 POSIX ID 映射或 POSIX 属性
- 要点:Linux 和 Windows 使用不同的身份格式。SSSD 通过算法 ID 映射或显式 AD 属性将 POSIX UID 和 GID 分配给 AD 用户来协调这些系统。
- 要点:要以 AD 用户身份验证 RHEL 系统,您必须分配了 UID 和 GID。SSSD 提供了选项,来使用 POSIX ID 映射或 AD 中的 POSIX 属性与 AD 集成。默认为使用 POSIX ID 映射。
- 列表:Linux 使用 用户 ID(UID)和 组群 ID(GID)。Linux UID 和 GID 符合 POSIX 标准。
- 列表:Windows 使用安全 ID (SID)。
- 列表:IdM 中不同的组类型
- 注意:重要 将 RHEL 系统连接到 AD 后,您可以使用 AD 用户名和密码进行身份验证。不要创建名称与 Windows 用户相同的 Linux 用户,因为重复名称可能会导致冲突并中断身份验证过程。
1.4. 使用 POSIX ID 映射连接到 AD
- 要点:SSSD 算法将 Active Directory 安全标识符(SID)转换为 POSIX ID。这个映射可确保同一 ID 范围内的所有 RHEL 系统的一致性 UID 和 GID。
- 要点:如需更多信息,请参阅 sssd-ad 手册页中有关 ID 映射的 部分。
- 列表:当 SSSD 检测到新的 AD 域时,它会为这个新域分配一个可用的 ID 范围。
- 列表:当 AD 用户第一次登录到 SSSD 客户端机器时,SSSD 会在 SSSD 缓存中为用户创建一个条目,包括基于用户的 SID 和该域的 ID 范围的 UID。
- 列表:由于 AD 用户的 ID 是以一致的方式从同一 SID 生成的,所以在登录到任何 RHEL 系统时,用户具有相同的 UID 和 GID。
- 注意:注意 当所有客户端系统都使用 SSSD 将 SID 映射到 Linux ID 时,映射是一致的。如果有些客户端使用不同的软件,请选择以下之一: 确定所有客户端都使用相同的映射算法。 使用 AD 中定义的显式 POSIX 属性。
1.4.1. 使用 SSSD 发现并加入 AD 域
- 要点:使用 realmd 服务定位 Active Directory 域,并使用 SSSD 自动将 RHEL 系统注册到域中。这个过程为身份和身份验证配置 SSSD。
- 要点:先决条件
- 列表:确保所需的端口已打开: 使用 SSSD 将 RHEL 系统直接集成到 AD 所需的端口
- 列表:使用 SSSD 将 RHEL 系统直接集成到 AD 所需的端口
- 列表:确保您为 DNS 使用 AD 域控制器服务器。
- 列表:验证两个系统中的系统时间已被同步。这样可确保 Kerberos 正常工作。
- 列表:安装以下软件包: # dnf install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
- 列表:要显示特定域的信息,请运行 realm discover 并添加您要发现的域名称: # realm discover ad.example.com ad.example.com type: kerberos realm-name: AD.EXAMPLE.COM domain-name: ad.example.com configured: no server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: ss…
- 命令/配置摘录:
# dnf install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
# realm discover ad.example.com- 注意:注意 realmd 系统可以发现 Active Directory 和 Identity Management 域。如果环境中存在这两个域,您可以使用 --server-software=active-directory 选项将发现结果限制为特定类型的服务器。
1.5. 使用 Active Directory 中定义的 POSIX 属性连接到 AD
- 要点:Active Directory (AD)存储 POSIX 属性,如 UID 和主目录。系统安全服务守护进程(SSSD)默认创建本地覆盖。禁用自动 ID 映射会强制 SSSD 使用 AD 定义的值。
- 要点:为获得最佳性能,请将 AD 定义的 POSIX 属性发布到 AD 全局目录。如果全局目录中没有 POSIX 属性,SSSD 会直接连接到 LDAP 端口上的单个域控制器。
- 列表:确保所需的端口已打开: 使用 SSSD 将 RHEL 系统直接集成到 AD 所需的端口
- 列表:使用 SSSD 将 RHEL 系统直接集成到 AD 所需的端口
- 列表:确保您为 DNS 使用 AD 域控制器服务器。
- 列表:验证两个系统中的系统时间已被同步。这样可确保 Kerberos 正常工作。
- 列表:确保在将 RHEL 系统直接连接到 AD 前,请正确配置 SSSD。详情请查看 基本检查步骤(红帽知识库)。
- 列表:安装以下软件包: # dnf install realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
- 命令/配置摘录:
# dnf install realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
# realm join --automatic-id-mapping=no ad.example.com- 注意:注意 您必须为 AD 中的用户配置了相关的 POSIX 属性(uidNumber、gidNumber、unixHomeDirectory 和 loginShell)。
1.6. 使用 SSSD 连接到不同 AD 林中的多个域
- 要点:您可以使用 Active Directory (AD)受管服务帐户(MSA)访问跨独立林的 AD 域。这种方法绕过环境间正式信任关系的需求。
- 要点:其它资源
- 列表:使用受管服务帐户访问 AD
1.7. AD 供应商如何处理动态 DNS 更新
- 要点:Active Directory (AD)删除不活跃的 DNS 记录。SSSD 通过安全 GSS-TSIG 更新自动刷新客户端记录来防止此数据丢失。这些更新在系统重启、供应商重启或调度的时间间隔时发生。
- 要点:AD 通过超时(过期)和删除(保留)不活跃的记录来主动维护其 DNS 记录。
- 列表:身份提供程序每次上线时。
- 列表:每次 RHEL 系统重启时。
- 列表:在 /etc/sssd/sssd.conf 配置文件中的 dyndns_refresh_interval 选项指定的时间间隔。默认值为 86400 秒(24 小时)。 注意 如果将 dyndns_refresh_interval 选项设置为与 DHCP 租期相同的间隔,您可以在 IP 租期被续订后更新 DNS 记录。
- 注意:注意 如果将 dyndns_refresh_interval 选项设置为与 DHCP 租期相同的间隔,您可以在 IP 租期被续订后更新 DNS 记录。
1.8. 修改 AD 供应商的动态 DNS 设置
- 要点:系统安全服务守护进程(SSSD)服务会默认间隔刷新 DNS 记录。修改 sssd.conf 配置可启用自定义刷新调度,控制 PTR 记录更新,并定义特定的生存时间(TTL)值。
- 要点:先决条件
- 列表:您已使用 SSSD 服务将 RHEL 主机加入到 Active Directory 环境。
- 列表:您需要 root 权限来编辑 /etc/sssd/sssd.conf 配置文件。
- 列表:在文本编辑器中打开 /etc/sssd/sssd.conf 配置文件。
- 列表:在您的 AD 域的 [domain] 部分添加以下选项,将 DNS 记录刷新间隔设置为 12 小时,禁用更新 PTR 记录,并将 DNS 记录时间设置为 1 小时。 [domain/ad.example.com] id_provider = ad ... dyndns_refresh_interval = 43200 dyndns_update_ptr = false dyndns_ttl = 3600
- 列表:保存并关闭 /etc/sssd/sssd.conf 配置文件。
- 列表:重启 SSSD 服务以载入配置更改。 [root@client ~]# systemctl restart sssd 注意 您可以通过将 sssd.conf 文件中的 dyndns_update 选项设置为 false 来禁用动态 DNS 更新: [domain/ad.example.com] id_provider = ad ... dyndns_update = false
- 命令/配置摘录:
[domain/ad.example.com] id_provider = ad ... dyndns_refresh_interval = 43200 dyndns_update_ptr = false dyndns_ttl = 3600
[root@client ~]# systemctl restart sssd- 注意:注意 您可以通过将 sssd.conf 文件中的 dyndns_update 选项设置为 false 来禁用动态 DNS 更新: [domain/ad.example.com] id_provider = ad ... dyndns_update = false
1.9. AD 供应商如何处理可信域
- 要点:SSSD 只在单一活动目录(AD)林中支持域发现。默认情况下,它尝试从所有林域解析对象。在 ad_enabled_domains 中定义特定域,可通过排除无法访问的连接来优化性能。
- 要点:如果您在 /etc/sssd/sssd.conf 配置文件中设置了 id_provider = ad 选项,则 SSSD 会将可信域按如下处理:
- 列表:SSSD 只支持单个 AD 林中的域。如果 SSSD 需要从多个林访问多个域,请考虑使用带有信任的 IPA(首选方式)或 winbindd 服务,而不是 SSSD。
- 列表:默认情况下,SSSD 会发现林中的所有域,并在一个可信域中的对象请求到达时,SSSD 会尝试解析它。 如果可信域无法访问或地理距离非常长,这使得它们的速度较慢,您可以在 /etc/sssd/sssd.conf 中设置 ad_enabled_domains 参数,以限制 SSSD 从哪些可信域解析对象。
- 列表:默认情况下,您必须使用完全限定的用户名从可信域解析用户。
1.10. 使用 SSSD 覆盖活动目录站点自动发现
- 要点:Active Directory (AD)站点通过对域控制器进行分组来优化流量。SSSD 自动查询最接近的站点以确保低延迟。手动定义站点会覆盖这个过程,并强制连接到特定位置。
- 要点:本节介绍了 SSSD 如何使用自动发现来查找 AD 站点连接,以及如何手动覆盖自动发现并手动指定站点。
1.10.1. SSSD 如何处理 AD 站点自动发现
- 要点:SSSD 通过 DNS SRV 查找和 Connection-Less LDAP (CLDAP) ping 找到最佳 Active Directory (AD)站点。服务会批处理这些请求,以便有效地识别并缓存最接近的域控制器。
- 列表:SSSD 执行 SRV 查询来查找域中的域控制器(DC)。SSSD 从 SSSD 配置文件中的 dns_discovery_domain 或 ad_domain 选项读取发现域。
- 列表:SSSD 在 3 个批处理中对这些数据中心执行 Connection-Less LDAP(CLDAP)ping 命令,以避免 ping 过多的 DC,并避免无法访问的 DCs 出现超时。如果 SSSD 在任何这些批处理过程中收到站点和林信息,它会跳过批处理的其余部分。
- 列表:SSSD 创建并保存特定于站点和备份服务器的列表。
1.10.2. 覆盖 AD 站点自动发现
- 要点:在 /etc/sssd/sssd.conf 中定义 ad_site 参数,以绕过自动站点检测。明确配置站点会强制 SSSD 将身份验证流量定向到特定位置,而不是最接近的站点。
- 要点:先决条件
- 列表:已使用 SSSD 服务将 RHEL 主机加入到 Active Directory 环境中。
- 列表:您可以以 root 用户身份进行身份验证,以便可以编辑 /etc/sssd/sssd.conf 配置文件。
- 列表:在文本编辑器中打开 /etc/sssd/sssd.conf 文件。
- 列表:将 ad_site 选项添加到 AD 域的 [domain] 部分: [domain/ad.example.com] id_provider = ad ... ad_site = ExampleSite
- 列表:保存并关闭 /etc/sssd/sssd.conf 配置文件。
- 列表:重启 SSSD 服务以载入配置更改: # systemctl restart sssd
- 命令/配置摘录:
[domain/ad.example.com] id_provider = ad ... ad_site = ExampleSite
# systemctl restart sssd1.11. realm 命令
- 要点:realm 实用程序管理域注册并强制实施本地访问策略。特定的子命令处理网络发现、加入操作以及本地主机上域用户的授权。
- 要点:在 realmd 中,使用命令行工具 realm 来运行命令。大多数 realm 命令要求用户指定程序要执行的操作,以及要执行操作的域或用户帐户等实体。
- 表格样本(共 9 行):
- 命令 | 描述
- Realm 命令
- discover | 对网络中的域运行发现扫描。
- join | 将系统添加到指定的域中。
1.12. 使用 SSSD 将 RHEL 系统直接集成到 AD 所需的端口
- 要点:直接集成依赖于 DNS、Kerberos、LDAP 和 SMB 协议的特定网络端口。防火墙必须允许 RHEL 主机和 Active Directory 域控制器之间的流量,以启用身份验证和组策略处理。
- 要点:以下端口必须打开,并对 AD 域控制器和 RHEL 主机可访问。
- 表格样本(共 11 行):
- 服务 | 端口 | 协议 | 备注
- DNS | 53 | UDP 和 TCP
- LDAP | 389 | UDP 和 TCP
- LDAPS | 636 | TCP | 选填
第 2 章 使用 Samba Winbind 将 RHEL 系统直接连接到 AD
- 要点:Samba Winbind 将 RHEL 系统与 Active Directory 集成,以便于无缝的 SMB 文件和打印机共享。realmd 工具自动化域发现并配置底层 Winbind 身份验证服务。
- 要点:要将 RHEL 系统连接到活动目录(AD),请使用:
- 列表:Samba Winbind 与 AD 身份和验证源进行交互
- 列表:realmd 来检测可用的域并配置底层 RHEL 系统服务。
2.1. 使用 Samba Winbind 直接集成的概述
- 要点:Samba Winbind 模拟 Windows 客户端以启用直接 Active Directory 通信。realmd 服务为 NSS 身份验证自动执行 winbindd 服务的配置。这种方法简化了 SMB 资源共享,但需要双向信任进行多林支持。
- 要点:您可以使用 realmd 服务配置 Samba Winbind:
- 列表:以标准的方式配置网络身份验证和域成员资格。
- 列表:自动发现有关可访问 domain 和 realm 的信息。
- 列表:不需要高级配置加入domain 或 realm。
- 列表:在多林 AD 配置中直接与 Winbind 集成需要双向信任。
- 列表:远程林必须信任本地林,以确保 idmap_ad 插件正确处理远程林用户。
- 列表:使用 Samba 作为服务器
2.2. 使用 Samba Winbind 将 RHEL 系统直接连接到 AD
- 要点:realm 工具为 Active Directory 自动配置 Samba Winbind。此工具安装依赖项,生成 smb.conf 文件,并更新系统验证堆栈来授权域用户。
- 要点:先决条件
- 列表:确保您使用 Samba 服务器而不是 NFS 服务器为 IdM 客户端提供共享。详情请查看红帽知识库解决方案 如何在 IPA 环境中使用 Autofs 配置 Kerberos 化 CIFS 挂载?
- 列表:如果您的 AD 需要弃用的 RC4 加密类型进行 Kerberos 验证,请在 RHEL 中启用对这些密码的支持: # update-crypto-policies --set DEFAULT:AD-SUPPORT
- 列表:安装以下软件包: # dnf install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator \ rb5-workstation
- 列表:要在域成员中共享目录或打印机,请安装samba 软件包: # dnf install samba
- 列表:备份现有的/etc/samba/smb.conf Samba 配置文件: # mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
- 列表:加入域。例如,要加入名为ad.example.com的域: # realm join --membership-software=samba --client-software=winbind ad.example.com 使用上面的命令,realm工具会自动: 为ad.example.com域中的成员创建/etc/samba/smb.conf文件 将用于用户和组查找的winbind模块添加到/etc/nsswitch.conf文件中 更新/etc/pam.d/目录中的可插拔验证模块(PAM)配置文件 启动winbind服务,并使服务在系统引导时启动
- 命令/配置摘录:
# update-crypto-policies --set DEFAULT:AD-SUPPORT
# dnf install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator \ rb5-workstation- 注意:重要 要启用 Samba 来查询域用户和组信息,必须在启动smb之前运行winbind服务。
2.3. realm 命令
- 要点:realm 实用程序管理域注册并强制实施本地访问策略。特定的子命令处理网络发现、加入操作以及本地主机上域用户的授权。
- 要点:在 realmd 中,使用命令行工具 realm 来运行命令。大多数 realm 命令要求用户指定程序要执行的操作,以及要执行操作的域或用户帐户等实体。
- 表格样本(共 9 行):
- 命令 | 描述
- Realm 命令
- discover | 对网络中的域运行发现扫描。
- join | 将系统添加到指定的域中。
第 3 章 使用 RHEL 系统角色将 RHEL 系统加入到活动目录
- 要点:如果您的组织使用 Microsoft Active Directory (AD)集中管理用户、组和其他资源,您可以将(RHEL)主机加入到这个 AD 中。通过使用 ad_integration RHEL 系统角色,您可以将 Red Hat Enterprise Linux 系统自动集成到活动目录(AD)域中。
- 要点:例如,如果主机加入 AD,则 AD 用户可以登录到 RHEL,您可以在 RHEL 主机上为经过身份验证的 AD 用户提供服务。
- 注意:注意 ad_integration 角色适用于在 Red Hat Enterprise Linux 环境中使用没有身份管理(IdM)的直接 AD 集成的部署。对于 IdM 环境,请使用 ansible-freeipa 角色。
3.1. 使用 ad_integration RHEL 系统角色将 RHEL 加入到一个活动目录域
- 要点:部署 ad_integration RHEL 系统角色,将 RHEL 主机注册到 Active Directory。此 Ansible 工作流通过使用加密凭据来处理软件包安装、服务配置和安全域加入。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:受管节点使用可以解析 AD DNS 条目的 DNS 服务器。
- 列表:AD 帐户的凭证,该帐户有权将计算机加入到域中。
- 列表:受管节点可使用以下端口建立到 AD 域控制器的连接: Expand 源端口 目的端口 协议 服务 1024 - 65535 53 UDP 和 TCP DNS 1024 - 65535 389 UDP 和 TCP LDAP 1024 - 65535 636 TCP LDAPS 1024 - 65535 88 UDP 和 TCP Kerberos 1024 - 65535 464 UDP 和 TCP Kerberos 密码更改请求 1024 - 65535 3268 TCP LDAP 全局目录 1024 - 65535 3269 TCP LDAPS 全…
- 命令/配置摘录:
$ ansible-vault create ~/vault.yml
New Vault password: <vault_password> Confirm New Vault password: <vault_password>- 表格样本(共 10 行):
- 源端口 | 目的端口 | 协议 | 服务
- 1024 - 65535 | 53 | UDP 和 TCP | DNS
- 1024 - 65535 | 389 | UDP 和 TCP | LDAP
- 1024 - 65535 | 636 | TCP | LDAPS
第 4 章 管理到 AD 的直接连接
- 要点:部署后管理可确保安全合规和系统稳定性。管理员必须配置 Kerberos 票据续订,实施精细的访问控制,并应用组策略对象(GPO),使 RHEL 系统与 Active Directory 标准保持一致。
4.1. 先决条件
- 列表:您已使用 SSSD 或 Samba Winbind 将 RHEL 系统连接到 Active Directory 域。
4.2. 修改默认的 Kerberos 主机 keytab 续订间隔
- 要点:SSSD 使用 adcli 每 30 天自动更新机器帐户密码。配置 ad_maximum_machine_account_password_age 参数会更改此默认间隔以匹配特定的安全策略。
- 要点:流程
- 列表:在 /etc/sssd/sssd.conf 文件中的 AD 供应商中添加以下参数: ad_maximum_machine_account_password_age = value_in_days
- 列表:重启 SSSD: # systemctl restart sssd
- 列表:要禁用自动 Kerberos 主机 keytab 续订,设置 ad_maximum_machine_account_password_age = 0。
- 列表:SSSD 服务失败并显示错误(红帽知识库)
- 命令/配置摘录:
ad_maximum_machine_account_password_age = value_in_days
# systemctl restart sssd4.3. 从 AD 域中删除 RHEL 系统
- 要点:realm leave 命令通过清除本地 SSSD 配置来取消注册系统。添加 -remove 选项也会从 Active Directory 数据库中删除计算机帐户。
- 要点:先决条件
- 列表:您已使用系统安全服务守护进程(SSSD)或 Samba Winbind 将 RHEL 系统连接到 AD。
- 列表:使用 realm leave 命令从身份域中删除系统。该命令从 SSSD 和本地系统中删除域配置。 # realm leave ad.example.com 注意 当客户端离开域时,AD 不会删除帐户,仅删除本地客户端配置。要删除 AD 帐户,请使用 --remove 选项运行命令。最初,会在没有凭证的情况下尝试进行连接,但如果您没有有效的 Kerberos 票据,则会提示您输入用户密码。您必须具有从活动目录中删除帐户的权限。
- 列表:使用带有 -U 选项的 realm leave 命令指定一个不同的用户从身份域中删除系统。 默认情况下,realm leave 命令作为默认管理员执行。对于 AD,管理员帐户名为 Administrator。如果使用其他用户加入到域中,可能需要以该用户身份执行删除操作。 # realm leave [ad.example.com] -U [AD.EXAMPLE.COM\user]' 命令首先在没有凭证的情况下尝试连接,但是如果需要,它会提示输入密码。
- 列表:验证域不再被配置: # realm discover [ad.example.com] ad.example.com type: kerberos realm-name: EXAMPLE.COM domain-name: example.com configured: no server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli require…
- 命令/配置摘录:
# realm leave ad.example.com
# realm leave [ad.example.com] -U [AD.EXAMPLE.COM\user]'- 注意:注意 当客户端离开域时,AD 不会删除帐户,仅删除本地客户端配置。要删除 AD 帐户,请使用 --remove 选项运行命令。最初,会在没有凭证的情况下尝试进行连接,但如果您没有有效的 Kerberos 票据,则会提示您输入用户密码。您必须具有从活动目录中删除帐户的权限。
4.4. 在 SSSD 中设置域解析顺序来解析简短 AD 用户名
- 要点:SSSD 默认强制完全限定名称。设置 domain_resolution_order 通过强制守护进程在特定、优先级排序的顺序中搜索域来启用短的名称解析。
- 要点:此流程在 SSSD 配置中设置域解析顺序,以便您可以使用短名称(如 ad_username )解析 AD 用户和组。这个示例配置示例按以下顺序搜索用户和组:
- 列表:Active Directory(AD) 子域 subdomain2.ad.example.com
- 列表:AD 子域 subdomain1.ad.example.com
- 列表:AD root 域 ad.example.com
- 列表:您已使用 SSSD 服务将 RHEL 主机直接连接到 AD。
- 列表:在文本编辑器中打开 /etc/sssd/sssd.conf 文件。
- 列表:在文件的 [sssd] 部分中设置 domain_resolution_order 选项。 domain_resolution_order = subdomain2.ad.example.com, subdomain1.ad.example.com, ad.example.com
- 命令/配置摘录:
domain_resolution_order = subdomain2.ad.example.com, subdomain1.ad.example.com, ad.example.com
[root@ad-client ~]# systemctl restart sssd4.5. 为域用户管理登录权限
- 要点:通过客户端访问控制覆盖默认的 Active Directory 策略。realm 工具强制 local allow 和 deny 规则来限制特定域用户和组的系统访问。
- 要点:如果域应用客户端访问控制,您可以使用 realmd 为来自该域的用户配置基本的允许或拒绝访问规则。
- 注意:注意 访问规则可以允许或拒绝对系统中所有服务的访问。必须在特定系统资源或域中设置更具体的访问规则。
4.5.1. 启用对域中用户的访问
- 要点:realm permit 命令为 Active Directory 用户创建一个本地允许列表。明确授予特定帐户的权限会自动为域的其余部分建立限制的默认拒绝策略。
- 要点:先决条件
- 列表:您的 RHEL 系统是 Active Directory 域的成员。
- 列表:授予对所有用户的访问权限: # realm permit --all
- 列表:授予对特定用户的访问权限: $ realm permit aduser01@example.com $ realm permit 'AD.EXAMPLE.COM\aduser01' 目前,您只能允许访问主域中的用户,而不允许访问可信域中的用户。这是因为用户登录必须包含域名,SSSD 目前无法提供 realmd 可用子域的信息。
- 列表:使用 SSH 以 aduser01@example.com 用户身份登录到服务器: $ ssh aduser01@example.com@server_name [aduser01@example.com@server_name ~]$
- 列表:使用 ssh 命令第二次访问同一服务器,此时与 aduser02@example.com 用户身份进行以下操作: $ ssh aduser02@example.com@server_name Authentication failed.
- 命令/配置摘录:
# realm permit --all
$ realm permit aduser01@example.com $ realm permit 'AD.EXAMPLE.COM\aduser01'- 注意:重要 不建议默认允许所有用户访问,只使用 realm 权限 -x 指定要被拒绝的用户反之,红帽建议为所有用户维护默认的 no access 策略,且只使用域允许为所选用户授予访问权限。
- 注意:注意 如果在 sssd.conf 文件中将 use_fully_qualified_names 设置为 true,则所有请求都必须使用完全限定域名。但是,如果您将 use_fully_qualified_names 设置为 false,则可以在请求中使用完全限定名称,但输出中只会显示简化的版本。
4.5.2. 拒绝对域中用户的访问
- 要点:realm deny 命令明确阻止来自指定用户或整个域的登录尝试。这个本地限制可防止访问,无论 Active Directory 中授予的权限是什么。
- 要点:先决条件
- 列表:您的 RHEL 系统是 Active Directory 域的成员。
- 列表:拒绝对域内所有用户的访问: # realm deny --all 此命令可防止 realm 帐户登录到本地计算机。使用 realm permit 来限制登陆到特定账户。
- 列表:验证域用户的 login-policy 被设置为 deny-any-login : [root@replica1 ~]# realm list example.net type: kerberos realm-name: EXAMPLE.NET domain-name: example.net configured: kerberos-member server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: …
- 列表:使用 -x 选项拒绝对特定用户的访问: $ realm permit -x 'AD.EXAMPLE.COM\aduser02'
- 列表:使用 SSH 以 aduser01@example.net 用户身份登录到服务器。 $ ssh aduser01@example.net@server_name Authentication failed.
- 命令/配置摘录:
# realm deny --all
[root@replica1 ~]# realm list- 注意:重要 仅允许访问特定用户或组比拒绝访问某些用户或组而允许访问其他所有用户或组要安全。因此,不建议默认允许所有用户访问,只使用 realm 权限 -x 指定要被拒绝的用户反之,红帽建议为所有用户维护默认的 no access 策略,且只使用域允许为所选用户授予访问权限。
- 注意:注意 如果在 sssd.conf 文件中将 use_fully_qualified_names 设置为 true,则所有请求都必须使用完全限定域名。但是,如果您将 use_fully_qualified_names 设置为 false,则可以在请求中使用完全限定名称,但输出中只会显示简化的版本。
4.6. 在 RHEL 中应用组策略对象访问控制
- 要点:组策略对象 (GPO)是存储在 Microsoft Active Directory(AD)中的访问控制设置的集合,适用于 AD 环境中的计算机和用户。SSSD 通过将特定的 Logon Rights 映射到 Linux PAM 服务,将基于 Windows 的登录策略应用到 RHEL 主机。
4.6.1. SSSD 如何解释 GPO 访问控制规则
- 要点:SSSD 检索组策略对象(GPO),以针对 Active Directory 规则验证用户登录。通过将 Windows Logon Rights 映射到 Linux PAM 服务,守护进程直接在 RHEL 主机上强制实施集中访问策略。
- 要点:SSSD 将 AD Windows Logon Rights 映射到可插拔验证模块(PAM)服务名称,以在 GNU/Linux 环境中强制实现这些权限。
- 列表:SSSD 支持的 GPO 设置列表
4.6.2. SSSD 支持的 GPO 设置列表
- 要点:SSSD 强制执行 Windows Logon Rights 的特定子集。服务将这些 Active Directory 策略直接映射到 sssd.conf 参数,以控制交互式、远程和网络访问。
- 要点:下表显示了与 Windows 上的 Group Policy Management Editor 中指定的 Active Directory GPO 选项对应的 SSSD 选项。
- 表格样本(共 6 行):
- GPO 选项 | 对应的 sssd.conf 选项
- 允许本地登录 拒绝本地登录 | ad_gpo_map_interactive
- 允许通过 Remote Desktop Services 登录 拒绝通过 Remote Desktop Services 登录 | ad_gpo_map_remote_interactive
- 从网络访问此计算机 拒绝从网络访问此计算机 | ad_gpo_map_network
4.6.3. 控制 GPO 强制的 SSSD 选项列表
- 要点:/etc/sssd/sssd.conf 中的 SSSD 参数规定了组策略对象(GPO)的应用程序。使用这些设置,管理员可以在严格的强制和 permissive 审计间切换,或者强制执行默认的拒绝安全模型。
- 要点:您可以使用此功能来强化安全性,但小心不要意外拒绝访问。红帽建议在 ad_gpo_access_control 设置为 permissive 时测试此功能。
- 列表:更改 GPO 访问控制模式
- 表格样本(共 4 行):
- ad_gpo_access_control 的值 | 行为
- enforcing | 基于 GPO 的访问控制规则会被评估并强制执行。这是 RHEL 8 中的默认设置。
- permissive | 基于 GPO 的访问控制规则会被评估,但 不会 强制实施;每次被拒绝的访问都会记录 syslog 消息。这是 RHEL 7 中的默认设置。这个模式是测试策略调整的理想模式,同时允许用户继续登录。
- disabled | 基于 GPO 的访问控制规则不被评估也不被强制执行。
4.6.4. 更改 GPO 访问控制模式
- 要点:调整组策略对象(GPO)访问控制模式有助于故障排除和策略测试。将 SSSD 切换到 permissive 模式会在不阻止登录的情况下记录访问拒绝,允许管理员在强制执行规则前验证规则。
- 要点:在本例中,您要将 GPO 操作模式从 enforcing (默认)改为 permissive,用于测试。
- 列表:已使用 SSSD 将 RHEL 主机加入到 AD 环境中。
- 列表:编辑 /etc/sssd/sssd.conf 配置文件需要 root 权限。
- 列表:停止 SSSD 服务。 [root@server ~]# systemctl stop sssd
- 列表:在文本编辑器中打开 /etc/sssd/sssd.conf 文件。
- 列表:在 AD 域的 domain 部分中,将 ad_gpo_access_control 设置为 permissive。 [domain/example.com] ad_gpo_access_control=permissive ...
- 列表:保存 /etc/sssd/sssd.conf 文件。
- 命令/配置摘录:
Oct 31 03:00:13 client1 sshd[124914]: pam_sss(sshd:account): Access denied for user aduser1: 6 (Permission denied) Oct 31 03:00:13 client1 sshd[124914]: Failed password for aduser1 from 127.0.0.1 port 60509 ssh2 Oct 31 03:00:13 client1 sshd[124914]: fatal: Access denied for user aduser1 by PAM account configuration [preauth]
(Sat Oct 31 03:00:13 2020) [sssd[be[example.com]]] [ad_gpo_perform_hbac_processing] (0x0040): GPO access check failed: [1432158236](Host Access Denied) (Sat Oct 31 03:00:13 2020) [sssd[be[example.com]]] [ad_gpo_cse_done] (0x0040): HBAC processing failed: [1432158236](Host Access Denied} (Sat Oct 31 03:00:13 2020) [sssd[be[example.com]]] [ad_gpo_access_done] (0x0040): GPO-based access control failed.- 注意:重要 如果您看到以下错误,则 Active Directory 用户因为基于 GPO 的访问控制而无法登录: 在 /var/log/secure 中: Oct 31 03:00:13 client1 sshd[124914]: pam_sss(sshd:account): Access denied for user aduser1: 6 (Permission denied) Oct 31 03:00:13 client1 sshd[124914]: Failed password for aduser1 from 127.0.0.1 port 60509 ssh2 Oct 31 03:00:13 client1 sshd[124914]: fatal: Access denied for user aduser1 by PAM account configuration [preauth] 在 /var/log/sssd/sssd__example.com_.log 中: (Sat Oct 31 03:00:13 2020) [sssd[be[example.com]]] [ad…
4.6.5. 在 AD GUI 中为 RHEL 主机创建和配置 GPO
- 要点:组策略对象 (GPO)是存储在 Microsoft Active Directory(AD)中的访问控制设置的集合,适用于 AD 环境中的计算机和用户。这个示例演示了如何在 AD 图形用户界面(GUI)中创建 GPO,以控制对直接集成到 AD 域的 RHEL 主机的登录访问。
- 要点:先决条件
- 列表:已使用 SSSD 将 RHEL 主机加入到 AD 环境中。
- 列表:您有 AD Administrator 特权才能使用 GUI 更改 AD。
- 列表:在活动目录 Users和 Computers 中,创建一个机构单元(OU)来与新的 GPO 关联: 右键点击域。 选择 New 。 选择 Organizational Unit。
- 列表:右键点击域。
- 列表:选择 New 。
- 列表:选择 Organizational Unit。
第 5 章 使用受管服务帐户访问 AD
- 要点:Active Directory (AD)受管服务帐户(MSA)允许 RHEL 主机访问域资源,而无需完全域注册,方法是使用特定用户主体进行 LDAP 身份验证。
5.1. 使用受管服务帐户的好处
- 要点:受管服务帐户(MSA)使 RHEL 主机可以在不加入域的情况下访问 Active Directory。这种方法克服了单向信任限制,允许特定客户端在其他不受信任的环境中验证和查询资源。
- 要点:例如,如果 AD 域 production.example.com 与 lab.example.com AD 域有一个单向信任关系,则应用以下条件:
- 列表:lab 域信任来自 production 域的用户和主机。
- 列表:production 域不信任来自 lab 域中的用户和主机。
5.2. 为 RHEL 主机配置受管服务帐户
- 要点:adcli 实用程序生成受管服务帐户(MSA)和 keytab 来促进跨域身份验证。使用这些凭证配置 SSSD 可授予 RHEL 主机对目标 Active Directory 域的访问权限,而无需完全注册。
- 要点:先决条件
- 列表:确保 RHEL 主机上的以下端口已为 AD 域控制器打开并可以被访问。 Expand 服务 端口 协议 DNS 53 TCP, UDP LDAP 389 TCP, UDP LDAPS(可选) 636 TCP, UDP Kerberos 88 TCP, UDP Show more
- 列表:您有在 production.example.com 域中创建 MSA 的 AD Administrator 的密码。
- 列表:您有运行 adcli 命令以及修改 /etc/sssd/sssd.conf 配置文件所需的 root 权限。
- 列表:可选:您已安装了 krb5-workstation 软件包,其包括 klist 诊断工具。
- 列表:在 production.example.com AD 域中为主机创建 MSA。 [root@client ~]# adcli create-msa --domain=production.example.com
- 列表:显示创建的 Kerberos keytab 中 MSA 的信息。记录 MSA 名称: [root@client ~]# klist -k /etc/krb5.keytab.production.example.com Keytab name: FILE:/etc/krb5.keytab.production.example.com KVNO Principal ---- ------------------------------------------------------------ 2 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 CLIE…
- 命令/配置摘录:
[root@client ~]# adcli create-msa --domain=production.example.com
[root@client ~]# klist -k /etc/krb5.keytab.production.example.com- 注意:注意 如果您需要从一个 RHEL 主机访问 AD 资源,红帽建议您使用 realm 命令将 RHEL 主机加入到 AD 域中。请参阅 使用 SSSD 将 RHEL 系统直接连接到 AD。 只有在满足以下条件之一时才执行这个步骤: 您不能将 RHEL 主机加入到 AD 域中,您希望在 AD 中为该主机创建帐户。 您已将 RHEL 主机加入到 AD 域,且您需要访问您加入的域的主机凭证无效,例如:有一个单向信任。
- 注意:警告 即使有现有的信任关系,sssd-ad 在第二个林中仍需要一个 MSA。
- 表格样本(共 5 行):
- 服务 | 端口 | 协议
- DNS | 53 | TCP, UDP
- LDAP | 389 | TCP, UDP
- LDAPS(可选) | 636 | TCP, UDP
5.3. 更新受管服务帐户的密码
- 要点:系统服务安全守护进程(SSSD)自动为受管服务帐户进行常规密码轮转。管理员可以运行 adcli 来手动刷新凭证,确保本地 keytab 与 Active Directory 更改保持同步。
- 要点:先决条件
- 列表:您之前为 production.example.com AD 域中的主机创建了 MSA。
- 列表:可选:您已安装了 krb5-workstation 软件包,其包括 klist 诊断工具。
- 列表:可选:显示 Kerberos keytab 中 MSA 的当前密钥版本号(KVNO)。当前 KVNO 是 2. [root@client ~]# klist -k /etc/krb5.keytab.production.example.com Keytab name: FILE:/etc/krb5.keytab.production.example.com KVNO Principal ---- ------------------------------------------------------------ 2 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes256-cts-hmac-sha…
- 列表:更新 production.example.com AD 域中 MSA 的密码。 [root@client ~]# adcli update --domain=production.example.com --host-keytab=/etc/krb5.keytab.production.example.com --computer-password-lifetime=0
- 列表:验证在 Kerberos keytab 中已递增了 KVNO: [root@client ~]# klist -k /etc/krb5.keytab.production.example.com Keytab name: FILE:/etc/krb5.keytab.production.example.com KVNO Principal ---- ------------------------------------------------------------ 3 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes256-cts-hmac-sha1-96) 3 CLIENT!S3A$@PRO…
- 命令/配置摘录:
[root@client ~]# klist -k /etc/krb5.keytab.production.example.com
Keytab name: FILE:/etc/krb5.keytab.production.example.com KVNO Principal ---- ------------------------------------------------------------ 2 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes128-cts-hmac-sha1-96)5.4. 受管服务帐户规格
- 要点:adcli 实用程序强制执行严格的命名约定,以保证在 Active Directory 中唯一身份创建。实用程序附加随机后缀以截断主机名,并在特定的 keytab 中隔离凭证,以防止与现有帐户冲突。
- 要点:adcli 实用程序创建的受管服务帐户(MSA)具有以下规格:
- 列表:它们不能有额外的服务主体名称(SPN)。
- 列表:默认情况下,MSA 的 Kerberos 主体存储在名为 <default_keytab_location>.<Active_Directory_domain> 的 Kerberos keytab 中,如 /etc/krb5.keytab.production.example.com。
- 列表:MSA 名称限制为 20 个字符或更少。最后 4 个字符是一个由 来自数字和大写 ASCII 范围中的 3 个随机字符组成的后缀,附加到您提供的短主机名中,使用 ! 字符作为分隔符。例如,一个带有短名称 myhost 的主机会有一个带有以下规则的 MSA: Expand 规格 订阅价值 通用名称(CN)属性 myhost!A2c NetBIOS 名称 myhost!A2c$ sAMAccountName myhost!A2c$ production.example.com AD 域中的 Kerberos 主体 myhost!A2c$@PRODUCTION.EXAMPLE.COM Show more
- 表格样本(共 5 行):
- 规格 | 订阅价值
- 通用名称(CN)属性 | myhost!A2c
- NetBIOS 名称 | myhost!A2c$
- sAMAccountName | myhost!A2c$
5.5. adcli create-msa 命令的选项
- 要点:adcli create-msa 命令接受目标参数来自定义帐户置备。这些选项允许管理员指定机构单元(OU)、覆盖 DNS 命名约定、定义自定义 keytab 路径并强制实施安全 LDAPS 通信。
- 要点:除了您可以传递给 adcli 实用程序的全局选项外,您还可以指定以下选项以专门控制它如何处理受管服务帐户(MSA)。
完整目录
- 将 RHEL 主机加入到 AD 中,并访问 AD 中的资源
- 对红帽文档提供反馈
- 第 1 章 使用 SSSD 将 RHEL 系统直接连接到 AD
- 1.1. 使用 SSSD 直接集成概述
- 1.2. 支持直接集成的 Windows 平台
- 1.3. 用于与 AD 集成的选项:使用 POSIX ID 映射或 POSIX 属性
- 1.4. 使用 POSIX ID 映射连接到 AD
- 1.4.1. 使用 SSSD 发现并加入 AD 域
- 1.5. 使用 Active Directory 中定义的 POSIX 属性连接到 AD
- 1.6. 使用 SSSD 连接到不同 AD 林中的多个域
- 1.7. AD 供应商如何处理动态 DNS 更新
- 1.8. 修改 AD 供应商的动态 DNS 设置
- 1.9. AD 供应商如何处理可信域
- 1.10. 使用 SSSD 覆盖活动目录站点自动发现
- 1.10.1. SSSD 如何处理 AD 站点自动发现
- 1.10.2. 覆盖 AD 站点自动发现
- 1.11. realm 命令
- 1.12. 使用 SSSD 将 RHEL 系统直接集成到 AD 所需的端口
- 第 2 章 使用 Samba Winbind 将 RHEL 系统直接连接到 AD
- 2.1. 使用 Samba Winbind 直接集成的概述
- 2.2. 使用 Samba Winbind 将 RHEL 系统直接连接到 AD
- 2.3. realm 命令
- 第 3 章 使用 RHEL 系统角色将 RHEL 系统加入到活动目录
- 3.1. 使用 ad_integration RHEL 系统角色将 RHEL 加入到一个活动目录域
- 第 4 章 管理到 AD 的直接连接
- 4.1. 先决条件
- 4.2. 修改默认的 Kerberos 主机 keytab 续订间隔
- 4.3. 从 AD 域中删除 RHEL 系统
- 4.4. 在 SSSD 中设置域解析顺序来解析简短 AD 用户名
- 4.5. 为域用户管理登录权限
- 4.5.1. 启用对域中用户的访问
- 4.5.2. 拒绝对域中用户的访问
- 4.6. 在 RHEL 中应用组策略对象访问控制
- 4.6.1. SSSD 如何解释 GPO 访问控制规则
- 4.6.2. SSSD 支持的 GPO 设置列表
- 4.6.3. 控制 GPO 强制的 SSSD 选项列表
- 4.6.4. 更改 GPO 访问控制模式
- 4.6.5. 在 AD GUI 中为 RHEL 主机创建和配置 GPO
- 第 5 章 使用受管服务帐户访问 AD
- 5.1. 使用受管服务帐户的好处
- 5.2. 为 RHEL 主机配置受管服务帐户
- 5.3. 更新受管服务帐户的密码
- 5.4. 受管服务帐户规格
- 5.5. adcli create-msa 命令的选项
