Windows 集成指南
将 Linux 系统与 Active Directory 环境集成
摘要
Linux 域身份、身份验证和策略指南记录了红帽身份管理,此解决方案提供了在基于 Linux 的域中管理身份存储以及身份验证和授权策略的集中统一方式。
系统级身份验证指南记录了在本地系统上配置身份验证的不同应用程序和服务,包括 authconfig
实用程序、系统安全服务守护进程(SSSD)服务、可插拔验证模块(PAM)框架、Kerberos、certmonger 实用程序
和用于应用程序的单点登录(SSO)。
第 1 章 集成 ActiveActive Directorynbsp;Directory 和 Linux 环境的方法
1.1. 定义 Windows 集成
用户身份和身份验证
- 位于什么位置的用户帐户;位于 Windows(AD 域)或中央身份和身份验证服务器上运行的中央身份验证系统,或在 Linux 上运行的中央身份和身份验证服务器?
- 用户在 Linux 系统上如何进行身份验证;如何通过本地 Linux 身份验证系统或在 Windows 上运行的中央身份验证系统?
- 如何为用户配置组成员资格?如何确定组成员身份?
- 用户是否会使用用户名/密码对、Kerberos 票据、证书或方法组合进行身份验证?
- 访问 Linux 计算机上的服务需要 POSIX 属性。这些属性是如何存储的:它们是在 Windows 域中设置、在本地 Linux 系统上配置,还是动态映射(用于 UID/GID 编号和 Windows SID)?
- 哪些用户将访问哪些资源?Windows 定义的用户是否会访问 Linux 资源?Linux 定义的用户是否会访问 Windows 资源?
主机和服务主体
- 将访问哪些资源?
- 需要哪些身份验证协议?
- 如何获取 Kerberos 票据?如何请求或验证 SSL 证书?
- 用户是否需要访问单个域或 Linux 和 Windows 域?
DNS 域、查询和名称解析
- DNS 配置是什么?
- 是否存在单个 DNS 域?是否有子域?
- 系统主机名将如何解析?
- 如何配置服务发现?
安全策略
- 访问控制指令在哪里设置?
- 每个域配置了哪些管理员?
更改管理
- 系统添加到域中的频率如何?
- 如果更改了与 Windows 集成相关的底层配置(如 DNS 服务),这些更改是如何传播的?
- 配置是通过域相关的工具还是调配系统维护的?
- 集成路径是否需要在 Windows 服务器上进行其他应用程序或配置?
1.2. 直接集成
- 原生 LDAP 和 Kerberos PAM 和 NSS 模块
这些模块包括nss_ldap
和、pam_ldap
pam_krb5
。由于 PAM 和 NSS 模块被加载到每个应用程序进程中,它们直接影响执行环境。如果没有缓存、离线支持或对访问凭证的充分保护,则不鼓励在 NSS 和 PAM 中使用基本 LDAP 和 Kerberos 模块,因为其功能有限,不鼓励使用 PAM。- Samba Winbind
- Samba Winbind 一直是将 Linux 系统连接到 AD 的传统方式。winbind 模拟 Linux 系统上的 Windows 客户端,并可与 AD 服务器通信。请注意:
- 如果您将 Samba 配置为域成员,则必须运行 Winbind 服务。
- 在多林 AD 设置中直接与 Winbind 集成需要双向信托。
- 远程林必须信任本地林,以确保
idmap_ad
插件正确处理远程林用户。
- 系统安全性服务守护进程(SSSD)
- SSSD 的主要功能是通过通用框架访问远程身份和身份验证资源,为系统提供缓存和离线支持。SSSD 高度可配置;它提供 PAM 和 NSS 集成,以及用于存储本地用户的数据库,以及从中央服务器检索到的核心和扩展用户数据。SSSD 是将 Linux 系统与您选择的身份服务器连接的建议组件,可以是 Active Directory、Red Hat Enterprise Linux 中的 Identity Management(IdM),或者任何通用 LDAP 或 Kerberos 服务器。请注意:
- 默认情况下,直接与 SSSD 集成只能在单个 AD 林中正常工作。
- 远程林必须信任本地林,以确保
idmap_ad
插件正确处理远程林用户。
realmd
服务。它允许调用者以标准的方式配置网络身份验证和域成员资格。realmd
服务自动发现有关可访问域和域的信息,不需要高级配置加入域或域。
1.2.1. 支持的用于直接集成的 Windows 平台
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
1.3. 间接集成
- 基于信任的解决方案
- 建议的做法是利用红帽企业 Linux 中的身份管理(IdM)作为中央服务器来控制 Linux 系统,然后使用 AD 建立跨域 Kerberos 信任,使 AD 中的用户能够登录并使用单点登录来访问 Linux 系统和资源。这个解决方案使用 Kerberos 功能在不同的身份源间建立信任。IdM 作为一个独立的林,利用了 AD 支持的林级信任。在复杂的环境中,单个 IdM 林可以连接到多个 AD 林。这个设置可以为机构的不同功能更好地分离任务。AD 管理员可以专注于与用户相关的用户和策略,而 Linux 管理员完全控制 Linux 基础架构。在这种情况下,IdM 控制的 Linux 域类似于 AD 资源域或域,但其中包含 Linux 系统。注意在 Windows 中,每个域都是一个 Kerberos 域(realm)和一个 DNS 域(domain)。由域控制器管理的每个域都需要拥有自己的专用 DNS 区域。IdM 作为林受 AD 信任时也是如此。AD 期望 IdM 有自己的 DNS 域。要使信任设置正常工作,DNS 域需要专用于 Linux 环境。请注意,在信任环境中,IdM 允许您使用 ID 视图为 IdM 服务器上的 AD 用户配置 POSIX 属性。详情请查看:
- 系统级身份验证指南中的 SSSD 客户端 视图
- 基于同步的解决方案
- 基于信任的解决方案的另一种方法是利用用户同步功能(IdM 或 Red Hat Directory Server(RHDS)),允许用户帐户(以及 RHDS 以及组帐户)从 AD 同步到 IdM 或 RHDS,但不会朝着相反的方向同步。用户同步有一些限制,包括:
- 用户重复
- 需要同步密码,这需要 AD 域中所有域控制器上有一个特殊组件
- 要捕获密码,所有用户必须首先手动更改密码
- 同步只支持单个域
- AD 中只能有一个域控制器用于将数据同步到 IdM 或 RHDS 的一个实例
部分 I. 将单一 Linux 系统添加到 Active Directory 域
SSSD
)如何与 Active Directory(AD
)域一起工作,如何使用 realmd
系统实现直接域集成,最后,如何使用 Samba
进行 AD
集成。
第 2 章 使用 Active Directory 作为 SSSD 的身份提供程序
2.1. AD 提供程序如何处理受信任的域
/etc/sssd/sssd.conf
文件中设置 id_provider = ad 时,SSSD 如何处理可信域。
- SSSD 只支持单个 ActiveActive Directorynbsp 中的域,Directory 林。如果 SSSD 需要从多个地区访问多个域,请考虑使用带有信任(首选)的 IdM 或
winbindd
服务而不是 SSSD。 - 默认情况下,SSSD 会发现林中的所有域,如果可信域中的对象请求到达,SSSD 会尝试解析它。如果可信域无法访问或在地理位置上造成速度较慢,您可以在
/etc/sssd/sssd.conf
中设置ad_enabled_domains
参数来限制从哪些可信域 SSSD 解析对象。 - 默认情况下,您必须使用完全限定用户名从可信域解析用户。
2.2. 为 SSSD 配置 AD 提供程序
2.2.1. 集成选项概述
- Linux 使用用户 ID (UID) 和组 ID (GID)。请参阅 系统管理员 指南中的 管理用户和组。Linux UID 和 GID 符合 POSIX 标准。
- Windows 使用安全 ID (SID)。
- 为 AD 用户自动生成新的 UID 和 GID
- SSSD 可以使用 AD 用户的 SID 在名为 ID 映射的进程中计算生成 POSIX ID。ID 映射会在 AD 中的 SID 和 Linux 中的 ID 之间创建一个映射。
- 当 SSSD 检测到新的 AD 域时,它会为新域分配一系列可用 ID。因此,每个 AD 域在每个 SSSD 客户端机器上都有相同的 ID 范围。
- 当 AD 用户第一次登录 SSSD 客户端机器时,SSSD 在 SSSD 缓存中为用户创建一个条目,包括基于用户的 SID 以及该域的 ID 范围的 UID。
- 因为 AD 用户的 ID 是以一致的方式从同一 SID 生成,所以用户在登录到任何 Red Hat Enterprise Linux 系统时具有相同的 UID 和 GID。
注意当所有客户端系统都使用 SSSD 将 SID 映射到 Linux ID 时,映射是一致的。如果有些客户端使用不同的软件,请选择以下之一:- 确定所有客户端都使用相同的映射算法。
- 使用显式 POSIX 属性,如 使用 AD 中定义的 POSIX 属性 所述。
- 使用 AD 中定义的 POSIX 属性
- AD 可以创建并存储 POSIX 属性,如
uidNumber
、gidNumber
、unixHomeDirectory
或loginShell
。使用 为 AD 用户自动生成新的 UID 和 GID 中描述的 ID 映射时,SSSD 会创建新的 UID 和 GID,这将覆盖 AD 中定义的值。要保留 AD 定义的值,必须在 SSSD 中禁用 ID 映射。
2.2.2. 使用 ID 映射配置 AD 域作为 SSSD 的提供程序
先决条件
- 验证名称解析配置。特别是,验证 DNS SRV 记录。例如,对于名为
ad.example.com
的域:- 验证 DNS SRV LDAP 记录:
# dig -t SRV _ldap._tcp.ad.example.com
- 验证 AD 记录:
# dig -t SRV _ldap._tcp.dc._msdcs.ad.example.com
如果您稍后将 SSSD 连接到特定的 AD 域控制器,则不需要验证 DNS SRV 记录。 - 验证两个系统上的系统时间是否同步。这样可确保 Kerberos 能够正常工作。
- 确保 AD 域控制器上的以下端口已打开并可以被 RHEL 主机访问。
表 2.1. 使用 SSSD 将 Linux 系统直接集成到 AD 所需的端口 服务 端口 协议 备注 DNS 53 UDP 和 TCP LDAP 389 UDP 和 TCP Kerberos 88 UDP 和 TCP Kerberos 464 UDP 和 TCP kadmin 用来设置和更改密码 LDAP 全局目录 3268 TCP 如果使用 id_provider = ad
选项NTP 123 UDP 可选 Samba 445 UDP 和 TCP 对于 AD 组策略对象 (GPO)
配置本地系统
# realm join ad.example.com
realmd
,您可以手动配置系统。请参阅在 Red Hatnbsp 中手动将 SSSD 客户端连接到 Active Directory 域;Hat Knowledgebase.
可选:配置用户主目录和 Shell
系统时,pam_oddjob_mkhomedir.so
库会自动创建主目录。默认情况下,SSSD 从 AD 身份提供程序检索主目录的格式。在 Linux 客户端中自定义目录格式:
- 打开
/etc/sssd/sssd.conf
文件: - 在
[domain]
部分,使用以下选项之一:fallback_homedir
设置回退主目录格式,只有在 AD 中未定义主目录时才使用override_homedir
设置主目录模板,始终覆盖 AD 中定义的主目录
例如,要始终使用格式/home/domain_name/user_name
:[domain/EXAMPLE] [... file truncated ...]
override_homedir = /home/%d/%u
详情请查看 sssd.conf(5) man page。
loginShell
参数检索用户 shell 的信息。在 Linux 客户端中自定义用户 shell 设置:
- 打开
/etc/sssd/sssd.conf
文件: - 使用这些选项定义所需的用户 shell 设置:
shell_fallback
设置回退值,仅在 AD 中没有定义 shell 时才使用override_shell
设置始终覆盖 AD 中定义的 shell 的值default_shell
设置默认 shell 值allowed_shells
和vetoed_shells
设置允许或黑名单的 shell 列表
详情请查看 sssd.conf(5) man page。
加载新配置
- 更改配置文件后重启 SSSD。
# systemctl restart sssd.service
其它资源
- 有关 LDAP 和 Kerberos 供应商的其它配置选项请查看 sssd-ldap(5) 和 sssd-krb5(5) man page。
- 有关 AD 供应商的其它配置选项请查看 sssd-ad(5) man page。
2.2.3. 配置 SSSD 使用 AD 中定义的 POSIX 属性
建议
将 Linux 系统加入 AD 域
在 SSSD 中禁用 ID 映射
- 打开
/etc/sssd/sssd.conf
文件: - 在 AD 域部分,添加
ldap_id_mapping = false
设置。注意如果您使用realm
实用程序加入域并添加--automatic-id-mapping=no
参数,则realm
实用程序已使用ldap_id_mapping = false
设置 SSSD。 - 如果您之前请求的任何用户使用默认 ID 映射配置的用户,请删除 SSSD 缓存:
rm -f /var/lib/sss/db/*
其它资源
ldap_id_mapping
参数的详情,请查看 sssd-ldap(8) man page。
2.3. 自动 Kerberos 主机密钥选项卡续订
- 在
/etc/sssd/sssd.conf
文件中向 AD 供应商添加以下参数:ad_maximum_machine_account_password_age = value_in_days
- 重启 SSSD:
# systemctl restart sssd
ad_maximum_machine_account_password_age = 0
。
2.4. 启用动态 DNS 更新
- 身份提供商在线时(始终)
- Linux 系统重新启动(始终)
- 在指定的时间间隔(可选配置);默认情况下,AD 供应商每 24 小时更新 DNS 记录您可以将此行为设置为与 DHCP 租期相同的间隔。在这种情况下,Linux 客户端会在租期续订后续订。
[domain/ad.example.com] id_provider = ad auth_provider = ad chpass_provider = ad access_provider = ad ldap_schema = addyndns_update = true
dyndns_refresh_interval = 43200
dyndns_update_ptr = true
dyndns_ttl = 3600
2.5. 在 SSSD 中使用 Range Retrieval Searches
2.6. 组策略对象访问控制
2.6.1. SSSD 如何使用 GPO 访问控制工作
2.6.2. SSSD 支持的 GPO 设置
GPO 选项 [a] | 对应的 sssd.conf 选项 [b] |
---|---|
允许本地登录
拒绝本地登录
| ad_gpo_map_interactive |
允许通过远程桌面服务登录
通过远程桌面服务拒绝登录
| ad_gpo_map_remote_interactive |
从网络访问此计算机
拒绝从网络访问此计算机
| ad_gpo_map_network |
允许以批处理任务身份登录
拒绝以批处理任务身份登录
| ad_gpo_map_batch |
允许作为服务登录
拒绝作为服务登录
| ad_gpo_map_service |
[a]
如 Windows 上的组策略管理编辑器中的名称。
[b]
有关这些选项的详情,请查看 sssd-ad(5) man page,以及默认将 GPO 选项映射到的可插入验证模块(PAM)服务列表。
|
2.6.3. 为 SSSD 配置基于 GPO 的访问控制
/etc/sssd/sssd.conf
文件中配置。ad_gpo_access_control
选项指定基于 GPO 的访问控制运行的模式。它可以设置为以下值:
ad_gpo_access_control = permissive
permissive
值指定基于 GPO 的访问控制会被评估但不强制实施;每次访问都会被拒绝时都会记录syslog
信息。这是默认的设置。ad_gpo_access_control = enforcing
enforcing
值指定评估并实施基于 GPO 的访问控制。ad_gpo_access_control = disabled
disabled
值指定基于 GPO 的访问控制不会被评估,也不会强制执行。
ad_gpo_access_control
设置为 enforcing 模式前,建议确保将 ad_gpo_access_control
设置为 permissive 模式并检查日志。通过查看 syslog
消息,您可以在最终设置 enforcing 模式前,根据需要测试和调整当前的 GPO 设置。
sssd.conf
文件中指定:
ad_gpo_map_*
选项和ad_gpo_default_right
选项配置哪些 PAM 服务映射到特定的 Windows 日志权限。要将 PAM 服务添加到映射到特定 GPO 设置的默认 PAM 服务列表中,或者从列表中删除该服务,请使用ad_gpo_map_*
选项。例如,要从映射到交互式登录的 PAM 服务列表中删除su
服务(GPO 设置允许在本地登录和拒绝本地登录):ad_gpo_map_interactive = -su
ad_gpo_cache_timeout
选项指定后续访问控制请求可以重复使用缓存中存储的文件的时间间隔,而不是从 DC 中检索它们。
2.6.4. 其它资源
- 有关配置 SSSD 以用于 GPO 的更多详细信息,请参阅 配置 SSSD 以处理 Red Hatnbsp 中的 Active Directory SSH 或 Console/GUI GPOs ;Hat 知识库。
2.7. 使用 SSSD 自动创建用户私有组
2.7.1. 为 AD 用户激活自动创建用户专用组
- 编辑
/etc/sssd/sssd.conf
文件,在[domain/LDAP]
部分添加:auto_private_groups = true
- 重启 sssd 服务,删除 sssd 数据库:
# service sssd stop ; rm -rf /var/lib/sss/db/* ; service sssd start
# id ad_user1 uid=121298(ad_user1) gid=121298(ad_user1) groups=121298(ad_user1),10000(Group1) # id ad_user2 uid=121299(ad_user2) gid=121299(ad_user2) groups=121299(ad_user2),10000(Group1)
2.7.2. 取消激活 AD 用户的自动创建用户专用组
- 编辑
/etc/sssd/sssd.conf
文件,在[domain/LDAP]
部分添加:auto_private_groups = false
- 重启 sssd 服务,删除 sssd 数据库:
# service sssd stop ; rm -rf /var/lib/sss/db/* ; service sssd start
# id ad_user1 uid=121298(ad_user1) gid=10000(group1) groups=10000(Group1) # id ad_user2 uid=121299(ad_user2) gid=10000(group1) groups=10000(Group1)
2.8. SSSD 客户端和 Active Directory DNS Site Autodiscovery
- SSSD 从 AD 林中的 DNS 服务器查询 SRV 记录。返回的记录在林中包含 DC 的名称。
- SSSD 将 LDAP ping 发送到每个 DC。如果 DC 在配置的时间间隔内没有响应,则请求超时,SSSD 将 LDAP ping 发送到下一个间隔。如果连接成功,响应会包含 SSSD 客户端所属的 AD 站点的信息。
- 然后,SSSD 从 DNS 服务器查询 SRV 记录以查找所属站点内的 DC,并连接到其中一个。
/etc/sssd/sssd.conf
文件的 [domain] 部分中的 ad_site
选项指定您要连接到的 AD 站点。
其它资源
- 有关 sssd-ad(5) 的详情,请查看
ad_site
man page。 - 有关 Identity Management 和 Active Directory 之间具有信任的环境,请参阅 第 5.6 节 “将身份管理或 SSSD 限制为受信任的 Active Directory 域中的选定 Active Directory 服务器或站点”。
2.9. SSSD 故障排除
第 3 章 使用 realmd
连接到 Active Directory 域
realmd
系统提供了一种清晰、简单的方式,可以发现和加入身份域,从而实现直接域集成。它将底层 Linux 系统服务(如 SSSD 或 Winbind)配置为连接到该域。
realmd
系统简化了该配置。它可以运行发现搜索来识别可用的 AD 和身份管理域,然后将系统加入到该域,并设置用于连接给定身份域并管理用户访问权限所需的客户端服务。另外,由于 SSSD 作为底层服务支持多个域,因此 realmd
也可以发现和支持多个域。
3.1. 支持的域类型和客户端
realmd
系统支持以下域类型:
- Microsoft Active Directory
- Red Hat Enterprise Linux Identity Management
realmd
支持以下域客户端:
- Red Hat Enterprise Linux Identity Management 和 Microsoft Active Directory 的 SSSD
- 适用于 Microsoft Active Directory 的 winbind
3.2. 使用 realmd
的先决条件
realmd
系统,请安装 realmd 软件包。
# yum install realmd
realmd
管理系统。
realmd
来查找要安装的软件包。
3.3. realmd
命令
realmd
系统有两个主要的任务领域:
- 在域中管理系统注册
- 设置哪些域用户可以访问本地系统资源
realmd
中的中央实用程序称为 realm
。大多数 realm
命令要求用户指定实用程序应执行的操作,以及要执行该操作的实体(如域或用户帐户):
realm command arguments
realm join ad.example.com realm permit user_name
命令 | 描述 |
---|---|
realm 命令 | |
discover | 对网络中的域运行发现扫描。 |
join | 将系统添加到指定的域中。 |
leave | 从指定的域中删除系统。 |
list | 列出系统的所有配置域,或者所有发现和配置的域。 |
登录命令 | |
permit | 为指定用户或配置域中的所有用户启用访问权限,以访问本地系统。 |
deny | 限制指定用户或配置域中所有用户的访问权限,以访问本地系统。 |
3.4. 发现和加入身份域
- 对指定的域运行发现扫描.
- 自动安装将系统加入域所需的软件包。这包括 SSSD 和 PAM 主目录作业软件包。请注意,自动安装软件包需要运行
PackageKit
套件。注意如果禁用PackageKit
,系统会提示您输入缺少的软件包,您需要使用yum
实用程序手动安装它们。 - 通过在 目录中为系统创建帐户条目来加入域。
- 创建
/etc/krb5.keytab
主机 keytab 文件。 - 在 SSSD 中配置域并重新启动服务。
- 在 PAM 配置和
/etc/nsswitch.conf
文件中为系统服务启用域用户。
发现域
# realm discover 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: sssd required-package: adcli required-package: samba-common
# realm discover ad.example.com
域系统随后将使用
DNS SRV 查找来自动查找此域中的域控制器。
realmd
系统可以发现 Active Directory 和 Identity Management 域。如果您的环境中两个域都存在,您可以使用 --server-software
选项将发现结果限制为特定的服务器类型。例如:
# realm discover --server-software=active-directory
login-policy
,它显示域用户是否允许域用户在加入完成后立即登录。如果默认情况下不允许登录,您可以使用 realm allow 命令手动允许登录。详情请查看 第 3.7 节 “管理域用户的登录权限”。
加入域
# realm join ad.example.com realm: Joined ad.example.com domain
Administrator
;对于 IdM,它名为 admin
。要以其他用户身份连接,请使用 -U
选项:
# realm join ad.example.com -U user
-U
选项。
# kinit user # realm join ad.example.com -U user
例 3.1. 将系统注册到域中的过程示例
- 运行 realm discovery 命令,以显示有关域的信息。
# 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
- 运行 realm join 命令,并将域名传递到 命令。如果系统提示输入密码,请提供管理员密码。
# realm join ad.example.com Password for Administrator: password
请注意,当发现或加入域时,realmd 会检查
DNS SRV 记录:
_ldap._tcp.domain.example.com.
for Identity Management records_ldap._tcp.dc._msdcs.domain.example.com.
for Active Directory records
在加入域后测试系统配置
- 运行 id user@domain_name 命令,以显示域中用户的信息。
# id user@ad.example.com uid=1348601103(user@ad.example.com) gid=1348600513(domain group@ad.example.com) groups=1348600513(domain group@ad.example.com)
- 使用
ssh
实用程序,以同一用户身份登录。# ssh -l user@ad.example.com linux-client.ad.example.com user@ad.example.com@linux-client.ad.example.com's password: Creating home directory for user@ad.example.com.
验证pwd
实用程序是否打印用户的主目录。$ pwd /home/ad.example.com/user
- 验证
id
实用程序是否在第一步中显示与 id user@domain_name 命令相同的信息。$ id uid=1348601103(user@ad.example.com) gid=1348600513(domain group@ad.example.com) groups=1348600513(domain group@ad.example.com) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
在测试域加入是否成功时,kinit
实用程序也很有用。请注意,要使用该工具,必须安装 krb5-workstation 软件包。
3.5. 从身份域中删除系统
# realm leave ad.example.com
Administrator
;对于 IdM,它名为 admin
。如果使用其他用户加入域,则可能需要以该用户身份执行删除操作。要指定其他用户,请使用 -U
选项:
# realm leave ad.example.com -U 'AD.EXAMPLE.COM\user'
3.6. 列出域
# realm list --all --name-only ad.example.com
--all
- all
选项列出了所有已发现的域
,包括已配置和未配置的域。 --name-only
name-only
选项将结果限制为域名,不显示域配置详情。
3.7. 管理域用户的登录权限
realmd 系统为来自该域的用户配置基本的允许或拒绝访问规则
。请注意,这些访问规则允许或拒绝访问系统上的所有服务。必须在特定系统资源或域中设置更具体的访问规则。
- realm deny
- realm deny 命令只是拒绝对域内所有用户的访问。使用此命令及
--all
选项。 - 域允许
- realm allow 命令可用于:
- 使用
--all
选项授予所有用户的访问权限,例如:$ realm permit --all
- 向指定用户授予访问权限,例如:
$ realm permit user@example.com $ realm permit 'AD.EXAMPLE.COM\user'
- 使用
-x
选项拒绝对指定用户的访问,例如:$ realm permit -x 'AD.EXAMPLE.COM\user'
当前无法提供有关可用子域的信息
。
3.8. 更改默认用户配置
realmd
系统支持修改默认用户主目录和 shell POSIX 属性。例如,如果 Windows 用户帐户中没有设置某些 POSIX 属性,或者这些属性与本地系统上其他用户的 POSIX 属性不同,这可能是必需的。
/etc/sssd/sssd.conf
文件中的默认主目录和 shell,如 “可选:配置用户主目录和 Shell”一节 所述。
/etc/realmd.conf
文件中的 [users]
部分指定以下选项:
default-home
default-home
选项设置一个模板,用于为未明确设置主目录的帐户创建主目录。常用的格式为 /home/%d/%u,其中%d
是域名,%u
是用户名。default-shell
default-shell
选项定义默认用户 shell。它接受任何受支持的系统 shell。
[users] default-home = /home/%u default-shell = /bin/bash
3.9. ActiveActive Directorynbsp 的额外配置;Directory 域条目
/etc/realmd.conf
文件中定义。每个域可以有自己的配置部分;部分的名称必须与域名匹配。例如:
[ad.example.com] attribute = value attribute = value
/etc/realmd.conf
中的对应部分。以下示例禁用 ad.example.com
域的 ID 映射,设置主机主体,并将系统添加到指定的子树中:
[ad.example.com] computer-ou = ou=Linux Computers,DC=domain,DC=example,DC=com user-principal = host/linux-client@AD.EXAMPLE.COM automatic-id-mapping = no
# realm join --computer-ou="ou=Linux Computers,dc=domain,dc=com" --automatic-id-mapping=no --user-principal=host/linux-client@AD.EXAMPLE.COM
/etc/realmd.conf
的 domain default 部分中可设置的最重要选项。有关可用配置选项的完整信息,请查看 realmd.conf(5) man page。
选项 | 描述 |
---|---|
computer-ou | 设置将计算机帐户添加到域中的目录位置。这可以是完整 DN 或 RDN,相对于 root 条目。子树必须已经存在。 |
user-principal | 将计算机帐户的 userPrincipalName 属性值设置为提供的 Kerberos 主体。 |
automatic-id-mapping | 设置是启用动态 ID 映射还是禁用映射并使用 Active Directory 中配置的 POSIX 属性。 |
第 4 章 使用 Samba 进行 Active Directory 集成
4.1. 使用 winbindd
Authenticate Domain Users
winbindd
服务为名称服务交换机(NSS)提供接口,并让域用户在登录本地系统时对 AD 进行身份验证。
winbindd
的优势在于,您可以增强共享目录和打印机的配置,而无需安装其他软件。详情请查看《红帽系统管理员指南 》中有关 Samba 的章节。
4.1.1. 加入 AD 域
Winbind
服务,请使用 realm join --client-software=winbind domain_name 命令。realm
实用程序自动更新配置文件,例如用于 Samba、Kerberos 和 PAM 的配置文件。
4.2. 将 SMB 共享与 SSSD 和 Winbind 搭配使用
4.2.1. SSSD 如何使用 SMB 工作
4.2.2. 在 SSSD 和 Winbind 间切换以用于 SMB 共享访问
$ rpm -q cifs-utils
- 可选。了解您当前是否使用 SSSD 或 Winbind 从 SSSD 客户端访问 SMB 共享:
# alternatives --display cifs-idmap-plugin cifs-idmap-plugin - status is auto. link currently points to /usr/lib64/cifs-utils/cifs_idmap_sss.so /usr/lib64/cifs-utils/cifs_idmap_sss.so - priority 20 /usr/lib64/cifs-utils/idmapwb.so - priority 10 Current `best' version is /usr/lib64/cifs-utils/cifs_idmap_sss.so.
如果安装了 SSSD 插件(cifs_idmap_sss.so
),则默认其优先级高于 Winbind 插件(idmapwb.so
)。 - 在切换到 Winbind 插件前,请确保 Winbind 在系统中运行:
# systemctl is-active winbind.service active
在切换到 SSSD 插件前,请确保 SSSD 在系统中运行:# systemctl is-active sssd.service active
- 要切换到其他插件,请使用
alternatives --set cifs-idmap-plugin
命令,并指定所需插件的路径。例如,切换到 Winbind:# alternatives --set cifs-idmap-plugin /usr/lib64/cifs-utils/idmapwb.so
/usr/lib/cifs-utils/
目录,而不是 /usr/lib64/cifs-utils/
。
4.3. 其它资源
部分 II. 将 Linux 域与 Active Directory 域集成:跨林信任
Linux
域与 Active Directory
域集成的推荐做法。
第 5 章 使用 ActiveActive Directorynbsp;Directory 和 IdentityIdentity Managementnbsp;Management 创建 Cross-forest Trusts
5.1. 跨林信任简介
5.1.1. 信任关系的架构
Active Directory Trusts、林和跨林信任
信任流和单向信任
图 5.1. 单向信任
传输和非转换信任
图 5.2. 传输信任
Active Directory 和 Identity Management 中的跨林信任
图 5.3. 信任方向
5.1.2. Active Directory 安全对象和信任
Active Directory 全局目录
全局目录和 POSIX 属性
5.1.3. IdM 中的信任架构
- SSSD,要在 ActiveActive Directorynbsp 上执行身份查找,并检索用于授权的用户和组安全标识符(SID)。SSSD 还缓存用户、组和票据信息,以及映射 Kerberos 和 DNS 域的用户、组和票据信息,
- IdentityIdentity Managementnbsp;Management(Linux 域管理)将 ActiveActive Directorynbsp;Directory 用户与 aan IdMnbsp;IdM 组关联,用于 IdM 策略和访问。注意Linux 域管理(如 SELinux、sudo 和基于主机的访问控制)的访问控制规则和策略通过 IdentityIdentity Managementnbsp;Management 进行定义和应用。在 ActiveActive Directorynbsp;Directory 一侧设置的任何访问控制规则没有被 IdM 评估或使用;唯一的 ActiveActive Directorynbsp;Directory 配置是组成员资格。
使用不同的 Active Directory Forests 信任
5.1.3.1. Activeactive Directorynbsp;Directory PACs 和 IdM Tickets
- 服务请求包含用户的 PAC。IdM Kerberos 分发中心(KDC)通过比较 Active Directory 组列表和 IdM 组中的成员资格来分析 PAC。
- 对于 MS-PAC 中定义的 Kerberos 主体的 SID,IdM KDC 评估 IdM LDAP 中定义的外部组成员资格。如果 SID 有可用的其他映射,MS-PAC 记录将使用 SID 所属 IdM 组的其他 SID 扩展。生成的 MS-PAC 由 IdM KDC 签名。
- 服务票据返回给用户,其更新的 PAC 由 IdM KDC 签名。属于 IdM 域的 AD 组的用户现在可以被 IdM 客户端上的 SSSD 根据服务票据的 MS-PAC 内容识别。这允许减少身份流量来发现 IdM 客户端的组成员资格。
- 评估流程中使用的 Kerberos 客户端库将 PAC 数据发送到 SSSD PAC 响应器。
- PAC 响应器验证 PAC 中的组 SID,并将用户添加到 SSSD 缓存中的对应组。当访问新服务时,SSSD 会为每个用户存储多个 TGT 和票据。
- 属于已验证组的用户现在可以访问 IdM 端所需的服务。
5.1.3.2. Active Directory 用户和身份管理组
非POSIX 外部组和 SID 映射
ID 范围
- ipa-ad-trust
- 此范围选项用于 IdM 根据 SID 生成 ID 算法。如果 IdM 使用 SID-to-POSIX ID 映射生成 SID,AD 和 IdM 用户和组的 ID 范围必须具有唯一、非覆盖的 ID 范围。
- ipa-ad-trust-posix
- 此范围选项用于 AD 条目中 POSIX 属性中定义的 ID。IdM 从 AD 的全局目录或目录控制器获取 POSIX 属性,包括
uidNumber
和gidNumber
。如果 AD 域正确管理且没有 ID 冲突,则以这种方式生成的 ID 号是唯一的。在这种情况下,不需要验证 ID 或 ID 范围。
[root@ipaserver ~]# ipa trust-add name_of_the_trust --range-type=ipa-ad-trust-posix
重新创建其他 ID 范围的信任
--range-type
选项重新创建信任:
- 查看当前使用的所有 ID 范围:
[root@ipaserver ~]# ipa idrange-find
在列表中,标识 ipa trust-add 命令创建的 ID 范围的名称。ID 范围名称的第一部分是 trust: name_of_the_trust _id_range的名称,如 ad.example.com。 (可选)如果您不知道在创建信任时使用了哪个
,请识别该选项:--range-type
选项 ipa-ad-trust 或 ipa-ad-trust-posix
[root@ipaserver ~]# ipa idrange-show name_of_the_trust_id_range
记录 类型,以便您在第 5 步中为新信任选择相反类型。- 删除 ipa trust-add 命令创建的范围:
[root@ipaserver ~]# ipa idrange-del name_of_the_trust_id_range
- 删除信任:
[root@ipaserver ~]# ipa trust-del name_of_the_trust
- 使用正确的
--range-type
选项创建新信任。例如:[root@ipaserver ~]# ipa trust-add name_of_the_trust --range-type=ipa-ad-trust
5.1.3.3. Active Directory 用户以及 IdM 策略和配置
图 5.4. ActiveActive Directorynbsp;Directory Users and IdM Groups and Policies
5.1.4. 一次性和双向信任
- 单向信任
- 单向信任可让 AD 用户和组访问 IdM 中的资源,但不能通过另一种方式访问。IdM 域信任 AD 林,但 AD 林不信任 IdM 域。单向信任是创建信任的默认模式。
- 双向信任
- 双向信任可让 AD 用户和组访问 IdM 中的资源。您必须为 Microsoft SQL Server 等解决方案配置双向信任,该解决方案希望 Kerberos 协议的 S4U2Self 和 S4U2Proxy Microsoft 扩展在信任范围内工作。RHEL IdM 主机上的应用可能会从 Active Directory 域控制器请求 S4U2Self 或 S4U2Proxy 信息,并提供一个双向信任来提供此功能。请注意,这个双向信任功能并不允许 IdM 用户登录到 Windows 系统,IdM 中的双向信任并不为用户授予与 AD 中的单向信任解决方案相比的任何额外权利。
5.1.5. 外部 Trusts 到 ActiveActive Directorynbsp;Directory
5.1.6. 信任控制器和信任代理
- 信任控制器
- 可以控制信任并对 ActiveActive Directorynbsp;Directory 域控制器(DC)执行身份查找的 IdM 服务器。Activeactive Directorynbsp;Directory 域控制器在建立和验证对 ActiveActive Directorynbsp 的信任时联系信任控制器。配置信任时会创建第一个信任控制器。有关将 IdM 服务器配置为信任控制器的详情,请参考 第 5.2.2 节 “创建信任”。与信任代理相比,信任控制器运行更多的面向网络的服务,因而为潜在的入侵者提供了更大的攻击面。
- 信任代理
- 可针对 ActiveActive Directorynbsp;Directory 域控制器执行身份查找的 IdM 服务器。有关将 IdM 服务器配置为信任代理的详情,请参考 第 5.2.2.1.1 节 “为信任准备 IdM 服务器”。
功能 | 信任控制器 | 信任代理 |
---|---|---|
解决 ActiveActive Directorynbsp;Directory 用户和组 | 是 | 是 |
注册运行来自可信 ActiveActive Directorynbsp 的用户访问的 IdM 客户端;Directory 林 | 是 | 是 |
管理信任(例如,添加信任协议) | 是 | 否 |
- 每个身份管理部署至少配置两个信任控制器。
- 在每个数据中心中至少配置两个信任控制器。
ipa-adtrust-install
工具,如 第 5.2.2.1.1 节 “为信任准备 IdM 服务器” 所述。
5.2. 创建跨林信任
5.2.1. 环境和机器要求
5.2.1.1. 支持的 Windows 平台
- 林功能级别范围:Windows Server 2008 - Windows 服务器 2016
- 域功能级别范围:Windows Server 2008 - Windows 服务器 2016
- Windows Server 2012 R2
- Windows Server 2016
5.2.1.2. DNS 和 Realm 设置
- 唯一的主 DNS 域
- 每个系统都必须配置自己的唯一的主 DNS 域。例如:
- AD
的 ad.example.com
,IdM.example.com
example.com
用于AD,idm.example.com
用于 IdM- AD
的 ad.example.com
和 IdM 的example.com
重要如果 IdM 域是 AD 域的父域,IdM 服务器必须在 Red Hat Enterprise Linux 7.5 或更高版本中运行。
最方便的管理解决方案是,每个 DNS 域都由集成 DNS 服务器管理,但也可以使用任何其他符合标准标准的 DNS 服务器。AD 或 IdM 无法将主 DNS 域与另一个身份管理系统共享。如需更多信息,请参阅 Linux 域身份、身份验证和策略指南中的 主机名和 DNS 配置要求文档。 - Kerberos realm 名称作为主 DNS 域名的大写版本
- Kerberos realm 名称必须与主 DNS 域名相同,且所有字母都为大写。例如,如果域名是 AD 的
ad.example.com
,而idm.example.com
for IdM,则需要 Kerberos 域名称为AD.EXAMPLE.COM
和IDM.EXAMPLE.COM
。 - DNS 记录可从信任中的所有 DNS 域解析
- 所有机器都必须能够从涉及信任关系的所有 DNS 域解析 DNS 记录:
- 在配置 IdM DNS 时, 请参阅有关在 IdM 域中配置 DNS 服务 的部分,以及管理 Linux 域身份、身份验证和策略指南中的 DNS 转发 部分的内容 。
- 如果您在没有集成 DNS 的情况下使用 IdM,请按照 章节描述在 Linux 域身份、身份验证和策略指南 中不集成 DNS 的服务器安装 的说明。
- IdM 和 AD DNS 域之间没有重叠
- 加入 IdM 的系统可以通过多个 DNS 域进行发布。包含 IdM 客户端的 DNS 域不得与包含加入 AD 的机器的 DNS 域重叠。主 IdM DNS 域必须具有正确的 SRV 记录来支持 AD 信任。注意在 IdM 和 ActiveActive Directorynbsp;Directory 之间信任的一些环境中,您可以在属于 ActiveActive Directorynbsp 的主机上安装 IdM 客户端;Directory DNS 域。然后,主机可以从基于 Linux 的 IdM 功能中获益。这不是推荐的配置,存在一些限制。红帽建议始终在与 ActiveActive Directorynbsp 拥有的 DNS 区域中部署 IdM 客户端;Directory 并通过 IdM 主机名访问 IdM 客户端。您可以通过运行 $ ipa dns-update-system-records --dry-run 命令来获取特定于系统设置所需的 SRV 记录列表。生成的列表可以类似如下:
$ ipa dns-update-system-records --dry-run IPA DNS records: _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 server.example.com. _kerberos-master._udp.example.com. 86400 IN SRV 0 100 88 server.example.com. _kerberos._tcp.example.com. 86400 IN SRV 0 100 88 server.example.com. _kerberos._udp.example.com. 86400 IN SRV 0 100 88 server.example.com. _kerberos.example.com. 86400 IN TXT "EXAMPLE.COM" _kpasswd._tcp.example.com. 86400 IN SRV 0 100 464 server.example.com. _kpasswd._udp.example.com. 86400 IN SRV 0 100 464 server.example.com. _ldap._tcp.example.com. 86400 IN SRV 0 100 389 server.example.com. _ntp._udp.example.com. 86400 IN SRV 0 100 123 server.example.com.
对于同一 IdM 域一部分的其他 DNS 域,在配置对 AD 的信任时不需要配置 SRV 记录。原因在于 AD 域控制器不使用 SRV 记录来发现 KDC,而是基于信任名称后缀路由信息的 KDC 发现。
验证 DNS 配置
ipconfig /flushdns
命令来删除当前的缓存。
- 验证 IdM 托管的服务是否可以从用于建立信任的 IdM 域服务器解析
- 通过 UDP 和 LDAP 通过 TCP 服务记录运行对 Kerberos 的 DNS 查询。
[root@ipaserver ~]# dig +short -t SRV _kerberos._udp.ipa.example.com. 0 100 88 ipamaster1.ipa.example.com. [root@ipaserver ~]# dig +short -t SRV _ldap._tcp.ipa.example.com. 0 100 389 ipamaster1.ipa.example.com.
这些命令应该列出所有 IdM 服务器。 - 使用 IdM Kerberos 域名称对 TXT 记录运行 DNS 查询。获取的值应该与您在安装 IdM 时指定的 Kerberos 域匹配。
[root@ipaserver ~]# dig +short -t TXT _kerberos.ipa.example.com. IPA.EXAMPLE.COM
- 执行
ipa-adtrust-install
工具后(如 第 5.2.2.1.1 节 “为信任准备 IdM 服务器” 所述),通过 UDP 和 LDAP 运行对 MS DC Kerberos 的 DNS 查询,通过 TCP 服务记录运行 LDAP。[root@ipaserver ~]# dig +short -t SRV _kerberos._udp.dc._msdcs.ipa.example.com. 0 100 88 ipamaster1.ipa.example.com. [root@ipaserver ~]# dig +short -t SRV _ldap._tcp.dc._msdcs.ipa.example.com. 0 100 389 ipamaster1.ipa.example.com.
命令应该会列出已在其上执行ipa-adtrust-install
的所有 IdM 服务器。请注意,如果ipa-adtrust-install
没有在任何 IdM 服务器上执行,则输出为空(通常在建立第一个信任关系前)。
- 验证 IdM 能够解析 AD 的服务记录
- 通过 UDP 和 LDAP 通过 TCP 服务记录运行对 Kerberos 的 DNS 查询。
[root@ipaserver ~]# dig +short -t SRV _kerberos._udp.dc._msdcs.ad.example.com. 0 100 88 addc1.ad.example.com. [root@ipaserver ~]# dig +short -t SRV _ldap._tcp.dc._msdcs.ad.example.com. 0 100 389 addc1.ad.example.com.
这些命令应当返回 AD 域控制器的名称。 - 验证 IdM-hosted 服务是否可以从 AD 服务器解析
- 在 AD 服务器上,设置
thenslookup.exe
实用程序来查找服务记录。C:\>nslookup.exe > set type=SRV
- 通过 UDP 和 LDAP 通过 TCP 服务记录输入 Kerberos 的域名。
> _kerberos._udp.ipa.example.com. _kerberos._udp.ipa.example.com. SRV service location: priority = 0 weight = 100 port = 88 svr hostname = ipamaster1.ipa.example.com > _ldap._tcp.ipa.example.com _ldap._tcp.ipa.example.com SRV service location: priority = 0 weight = 100 port = 389 svr hostname = ipamaster1.ipa.example.com
预期的输出包含与 验证 IdM 托管的服务是否可以从用于建立信任的 IdM 域服务器解析 中显示相同的 IdM 服务器集合。 - 将服务类型更改为 TXT,并使用 IdM Kerberos 域名运行对 TXT 记录的 DNS 查询。
C:\>nslookup.exe > set type=TXT > _kerberos.ipa.example.com. _kerberos.ipa.example.com. text = "IPA.EXAMPLE.COM"
输出应该包含与 验证 IdM 托管的服务是否可以从用于建立信任的 IdM 域服务器解析 中显示相同的值。 - 执行
ipa-adtrust-install
工具后(如 第 5.2.2.1.1 节 “为信任准备 IdM 服务器” 所述),通过 UDP 和 LDAP 运行对 MS DC Kerberos 的 DNS 查询,通过 TCP 服务记录运行 LDAP。C:\>nslookup.exe > set type=SRV > _kerberos._udp.dc._msdcs.ipa.example.com. _kerberos._udp.dc._msdcs.ipa.example.com. SRV service location: priority = 0 weight = 100 port = 88 svr hostname = ipamaster1.ipa.example.com > _ldap._tcp.dc._msdcs.ipa.example.com. _ldap._tcp.dc._msdcs.ipa.example.com. SRV service location: priority = 0 weight = 100 port = 389 svr hostname = ipamaster1.ipa.example.com
命令应该会列出已在其上执行ipa-adtrust-install
工具的所有 IdM 服务器。请注意,如果ipa-adtrust-install
没有在任何 IdM 服务器上执行,则输出为空(通常在建立第一个信任关系前)。
- 验证 AD 服务是否可以从 AD 服务器解析
- 在 AD 服务器上,设置
thenslookup.exe
实用程序来查找服务记录。C:\>nslookup.exe > set type=SRV
- 通过 UDP 和 LDAP 通过 TCP 服务记录输入 Kerberos 的域名。
> _kerberos._udp.dc._msdcs.ad.example.com. _kerberos._udp.dc._msdcs.ad.example.com. SRV service location: priority = 0 weight = 100 port = 88 svr hostname = addc1.ad.example.com > _ldap._tcp.dc._msdcs.ad.example.com. _ldap._tcp.dc._msdcs.ad.example.com. SRV service location: priority = 0 weight = 100 port = 389 svr hostname = addc1.ad.example.com
预期的输出包含与 验证 IdM 能够解析 AD 的服务记录 中显示的相同的 AD 服务器集合。
5.2.1.3. NetBIOS 名称
ad.example.com
,则 NetBIOS 名称通常是 AD
。
5.2.1.4. 防火墙和端口
- 打开 AD 信任和 IdM 服务器在 IdM 服务器和所有 AD 域控制器两个方向上所需的端口 :从 IdM 服务器到 AD 域控制器,然后返回。
服务 | 端口 | 协议 |
---|---|---|
端点解析端口映射器 | 135 | TCP |
NetBIOS-DGM | 138 | TCP 和 UDP |
NetBIOS-SSN | 139 | TCP 和 UDP |
Microsoft-DS | 445 | TCP 和 UDP |
端点映射器侦听器范围 | 1024-1300 | TCP |
AD Global Catalog | 3268 | TCP |
LDAP | 389 | TCP [a] 和 UDP |
[a]
在 IdM 服务器中不需要为信任打开 TCP 端口 389,但与 IdM 服务器通信的客户端需要这样端口。
|
服务 | 端口 | 协议 |
---|---|---|
Kerberos | 请参阅 Linux 域身份、身份验证和策略指南 中的端口要求。 | |
LDAP | ||
DNS |
服务 | 端口 | 协议 | 备注 |
---|---|---|---|
Kerberos | 88 | UDP 和 TCP |
如果从 Kerberos 分发中心(KDC)
发送的数据过大,libkrb5 库将使用 UDP 并退回到 TCP 协议。Activeactive Directorynbsp;Directory 将 Privilege Attribute Certificate(PAC)附加到 Kerberos 票据中,这会增加大小,多数情况下需要使用 TCP 协议。为避免回退和重新发送请求,默认情况下,Red Hat Enterprise Linux 7.4 及之后的版本中的 SSSD 使用 TCP 进行用户身份验证。要在 libkrb5 使用 TCP 前配置大小,请在 /etc/krb.5.conf 文件中设置 udp_preference_limit 。详情请查看 krb5.conf(5) man page。
|
其它资源
- 有关如何打开所需端口的建议,请参阅 Linux 域身份、身份验证和策略指南 中的端口 要求。
5.2.1.5. IPv6 设置
5.2.1.6. 时钟设置
5.2.1.7. 在 AD 中为 IdM 域创建条件 Forwarder
- 在 Windows AD 域控制器上,打开 Active Directory(AD)
DNS
控制台。 - 右键单击 Conditional New Conditional Forwarder。,再选择
- 输入 IdM DNS 域名和 IdM DNS 服务器的 IP 地址
- 在 Active Directory 中选择 Store this conditional forwarder 并将其复制如下,然后选择与您的环境匹配的复制设置。
- 点。
- 要验证 AD 域控制器(DC)是否可以解析 IdM 域中的 DNS 条目,请打开命令提示并输入:
C:\> nslookup server.idm.example.com
如果命令返回 IdM 服务器的 IP 地址,条件转发器可以正常工作。
5.2.1.8. 在 IdM 中为 AD 域创建转发区
- 在 IdM 服务器上,为 AD DNS 域创建一个正向区条目。有关在 IdM 中创建 DNS 转发区的详情,请参考 Linux 域身份、身份验证和策略指南 中的配置转发区部分。
- 如果 AD DNS 服务器不支持 DNSSEC,在 IdM 服务器上禁用 DNSSEC 验证:
- 编辑
/etc/named.conf
文件,将dnssec-validation
参数设置为 no :dnssec-validation no;
- 重启
named-pkcs11
服务:# systemctl restart named-pkcs11
- 要验证 IdM 服务器是否可以解析 AD 域中的 DNS 条目,请输入:
# host server.ad.example.com
如果命令返回 AD DC 的 IP 地址,则 forward 区域可以正常工作。
5.2.1.9. 支持的用户名格式
user_name@domain
。Activeactive Directorynbsp;Directory 支持几种不同类型的名称格式: user_name
、user_name@DOMAIN_NAME
和 DOMAIN_NAME\user_name
。
user_name
)或其完全限定用户名(user_name@domain_name
),例如在系统身份验证时。
/etc/sssd/sssd.conf
文件和可信域中配置的所有域中搜索帐户。如果您配置了一个域解析顺序,如 第 8.5.3 节 “在 IdM 客户端中配置域解析顺序” 所述,SSSD 会按照定义的顺序搜索用户。不管怎样,SSSD 会使用找到的第一个条目。如果多个域中存在相同的用户名,而找到的第一个条目不是预期的条目,这可能会导致问题或混淆。
re_expression
选项中定义的正则表达式。正则表达式用于 IdM 后端或 AD 后端,并支持所有上述格式:
re_expression = (((?P<domain>[^\\]+)\\(?P<name>.+$))|((?P<name>[^@]+)@(?P<domain>.+$))|(^(?P<name>[^@\\]+)$))
5.2.2. 创建信任
5.2.2.1. 从命令行创建信任
- 为信任准备 IdM 服务器,如下所述 第 5.2.2.1.1 节 “为信任准备 IdM 服务器”
- 创建信任协议,如 第 5.2.2.1.2 节 “创建信任协议”
- 验证 Kerberos 配置,如 所述 第 5.2.2.1.3 节 “验证 Kerberos 配置”
5.2.2.1.1. 为信任准备 IdM 服务器
- 安装所需的 IdM、信任和 Samba 软件包:
[root@ipaserver ]# yum install ipa-server ipa-server-trust-ad samba-client
- 配置 IdM 服务器以启用信任服务。如果您使用 ipa-replica-install --setup-adtrust 命令安装服务器,您可以跳过这一步。
- 运行
ipa-adtrust-install
工具:[root@ipaserver ]# ipa-adtrust-install
实用程序添加 AD 信任所需的 DNS 服务记录。如果 IdM 安装了集成的 DNS 服务器,则会自动创建这些记录。如果 IdM 安装时没有集成 DNS服务器,ipa-adtrust-install
会输出您必须手动添加到 DNS 的服务记录列表,然后才能继续。重要红帽强烈建议在每次运行ipa-adtrust-install 后验证 DNS 配置,如
“验证 DNS 配置”一节 所述,特别是在 IdM 或 AD 不使用集成 DNS 服务器时。 - 脚本会提示配置
slapi-nis
插件,这是一个兼容插件,允许较旧的 Linux 客户端与受信任的用户一起工作。Do you want to enable support for trusted domains in Schema Compatibility plugin? This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users. Enable trusted domains support in slapi-nis? [no]: y
- 首次安装 目录时,至少有一个用户(IdM 管理员)存在。SID 生成任务可以为任何现有用户创建一个 SID,以支持信任环境。这是一个资源密集型任务;对于大量用户而言,这可以单独运行。
Do you want to run the ipa-sidgen task? [no]: yes
- 确保正确配置了 DNS,如 第 5.2.1.2 节 “DNS 和 Realm 设置” 所述。
- 启动
smb
服务:[root@ipaserver ~]# systemctl start smb
- 另外,还可在系统引导时配置
smb
服务自动启动:[root@ipaserver ~]# systemctl enable smb
- (可选)使用
smbclient
实用程序验证 Samba 是否从 IdM 端响应 Kerberos 身份验证。[root@ipaserver ~]# smbclient -L ipaserver.ipa.example.com -k lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba 4.9.1) Reconnecting with SMB1 for workgroup listing. Server Comment --------- ------- Workgroup Master --------- -------
5.2.2.1.2. 创建信任协议
# ipa trust-add --type=type ad_domain_name --admin ad_admin_username --password
--external=true
选项传递给 ipa trust-add 命令。详情请查看 第 5.1.5 节 “外部 Trusts 到 ActiveActive Directorynbsp;Directory”。
--two-way=true
选项建立了双向信任:
[root@ipaserver ~]# ipa trust-add --type=ad ad.example.com --admin Administrator --password --two-way=true Active Directory domain administrator's password: ------------------------------------------------------- Added Active Directory trust for realm "ad.example.com" ------------------------------------------------------- Realm-Name: ad.example.com Domain NetBIOS name: AD Domain Security Identifier: S-1-5-21-796215754-1239681026-23416912 SID blacklist incoming: S-1-5-20, S-1-5-3, S-1-5-2, S-1-5-1, S-1-5-7, S-1-5-6, S-1-5-5, S-1-5-4, S-1-5-9, S-1-5-8, S-1-5-17, S-1-5-16, S-1-5-15, S-1-5-14, S-1-5-13, S-1-5-12, S-1-5-11, S-1-5-10, S-1-3, S-1-2, S-1-1, S-1-0, S-1-5-19, S-1-5-18 SID blacklist outgoing: S-1-5-20, S-1-5-3, S-1-5-2, S-1-5-1, S-1-5-7, S-1-5-6, S-1-5-5, S-1-5-4, S-1-5-9, S-1-5-8, S-1-5-17, S-1-5-16, S-1-5-15, S-1-5-14, S-1-5-13, S-1-5-12, S-1-5-11, S-1-5-10, S-1-3, S-1-2, S-1-1, S-1-0, S-1-5-19, S-1-5-18 Trust direction: Two-way trust Trust type: Active Directory domain Trust status: Established and verified
5.2.2.1.3. 验证 Kerberos 配置
- 为 IdM 用户请求一个 ticket:
[root@ipaserver ~]# kinit user
- 为 IdM 域中的服务请求 ticket:
[root@ipaserver ~]# kvno -S host ipaserver.example.com
- 为 AD 域中的服务请求服务票据:
[root@ipaserver ~]# kvno -S cifs adserver.example.com
如果 AD 服务票据被成功授予,则会使用其他所有请求的票据列出跨域票据(TGT)。TGT 命名为krbtgt/AD.DOMAIN@IPA.DOMAIN
。[root@ipaserver ]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: user@IPA.DOMAIN Valid starting Expires Service principal 06/15/12 12:13:04 06/16/12 12:12:55 krbtgt/IPA.DOMAIN@IPA.DOMAIN 06/15/12 12:13:13 06/16/12 12:12:55 host/ipaserver.ipa.example.com@IPA.DOMAIN 06/15/12 12:13:23 06/16/12 12:12:55 krbtgt/AD.DOMAIN@IPA.DOMAIN 06/15/12 12:14:58 06/15/12 22:14:58 cifs/adserver.ad.example.com@AD.DOMAIN
- 为 ActiveActive Directorynbsp 请求一个 ticket:Directory 用户:
[root@ipaserver ~]# kinit user@AD.DOMAIN
- 为 IdM 域中的服务请求 ticket:
[root@ipaserver ~]# kvno -S host ipaserver.example.com
如果 AD 服务票据被成功授予,则会使用其他所有请求的票据列出跨域票据(TGT)。TGT 命名为krbtgt/IPA.DOMAIN@AD.DOMAIN
。[root@ipaserver ]# klist Ticket cache: KEYRING:persistent:0:krb_ccache_hRtox00 Default principal: user@AD.DOMAIN Valid starting Expires Service principal 03.05.2016 18:31:06 04.05.2016 04:31:01 host/ipaserver.ipa.example.com@IPA.DOMAIN renew until 04.05.2016 18:31:00 03.05.2016 18:31:06 04.05.2016 04:31:01 krbtgt/IPA.DOMAIN@AD.DOMAIN renew until 04.05.2016 18:31:00 03.05.2016 18:31:01 04.05.2016 04:31:01 krbtgt/AD.DOMAIN@AD.DOMAIN renew until 04.05.2016 18:31:00
localauth
插件将 Kerberos 主体映射到本地 SSSD 用户名。这允许 AD 用户使用 Kerberos 身份验证并访问 Linux 服务,这些服务直接支持 GSSAPI 身份验证。
5.2.2.3. 验证 ID 映射
- 在 Windows ActiveActive Directorynbsp;Directory 域控制器(DC)上运行以下命令,以列出最高 ID:
C:\> dcdiag /v /test:ridmanager /s:ad.example.com ... Available RID Pool for the Domain is 1600 to 1073741823 ...
- 列出 IdM 服务器上的 ID 范围:
[root@ipaserver ~]# ipa idrange-find ---------------- 1 range matched ---------------- Range name: AD.EXAMPLE.COM_id_range First Posix ID of the range: 610600000 Number of IDs in the range: 200000 First RID of the corresponding RID range: 0 Domain SID of the trusted domain: S-1-5-21-796215754-1239681026-23416912 Range type: Active Directory domain range ---------------------------- Number of entries returned 1 ----------------------------
在后续步骤中,您需要第一个 POSIX ID 值。 - 在 ActiveActive Directorynbsp;Directory DC 上,显示安全标识符(SID)或用户。
例如,显示管理员的
SID:C:\> wmic useraccount where name="administrator" get sid S-1-5-21-796215754-1239681026-23416912-500
SID 的最后一部分是相对标识符(RID)。在下一步中,您需要用户的 RID。注意如果 RID 大于默认 ID 范围(200000),请使用 ipa idrange-mod 命令扩展范围。例如:# ipa idrange-mod --range-size=1000000 AD.EXAMPLE.COM_id_range
- 显示 IdM 服务器中同一用户的用户 ID:
[root@ipaserver ~]# id ad\\administrator uid=610600500(administrator@ad.example.com)...
- 如果您将第一个 POSIX ID 值(610600000)添加到 RID(500),它必须与 IdM 服务器中显示的用户 ID(610600500)匹配。
5.2.2.4. 在现有 IdM 实例上创建信任
- 为信任准备 IdM 服务器,如 第 5.2.2.1.1 节 “为信任准备 IdM 服务器” 所述。
- 创建信任协议,如 第 5.2.2.1.2 节 “创建信任协议” 所述。
- 为每个 IdM 用户生成 SID。注意如果使用
ipa-adtrust-install
实用程序建立信任时生成 SID,则不要执行这个步骤。- 通过在后端 LDAP 目录中运行
ipa-sidgen-task
操作,为每个条目自动添加新的ipaNTSecurityIdentifier
属性,其中包含 SID。[root@ipaserver ]# ldapmodify -x -H ldap://ipaserver.ipa.example.com:389 -D "cn=directory manager" -w password dn: cn=sidgen,cn=ipa-sidgen-task,cn=tasks,cn=config changetype: add objectClass: top objectClass: extensibleObject cn: sidgen nsslapd-basedn: dc=ipadomain,dc=com delay: 0 adding new entry "cn=sidgen,cn=ipa-sidgen-task,cn=tasks,cn=config"
- 任务成功完成后,会在 SID 生成任务
(Sidgen 任务
)结束状态为零(0)的错误日志中记录一条消息。[root@ipaserver ]# grep "sidgen_task_thread" /var/log/dirsrv/slapd-IDM-EXAMPLE-COM/errors [20/Jul/2012:18:17:16 +051800] sidgen_task_thread - [file ipa_sidgen_task.c, line 191]: Sidgen task starts ... [20/Jul/2012:18:17:16 +051800] sidgen_task_thread - [file ipa_sidgen_task.c, line 196]: Sidgen task finished [0].
- 验证 Kerberos 配置,如 第 5.2.2.1.3 节 “验证 Kerberos 配置” 所述。
5.2.2.5. 添加第二个信任
- 确保正确配置了 DNS,如 第 5.2.1.2 节 “DNS 和 Realm 设置” 所述。
- 创建信任协议,如 第 5.2.2.1.2 节 “创建信任协议” 所述。
5.2.2.6. 在 Web UI 中创建信任
- 打开 IdM Web UI:
https://ipaserver.example.com
- 打开 IPA 服务器主选项卡 ,然后选择"信任"子选项卡。
- 在 Trusts 子选项卡中,单击 Add 以打开新的信任配置窗口。
- 填写有关信任的所需信息:
- 在 Domain 字段中提供 AD 域名。
- 要将信任设置为双向,请选择双向信任复选框。要将信任设置为单向,请不要选择双向信任。有关单向和双向信任的更多信息,请参阅 第 5.1.4 节 “一次性和双向信任”。
- 要在另一个林中建立对某个域的外部信任,请选中 External Trust 复选框。
- 使用 的 Establish 部分定义如何建立信任:
- 要使用 AD 管理员的用户名和密码建立信任,请选择管理帐户并提供所需的凭证。
- 或者,若要通过共享密码建立信任,请选择 Pre-shared password 并提供信任密码。
- 为信任定义 ID 配置:
- Range 类型选项允许您选择 ID 范围类型。如果您希望 IdM 自动检测要使用的 ID 范围,请选择 Detect。
- 要定义 ID 范围的起始 ID,请使用 Base ID 字段。要定义 ID 范围的大小,请使用 Range size 字段。如果您希望 IdM 在 ID 范围中使用默认值,请不要指定这些选项。
有关 ID 范围的详情请参考 “ID 范围”一节。
图 5.5. 在 Web UI 中添加信任
- 单击以保存新信任关系。
5.2.3. 跨林信任的安装后注意事项
5.2.3.1. Active Directory Trust 的潜在行为问题
5.2.3.1.1. Active Directory 用户和 IdM 管理
5.2.3.1.2. 验证 Deleted ActiveActive Directorynbsp;Directory 用户
5.2.3.1.3. credential Cache Collections 和 Selecting ActiveActive Directorynbsp;Directory Principals
- 服务名称
- 主机名
- realm name
kinit
实用程序获取 ticket,然后使用 SSH 连接到一个 IdMnbsp;IdM 资源,则这个主体不会被选择用于资源票据。一个 IdMnbsp;IdM 主体会被使用,因为 IdM 主体与资源名称匹配。
Administrator
,且域是 ADEXAMPLE.ADREALM
,则主体是 Administrator@ADEXAMPLE.ADREALM
。
[root@server ~]# kinit Administrator@ADEXAMPLE.ADREALM Password for Administrator@ADEXAMPLE.ADREALM: [root@server ~]# klist Ticket cache: KEYRING:persistent:0:0 Default principal: Administrator@ADEXAMPLE.ADREALM Valid starting Expires Service principal 27.11.2015 11:25:23 27.11.2015 21:25:23 krbtgt/ADEXAMPLE.ADREALM@ADEXAMPLE.ADREALM renew until 28.11.2015 11:25:16
admin
),则有一个单独的 IdM 凭证缓存,并有一个 IdMnbsp;IdM 默认主体。如果 ActiveActive Directorynbsp;Directory 用户使用 SSH 连接到资源,则 IdM 默认主体会被选择为主机 ticket。
[root@vm-197 ~]# ssh -l Administrator@adexample.adrealm ipaclient.example.com Administrator@adexample.adrealm@ipaclient.example.com's password: [root@vm-197 ~]# klist -A Ticket cache: KEYRING:persistent:0:0 Default principal: Administrator@ADEXAMPLE.ADREALM Valid starting Expires Service principal 27.11.2015 11:25:23 27.11.2015 21:25:23 krbtgt/ADEXAMPLE.ADREALM@ADEXAMPLE.ADREALM renew until 28.11.2015 11:25:16 Ticket cache: KEYRING:persistent:0:0Default principal: admin@EXAMPLE.COM
>>>>> IdM user Valid starting Expires Service principal 27.11.2015 11:25:18 28.11.2015 11:25:16 krbtgt/EXAMPLE.COM@EXAMPLE.COM27.11.2015 11:25:48 28.11.2015 11:25:16 host/ipaclient.example.com@EXAMPLE.COM
>>>>> host principal
5.2.3.1.4. 解析组 SID
丢失 Kerberos 票据
无法为用户验证组成员身份
无法为 ActiveActive Directorynbsp;Directory 组成员资格显示 Remote ActiveActive Directorynbsp;Directory User
id
实用程序可用于显示 Linux 系统用户的本地组关联。但是,id
不显示 Active Directory 用户的 Active Directory 组成员资格,即使 Samba 工具确实显示了这些用户。
ssh
工具作为给定的 AD 用户登录到 anan IdMnbsp;IdM 客户端机器。在 AD 用户第一次成功登录后,id
搜索会检测并显示 AD 组成员资格:
[root@ipaserver ~]# id ADDOMAIN\user uid=1921801107(user@ad.example.com) gid=1921801107(user@ad.example.com) groups=1921801107(user@ad.example.com),129600004(ad_users),1921800513(domain users@ad.example.com)
5.2.3.2. 配置信任代理
- 在现有的信任控制器中运行 ipa-adtrust-install --add-agents 命令:
[root@existing_trust_controller]# ipa-adtrust-install --add-agents
命令启动一个交互式配置会话,并提示您输入设置代理所需的信息。有关--add-agents
选项的详情请参考 ipa-adtrust-install(1) man page。 - 在新副本中:
- 重启 IdM 服务:
[root@new_trust_controller]# ipactl restart
- 从 SSSD 缓存中删除所有条目:
[root@new_trust_controller]# sssctl cache-remove
注意要使用 sssctl 命令,必须安装 sssd-tools 软件包。 - (可选)验证副本是否安装了 AD 信任代理角色 :
[root@new_trust_controller]# ipa server-show new_replica.idm.example.com ... Enabled server roles: CA server, NTP server, AD trust agent
5.3. 管理和配置跨林信任环境
5.3.1. 可信域环境中的用户主体名称
username@KERBEROS-REALM
。在 ActiveActive Directorynbsp;Directory 林中可以配置额外的 UPN 后缀。这些企业主体名称用于提供默认 UPN 的替代登录。
AD.EXAMPLE.COM
,用户的默认 UPN 为 user@ad.example.com
。然而,公司常常希望其用户能够使用其电子邮件地址(如 user@example.com
)登录。在这种情况下,管理员将额外的 UPN 后缀 example.com
添加到 ActiveActive Directorynbsp;Directory 林,并在用户的帐户属性中设置新后缀。
userPrincipalName
属性,因为 Active Directory 不验证这些操作。
[root@ipaserver ~]# ipa trust-fetch-domains Realm-Name: ad.example.com ------------------------------- No new trust domains were found ------------------------------- ---------------------------- Number of entries returned 0 ----------------------------
[root@ipaserver ~]# ipa trust-show
Realm-Name: ad.example.com
Realm-Name: ad.example.com
Domain NetBIOS name: AD
Domain Security Identifier: S-1-5-21-796215754-1239681026-23416912
Trust direction: Two-way trust
Trust type: Active Directory domain
UPN suffixes: example.com
cn=trusted_domain_name,cn=ad,cn=trusts,dc=idm,dc=example,dc=com
子树中的多值属性 ipaNTAdditionalSuffixes
中。
5.3.2. ActiveActive Directorynbsp 中的 IdM 客户端;Directory DNS 域
5.3.2.1. 不要求使用 Kerberos 单点登录 IdM 客户端
- 要确保客户端中的系统安全服务守护进程(SSSD)可以与 IdM 服务器通信,请使用
--domain=IPA_DNS_Domain
选项安装 IdM 客户端:[root@idm-client.ad.example.com ~]# ipa-client-install --domain=idm.example.com
这个选项禁用 ActiveActive Directorynbsp;Directory DNS 域的 SRV 记录自动探测。 - 在
/etc/krb5.conf
配置文件的[domain_realm]
部分找到 ActiveActive Directorynbsp;Directory 域的现有映射:.ad.example.com = IDM.EXAMPLE.COM ad.example.com = IDM.EXAMPLE.COM
将这两个行替换为 ActiveActive Directorynbsp 中的 Linux 客户端完全限定域名(FQDN)的映射条目;Directory DNS 区到 IdM 域:idm-client.ad.example.com = IDM.EXAMPLE.COM
替换默认映射可防止 Kerberos 将其对 ActiveActive Directorynbsp 的请求发送到 IdM Kerberos 发布中心(KDC)。相反,Kerberos 使用 SRV DNS 记录自动发现来查找 KDC。仅针对添加的主机idm-client.ad.example.com
设置 IdM KDC。
处理 SSL 证书
的主机对象,certmonger 可以为此名称请求证书
:
[root@idm-client.ad.example.com ~]# ipa-getcert request -r \ -f /etc/httpd/alias/server.crt \ -k /etc/httpd/alias/server.key \ -N CN=ipa-client.ad.example.com \ -D ipa-client.ad.example.com \ -K host/idm-client.ad.example.com@IDM.EXAMPLE.COM \ -U id-kp-serverAuth
认证器服务使用
/etc/krb5.keytab
文件中存储的默认主机密钥来向 IdM 证书颁发机构(CA)进行身份验证。
5.3.2.2. 需要 Kerberos 单点登录 IdM 客户端
idm-client.idm.example.com
。您必须在 ActiveActive Directorynbsp 中创建 CNAME 记录 idm-client.ad.example.com
;Directory DNS 域指向 IdM 客户端的 A/AAAA 记录。
/etc/krb5.conf
配置文件的 [libdefaults]
部分中设置以下选项:
ignore_acceptor_hostname = true
处理 SSL 证书
的主机对象,certmonger 可以为此名称请求证书
:
- 创建新主机对象:
[root@idm-server.idm.example.com ~]# ipa host-add idm-client.ad.example.com --force
使用--force
选项,因为主机名是 CNAME,而不是 A/AAAA 记录。 - 允许 IdM DNS 主机名管理 IdM 数据库中的 ActiveActive Directorynbsp;Directory 主机条目:
[root@idm-server.idm.example.com ~]# ipa host-add-managedby idm-client.ad.example.com \ --hosts=idm-client.idm.example.com
[root@idm-client.idm.example.com ~]# ipa-getcert request -r \ -f /etc/httpd/alias/server.crt \ -k /etc/httpd/alias/server.key \ -N CN=`hostname --fqdn` \ -D `hostname --fqdn` \ -D idm-client.ad.example.com \ -K host/idm-client.idm.example.com@IDM.EXAMPLE.COM \ -U id-kp-serverAuth
5.3.3. 为 ActiveActive Directorynbsp 创建 IdM 组;Directory 用户
- 可选。在 AD 域中创建或选择要用于管理 IdM 域中的 AD 用户的组。多个组可用于 IdM 端的不同组并添加到不同的组中。
- 通过将
--external
选项添加到 ipa group-add 命令,在 IdM 域中为 ActiveActive Directorynbsp;Directory 用户创建一个外部组。external 选项表示此组旨在包含
IdM 域外的成员。例如:[root@ipaserver ~]# ipa group-add --desc='AD users external map' ad_users_external --external ------------------------------- Added group "ad_users_external" ------------------------------- Group name: ad_users_external Description: AD users external map
注意外部组必须链接到一组其他用户,而不是用户的主组。Activeactive Directorynbsp;Directory 将组成员存储在组的member
属性中,IdM 使用此属性来解析成员。但是,ActiveActive Directorynbsp;Directory 将用户的主组群保存在用户条目的primaryGroupID
属性中,该属性没有被解决。 - 创建一个新的 IdM POSIX 组,或选择一个现有组来管理 IdM 策略。例如,要创建新组:
[root@ipaserver ~]# ipa group-add --desc='AD users' ad_users ---------------------- Added group "ad_users" ---------------------- Group name: ad_users Description: AD users GID: 129600004
- 将 AD 用户或组作为外部成员添加到 IdM 外部组中。AD
成员通过其完全限定名称标识,如DOMAIN\group_name 或
。然后,AD 身份被映射到用户或组的 ActiveActive Directorynbsp;Directory SID。DOMAIN\username
例如,对于 AD 组:[root@ipaserver ~]# ipa group-add-member ad_users_external --external "AD\Domain Users" [member user]: [member group]: Group name: ad_users_external Description: AD users external map External member: S-1-5-21-3655990580-1375374850-1633065477-513 SID_DOM_GROUP (2) ------------------------- Number of members added 1 -------------------------
- 将外部 IdM 组作为成员添加到 POSIX IdM 组。例如:
[root@ipaserver ~]# ipa group-add-member ad_users --groups ad_users_external Group name: ad_users Description: AD users GID: 129600004 Member groups: ad_users_external ------------------------- Number of members added 1 -------------------------
5.3.4. 维护信任
5.3.4.1. 编辑全局信任配置
ipa-adtrust-install
程序自动为 IdM 域配置后台信息,这是使用 ActiveActive Directorynbsp;Directory 域创建信任所需要的信息。
- Windows 样式的安全 ID(SID);此属性是自动生成且无法修改
- 域 GUID;此属性是自动生成且无法修改
- Kerberos 域名;此属性来自 IdM 配置,且无法修改
- 要添加 IdM 用户的默认组;可以修改此属性
- NetBIOS 名称;不建议修改此属性
cn=域,cn=ad,cn=etc,dc=example,dc=com
子树中。
5.3.4.1.1. 更改 NetBIOS 名称
ipa-adtrust-install 实用程序时,为 IdM 服务器配置兼容 Active Directory 拓扑中的
NetBIOS 名称。要稍后更改,请再次运行 ipa-adtrust-install
,并使用 --netbios-name
选项指定新的 NetBIOS 名称:
[root@ipaserver ]# ipa-adtrust-install --netbios-name=NEWBIOSNAME
5.3.4.1.2. 更改 Windows 用户的默认组
ipa-adtrust-install
实用程序自动创建的回退组。默认组无法被删除,但您可以使用全局信任配置指定另一个 IdM 组用作 IdM 用户主组的回退。
[root@server ~]# kinit admin [root@server ~]# ipa trustconfig-mod --fallback-primary-group="Example Windows Group"
- 打开 IdM Web UI。
https://ipaserver.example.com
- 在 IPA 服务器主选项卡下 ,选择信任子选项卡,然后打开 Global Configuration 部分。
- 从,选择一个新组。
图 5.6. 为 Windows 用户配置默认组
- 单击。
5.3.4.2. 发现、启用和禁用受信任域
cn=子域,cn=trust_name,cn=ad,cn=trusts,dc=example,dc=com
中的 trusts 子树中。
[root@ipaserver ~]# kinit admin [root@ipaserver ~]# ipa trust-fetch-domains ad.example.com -------------------------------------------- List of trust domains successfully refreshed -------------------------------------------- Realm name: test.ad.example.com Domain NetBIOS name: TEST Domain Security Identifier: S-1-5-21-87535643-5658642561-5780864324 Realm name: users.ad.example.com Domain NetBIOS name: USERS Domain Security Identifier: S-1-5-21-91314187-2404433721-1858927112 Realm name: prod.ad.example.com Domain NetBIOS name: PROD Domain Security Identifier: S-1-5-21-46580863-3346886432-4578854233 ---------------------------- Number of entries returned 3 ----------------------------
[root@ipaserver ~]# kinit admin [root@ipaserver ~]# ipa trustdomain-disable test.ad.example.com ------------------------------------------ Disabled trust domain "test.ad.example.com" ------------------------------------------
[root@ipaserver ~]# kinit admin [root@ipaserver ~]# ipa trustdomain-del prod.ad.example.com ------------------------------------------------------------------- Removed information about the trusted domain " "prod.ad.example.com" -------------------------------------------------------------------
5.3.4.3. 查看和管理与 IdM Kerberos 域关联的域
[root@ipaserver ~]# kinit admin [root@ipaserver ~]# ipa realmdomains-show Domain: ipa.example.org, ipa.example.com, example.com
- 在使用 ipa dnszone-add 命令将新 DNS 区域添加到 IdM 后,域会自动添加到域列表中。运行 ipa realmdomains-show 在 IdM KDC 控制的域列表中显示新域:
# kinit admin # ipa dnszone-add ipa2.example.com # ipa realmdomains-show Domain: ipa.example.org, ipa.example.com, example.com, ipa2.example.com
与 IdM Kerberos 域关联的域删除和其他类型的修改也会自动处理。
- 如果添加了属于 IdM Kerberos 域一部分的 DNS 区域,则必须手动将新域添加到 IdM KDC 控制的 IdM 域列表中。使用 ipa realmdomains-mod 命令及
--add-domain
选项添加新域:[root@ipaserver ~]# kinit admin [root@ipaserver ~]# ipa realmdomains-mod --add-domain=ipa2.example.com Domain: ipa.example.org, ipa.example.com, example.com, ipa2.example.com
如果删除了 DNS 区域,您需要手动删除与 IdM Kerberos 域关联的域,同时:[root@ipaserver ~]# kinit admin [root@ipaserver ~]# ipa realmdomains-mod --del-domain=ipa2.example.com Domain: ipa.example.org, ipa.example.com, example.com
如果要对域列表进行多项更改,可以使用--domain
选项修改和替换列表本身。[root@ipaserver ~]# ipa realmdomains-mod --domain={ipa.example.org,ipa2.example.com}
5.3.4.4. 在透明信任中为 UID 和 GID 号添加范围
base-id
选项设置 POSIX 范围的基本 ID,即起始数range-size
选项设置 IdM 使用的 POSIX ID 范围的大小。IdM 将可信 AD 域中的用户和组的 RID 映射到 POSIX ID。--range-size
选项定义 IdM 创建的最大 ID 数。AD 对您创建的每个用户和组使用一个新的 RID。如果您删除了用户或组,AD 不会为将来的 AD 条目重复使用 RID。因此,范围必须足够大,以便 IdM 为每个现有的 AD 用户和组分配 ID,以及您以后创建的 ID。例如,如果管理员删除了 50000 个 AD 用户并且在此期间将创建 10000 个新帐户,则范围必须至少设置为 60000 个。但是,重要的是,范围中还包含足够的预留。在您期望默认(200000)范围大小不足的大型环境中,将--range-size
设置为更高的值。rid-base
选项设置 RID 的起始数,这是 SID 中最右侧的数字;该值表示要添加到基本 ID 的范围,以防止冲突dom-sid
选项设置域 SID,因为可能会为信任配置了多个域
[root@server ~]$ kinit admin [root@server ~]$ ipa idrange-add --base-id=1200000 --range-size=200000 --rid-base=0 --dom-sid=S-1-5-21-123-456-789 trusted_dom_range
5.3.4.5. 手动调整 DNA ID 范围
# ipa-replica-manage dnarange-set masterA.example.com 1250-1499
# ipa-replica-manage dnanextrange-set masterB.example.com 1500-5000
5.3.4.6. 用于服务和主机的 Kerberos 标记
OK_AS_DELEGATE
。
5.3.5. 为服务设置 PAC 类型
5.3.5.1. 设置默认 PAC 类型
- 打开 IPA Server 选项卡。
- 选择 Configuration 子选项卡。
- 滚动到 Service Options 区域。
图 5.7. Service Options 区域
- 要使用 PAC,请选中 MS-PAC 复选框,该复选框会添加一个可供 AD 服务使用的证书。如果没有选择复选框,则不会在 Kerberos 票据中添加任何 PAC。如果您选中 nfs:NONE 复选框,则 MS-PAC 记录不会添加到针对 NFS 服务器发布的服务票据中。注意您可以忽略PAD 复选框。IdM 中尚不提供此功能。
- 单击页面顶部的更新链接,以保存更改。
5.3.5.2. 为服务设置 PAC 类型
--pac-type
选项。有关如何使用该命令的详情,请在添加 --help
选项的情况下运行该命令:
$ ipa service-mod --help Usage: ipa [global-options] service-mod PRINCIPAL [options] Modify an existing IPA service. Options: -h, --help show this help message and exit ...
- 打开"身份 "选项卡,然后选择"服务 "子选项卡。
- 单击要编辑的服务的名称。
- 在 Service Settings 区域,选中覆盖继承的 settings 选项,然后选择 MS-PAC 复选框来添加可供 AD 服务使用的证书。
图 5.8. Service Settings 区域
如果没有选择复选框,则不会在 Kerberos 票据中添加任何 PAC。注意您可以忽略PAD 复选框。IdM 中尚不提供此功能。 - 单击页面顶部的更新链接,以保存更改。
5.3.6. 使用在 Active Directory 中定义的 POSIX Attributes
5.3.6.1. 为 Active Directory 用户定义 UID 和 GID 属性
5.3.6.2. 传输登录 Shell 和主目录属性
loginShell
属性,用于指定 AD 用户的 shellunixHomeDirectory
属性,它指定 AD 用户的主目录
/etc/sssd/sssd.conf
文件的 [domain]
部分中的 subdomain_homedir
选项必须设置为 %o
。%o
值表示从身份提供程序检索的主目录。例如:
[domain/example.com] subdomain_homedir = %o
loginShell
或 unixHomeDirectory
,则更改也会自动反映在 IdM 端。如果 AD 服务器上未定义这些属性,SSSD 会使用模板默认值。然后,这个默认值被显示到 IdM 客户端。
5.3.7. 从 ActiveActive Directorynbsp 使用 SSH;Directory Machine for IdM 资源
5.3.7.1. 缓存注意事项
- 该条目已自动过期。
- 使用
sss_cache
实用程序手动使用户条目在缓存中过期:# sss_cache --user user_name
- 用户使用
kinit
实用程序或 Web UI 向 IdM 服务器进行身份验证。
5.3.7.2. 使用 SSH 不带密码
localauth
Kerberos 插件确保 Kerberos 主体自动映射到本地 SSSD 用户名。通过 localauth
,在使用 Kerberos 登录时不会提示来自可信 AD 域的 Windows 用户输入密码,因此无需密码即可使用 SSH。
sssd
连接到 Kerberos 库以将主体映射到本地 POSIX 身份时,SSSD 插件会根据 IdM 中定义的信任协议对其进行映射。
# ipa host-mod bastion_host.idm.example.com --ok-as-delegate=true
Red Hat Enterprise Linuxnbsp 上的 AD 用户 Kerberos 身份验证;Hat Enterprise Red Hat Enterprise Linuxnbsp;Linux 7.1 and newer Systems
localauth
Kerberos 插件。
user@AD.DOMAIN
、ad.domain\user 和 AD\user
格式的用户名。
localauth
的系统中,不需要在 /etc/krb5.conf
文件中设置 auth_to_local
选项,或者在.k5login
文件中列出 Kerberos 主体。localauth
插件使得之前用于登录的配置不会过时的密码。
为 AD 用户手动配置 Kerberos 身份验证
localauth
插件的系统中,SSH 提示输入 ActiveActive Directorynbsp 的用户密码 ;Directory 域用户即使用户获取正确的 Kerberos ticket。
/etc/krb5.conf
文件中配置 auth_to_local
选项,或在用户主目录中的.k5login
文件中列出用户 Kerberos 主体。
- 配置
/etc/krb5.conf
- 以下流程描述了如何在 Kerberos 配置中配置域映射。
- 打开
/etc/krb5.conf
文件。 - 在
[realms]
部分中,按名称标识 IdM 域,然后添加两个auth_to_local
行来定义 Kerberos 主体名称映射:- 在一个规则中,包含用于映射不同 Active Directory 用户名格式和特定 Active Directory 域的规则。
- 在另一条规则中,为标准 Unix 用户名设置
DEFAULT
值。
例如:[realms] IDM = { .... auth_to_local = RULE:[1:$1@$0](^.*@ADDOMAIN$)s/@ADDOMAIN/@addomain/ auth_to_local = DEFAULT }
- 重新启动 KDC 服务。
[root@server ~]# systemctl restart krb5kdc.service
请注意,如果您使用auth_to_local
选项配置 Kerberos 身份验证,用于 SSH 访问的用户名必须满足以下条件:- 用户名必须具有格式
ad_user@ad_domain
。 - 域名必须是小写。
- 用户名的大小写必须与 ActiveActive Directorynbsp;Directory 中的用户名匹配。
例如,用户和用户
,因为存在不同的情况。被视为不同的用户
有关设置auth_to_local
的详情,请查看 krb5.conf(5) man page。 configure.k5login
- 以下步骤将系统配置为查找本地用户名的 Kerberos 主体名称。
在用户的主目录中创建.k5login
文件。- 列出用户在 文件中使用的 Kerberos 主体。
如果身份验证用户与现有 Kerberos 票据中的主体匹配,则允许用户使用票据登录,而且不会提示用户输入密码。请注意,如果您使用.k5login
配置配置 Kerberos 身份验证,用于 SSH 访问的用户名必须具有ad_user@ad_domain
格式。有关配置.k5login
文件的详情请参考 .k5login(5) man page。
5.3.8. 使用启用了 Kerberos 的 Web 应用程序的信任
[root@ipaserver ~]# systemctl restart httpd.service
KrbAuthRealms
KrbAuthRealms
选项为 IdM 域的名称提供应用程序位置。这是必需的。Krb5Keytab
Krb5Keytab
选项提供 IdM 服务器 keytab 的位置。这是必需的。KrbServiceName
KrbServiceName
选项设置用于 keytab(HTTP)的 Kerberos 服务名称。这是推荐的。KrbMethodK5Passwd
和KrbMethodNegotiate
KrbMethodK5Passwd
Kerberos 方法选项为有效用户启用基于密码的身份验证。如果有一个有效的 Kerberos ticket 可用,该KrbMethodNegotiate
选项启用单点登录(SSO)。建议为许多用户使用这些选项。KrbLocalUserMapping
KrbLocalUserMapping
选项允许常规 Web 登录(通常是帐户的 UID 或通用名称)映射到完全限定的用户名(其格式为 user@REALM.COM)。强烈建议使用这个选项。如果没有域名/登录名映射,Web 登录似乎与域用户不同。这意味着用户无法查看其预期数据。有关支持的用户名格式的详情请参考 第 5.2.1.9 节 “支持的用户名格式”。
例 5.1. Apache Web 应用程序中的 Kerberos 配置
<Location "/mywebapp"> AuthType Kerberos AuthName "IPA Kerberos authentication" KrbMethodNegotiate on KrbMethodK5Passwd on KrbServiceName HTTPKrbAuthRealms IDM_DOMAIN
Krb5Keytab /etc/httpd/conf/ipa.keytab
KrbLocalUserMapping on
KrbSaveCredentials off Require valid-user </Location>
5.3.9. 将 IdM 服务器配置为用于 Active Directory Kerberos 通讯的 Kerberos 分发中心代理
- 在 IdM 客户端上,将 Active Directory 域添加到
/etc/krb5.conf
文件的 [realms] 部分。将kdc
和kpasswd_server
参数设置为指向 IdM 服务器的完全限定域名,后接/KdcProxy
':AD.EXAMPLE.COM = { kdc = https://server.idm.example.com/KdcProxy kpasswd_server = https://server.idm.example.com/KdcProxy }
- 在 IdM 客户端上,禁用创建
/var/lib/ss/pubconf/kdcinfo.*
文件,这些文件可覆盖上一步中的/etc/krb5.conf
规格。编辑/etc/sssd/sssd.conf
文件,将krb5_use_kdcinfo
设置为False
:[domain/example.com] krb5_use_kdcinfo = False
- 在 IdM 服务器中,将
/etc/ipa/kdcproxy/kdcproxy.conf
文件中的use_dns
选项设置为true
,以利用 DNS 服务(SRV)记录来查找 AD 服务器以便与之通信:use_dns = true
另外,如果您不想使用 DNS SRV 记录,在/etc/krb5.conf
文件的 [realms] 部分添加显式 AD 服务器:AD.EXAMPLE.COM = { kdc = ad-server.ad.example.com kpasswd_server = ad-server.ad.example.com }
注意您可以通过运行脚本来执行流程的第 2 和 3 步,例如 Ansible 脚本。这在多个系统上进行更改时特别有用。 - 在 IdM 服务器中,重启 IPA 服务:
# ipactl restart
- 要验证这个过程是否成功,请在 IdM 客户端中运行以下命令:
# rm /var/lib/sss/pubconf/kdcinfo* # kinit ad_user@AD.EXAMPLE.COM Password for ad_user@AD.EXAMPLE.COM: # klist Ticket cache: KEYRING:persistent:0:0 Default principal: ad_user@AD.EXAMPLE.COM Valid starting Expires Service principal [... output truncated ...]
5.4. 更改受信任的 Active Directory 域中的用户和组的 LDAP 搜索库
5.4.1. 先决条件
- 为确保 SSSD 不解析用户所属的所有组,请考虑在 Active Directory 端禁用对
tokenGroups
属性的支持。启用tokenGroups
时,SSSD 会解析用户所属的所有组,因为 属性包含 SID 的扁平列表。有关属性的详情,请参阅 Microsoft Developer Network 上的 Token-Groups 属性。
5.4.2. 配置 LDAP 搜索基础以限制搜索
/etc/sssd/sssd.conf
文件将 SSSD 中的搜索限制为特定的子树。
注意事项
- 如果您的 SSSD 客户端直接加入 Active Directory 域,请对所有客户端执行此步骤。
- 如果您的 SSSD 客户端位于与 Active Directory 信任的身份管理域中,则仅在身份管理服务器上执行此步骤。
流程
- 确保受信任的域在
sssd.conf
中有一个单独的[domain]
部分。可信域部分的标题遵循此模板:[domain/main_domain/trusted_domain]
例如:[domain/idm.example.com/ad.example.com]
- 编辑
sssd.conf
文件,将搜索基础限制为特定的组织单元(OU)。例如:ldap_search_base
选项会更改所有对象的搜索基础。[domain/idm.example.com/ad.example.com]
ldap_search_base = ou=finance,dc=ad,dc=example,dc=com
您还可以使用ldap_user_search_base
、ldap_group_search_base
、ldap_netgroup_search_base
和ldap_service_search_base
选项。有关这些选项的详情请参考 sssd-ldap(5) man page。 - 重启 SSSD。
# systemctl restart sssd.service
- 要验证,请在 SSSD 客户端上解析几个 Active Directory 用户。例如,测试用户搜索库和组群搜索库的更改:
# getent passwd ad_user@ad.example.com # getent group ad_group@ad.example.com
如果正确配置了 SSSD,您可以只从配置的搜索库解析对象。
- SSSD 缓存过期。
# sss_cache --everything
- 在
sssd.conf
的常规[domain]
部分,将debug_level
选项设置为9
。 - 重复 命令以解析用户。
- 在
/var/log/sssd/ 的
SSSD日志中,查找来自sdap_get_generic_* 功能的消息
。功能记录用户搜索中使用的过滤器和搜索基础。
其它资源
- 有关您可以在
sssd.conf
的可信域部分使用的选项列表,请查看 sssd.conf(5) man page 中的 TRUSTEDSECTION
。
5.5. 更改 SSSD 显示的用户名格式
user_name@domain_name
格式。在更改格式前,请参阅 第 5.2.1.9 节 “支持的用户名格式” 了解这个默认值的原因。
- 在
/etc/sssd/sssd.conf
文件中的域部分添加以下条目:full_name_format = %1$s
- 重启 SSSD:
# systemctl restart sssd
5.6. 将身份管理或 SSSD 限制为受信任的 Active Directory 域中的选定 Active Directory 服务器或站点
5.6.1. 配置 SSSD 以联系特定活动目录服务器
/etc/sssd/sssd.conf
文件手动设置 SSSD 连接到的 Active Directory 服务器。
注意事项
- 如果您的 SSSD 客户端直接加入 Active Directory 域,请对所有客户端执行此步骤。在这个设置中,限制 Active Directory 域控制器(DC)或站点也会将 SSSD 客户端配置为连接到特定服务器或站点进行身份验证。
- 如果您的 SSSD 客户端位于与 Active Directory 信任的身份管理域中,则仅在身份管理服务器上执行此步骤。在此设置中,限制 Active Directory DC 或站点不会将身份管理客户端配置为连接到特定服务器或站点以进行身份验证。虽然可信 Active Directory 用户和组通过身份管理服务器解析,但身份验证直接针对 Active Directory DC 执行。从 Red Hat Enterprise Linux 7.6 和 sssd-1.16.2-5.el7 开始,您可以在 IdM 客户端中使用 SSSD 使用
ad_server
和ad_site
选项的特定 AD 服务器或站点。在之前的 Red Hat Enterprise Linux 7 版本中,通过在客户端上的/etc/krb5.conf
文件中定义所需的 Active Directory DC 来限制身份验证。
流程
- 确保受信任的域在
sssd.conf
中有一个单独的[domain]
部分。可信域部分的标题遵循此模板:[domain/main_domain/trusted_domain]
例如:[domain/idm.example.com/ad.example.com]
- 编辑
sssd.conf
文件,以列出 Active Directory 服务器或您要连接到的站点的主机名。使用ad_server
,以及 Active Directory 服务器的ad_server_backup
选项(可选)。在 Active Directory 站点使用ad_site
选项。有关这些选项的详情请参考 sssd-ad(5) man page。例如:[domain/idm.example.com/ad.example.com]
ad_server = dc1.ad.example.com
- 重启 SSSD。
# systemctl restart sssd.service
- 要在 SSSD 客户端上,通过配置的服务器或站点以 Active Directory 用户身份解析或身份验证。例如:
# id ad_user@ad.example.com
- 在
sssd.conf
的常规[domain]
部分,将debug_level
选项设置为9
。 - 检查
/var/log/sssd/ 中的
SSSD 日志,以查看 SSSD 联系了哪些服务器。
其它资源
- 有关您可以在
sssd.conf
的可信域部分使用的选项列表,请查看 sssd.conf(5) man page 中的 TRUSTEDSECTION
。
5.7. 为传统 Linux 客户端提供 Active Directory 信任
信息,而是使用其他实用程序来实现这一目的,如nss_ldap
、nss-pam-ldapd
或 SSSD 版本 1.8 或更早版本。运行以下版本的 Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux 不使用 SSSD 1.9,因此被视为旧客户端:
- RedRed Hat Enterprise Linuxnbsp;Hat EnterpriseRed Hat Enterprise Linuxnbsp;Linux 5.7 or later
- RedRed Hat Enterprise Linuxnbsp;Hat EnterpriseRed Hat Enterprise Linuxnbsp;Linux 6.0 – 6.3
- Kerberos 身份验证
- 基于主机的访问控制(HBAC)
- SELinux 用户映射
sudo
规则
- 信息查找
- 密码验证
5.7.1. AD 信任的服务器端配置
- 已安装 IdM 的 ipa-server 软件包以及 IdM 信任附加组件的 ipa-server-trust-ad 软件包。
ipa-server-install
工具已运行来设置 IdM 服务器。- ipa-adtrust-install --enable-compat 命令已运行,它会确保 IdM 服务器支持与 AD 域信任,以及兼容 LDAP 树可用。如果您在过去没有
--enable-compat 选项运行 ipa-adtrust-install
--enable-compat
。 - ipa trust-add ad.example.org 命令已运行来建立 AD 信任。
allow_all
规则,请在 IdM 服务器上启用 system-auth
服务,该服务允许对 AD 用户进行身份验证。
allow_all
的当前状态。如果该规则被禁用,输出中会显示 Enabled: FALSE
:
[user@server ~]$ kinit admin
[user@server ~]$ ipa hbacrule-show allow_all
Rule name: allow_all
User category: all
Host category: all
Service category: all
Description: Allow all users to access any host from any host
Enabled: FALSE
system-auth
,请创建一个名为 system-auth
的 HBAC 服务,并使用这个服务添加 HBAC 规则来授予 IdM master 的访问权限。如需添加 HBAC 服务和规则,请参阅 Linux 域身份、身份验证和策略指南中的配置基于主机的访问控制 部分。https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/linux_domain_identity_authentication_and_policy_guide/index#configuring-host-access请注意,HBAC 服务是 PAM 服务名称;如果您添加新的 PAM 服务,请确保创建名称相同的 HBAC 服务,然后通过 HBAC 规则授予对此服务的访问权限。
5.7.2. 使用 ipa-advise
实用程序进行客户端配置
ipa-advise
程序提供配置指令,用于为 AD 信任设置旧的客户端。
ipa-advise
可以提供配置说明的完整场景列表,请在没有任何选项的情况下运行 ipa-advise
。运行 ipa-advise
会打印所有可用配置指令集的名称,以及每个集合的作用以及建议使用它的描述。
[root@server ~]# ipa-advise config-redhat-nss-ldap : Instructions for configuring a system with nss-ldap as a IPA client. This set of instructions is targeted for platforms that include the authconfig utility, which are all Red Hat based platforms. config-redhat-nss-pam-ldapd : Instructions for configuring a system (...)
ipa-advise
工具,并将指令设置为参数:
[root@server ~]# ipa-advise config-redhat-nss-ldap #!/bin/sh # ---------------------------------------------------------------------- # Instructions for configuring a system with nss-ldap as a IPA client. # This set of instructions is targeted for platforms that include the # authconfig utility, which are all Red Hat based platforms. # ---------------------------------------------------------------------- # Schema Compatibility plugin has not been configured on this server. To # configure it, run "ipa-adtrust-install --enable-compat" # Install required packages via yum yum install -y wget openssl nss_ldap authconfig # NOTE: IPA certificate uses the SHA-256 hash function. SHA-256 was # introduced in RHEL5.2. Therefore, clients older than RHEL5.2 will not # be able to interoperate with IPA server 3.x. # Please note that this script assumes /etc/openldap/cacerts as the # default CA certificate location. If this value is different on your # system the script needs to be modified accordingly. # Download the CA certificate of the IPA server mkdir -p -m 755 /etc/openldap/cacerts wget http://idm.example.com/ipa/config/ca.crt -O /etc/openldap/cacerts/ca.crt (...)
ipa-advise
实用程序配置 Linux 客户端,方法是将显示的说明作为 shell 脚本运行,或者手动执行说明。
- 创建 脚本文件。
[root@server ~]# ipa-advise config-redhat-nss-ldap > setup_script.sh
- 使用
chmod
实用程序向 文件添加执行权限。[root@server ~]# chmod +x setup_script.sh
- 使用
scp
实用程序将 脚本复制到客户端。[root@server ~]# scp setup_script.sh root@client
- 在客户端上运行 脚本。
[root@client ~]# ./setup_script.sh
重要在客户端上运行脚本文件之前,请务必仔细阅读和查看脚本文件。
ipa-advise
显示的说明。
5.8. 跨林信任故障排除
5.8.1. 对 ipa-extdom 插件进行故障排除
ipa-extdom
接收 AD 用户和组的信息,并将它们转发到请求客户端。
设置 ipa-extdom 插件的 Config Timeout
ipa-extdom
插件针对 AD 用户的数据向 SSSD 发送请求。但是,并非所有请求的数据都可能已在 SSSD 缓存中。在本例中,SSSD 从 AD 域控制器(DC)请求数据。这对于某些操作可能非常耗时。配置超时值定义 ipa-extdom
插件在插件取消连接前等待 SSSD 回复的时间(以毫秒为单位),并为调用者返回超时错误。
- 如果您设置了一个太小的值,如 500 毫秒,SSSD 可能没有足够的时间来响应,请求将始终返回超时。
- 如果该值太大,如30000 毫秒(30 秒),则单个请求可能会在这段时间内阻止与 SSSD 的连接。由于一次只能有一个线程连接到 SSSD,来自插件的所有其他请求都必须等待。
- 如果 IdM 客户端发送了大量请求,它们可能会阻止为目录服务器配置的所有可用工作程序,因此服务器可能在某些情况下无法响应任何类型的请求。
- 如果在请求 AD 用户和组信息时达到自己的搜索超时前,IdM 客户端经常收到超时错误,配置超时值太小。
- 如果 IdM 服务器上的 Directory 服务器经常被锁定,并且
pstack
实用程序报告很多或所有 worker 线程目前正在处理ipa-extdom
请求,则该值太大。
# ldapmodify -D "cn=directory manager" -W dn: cn=ipa_extdom_extop,cn=plugins,cn=config changetype: modify replace: ipaExtdomMaxNssTimeout ipaExtdomMaxNssTimeout: 20000
为 NSS 调用设置 ipa-extdom 插件使用的 maximum Size
ipa-extdom
插件使用调用,这些调用使用与典型名称服务交换机(NSS)调用相同的 API 来请求 SSSD 中的数据。这些调用使用 SSSD 可以存储请求数据的缓冲。如果缓冲区太小,SSSD 会返回一个 ERANGE 错误,插件会使用更大的缓冲区重试请求。cn=ipa_extdom_extop,cn=plugins,cn=config 条目的 IdM master 中的 ipaExtdomMaxNssBufSize
属性定义缓冲区的最大大小,以字节为单位。
# ldapmodify -D "cn=directory manager" -W dn: cn=ipa_extdom_extop,cn=plugins,cn=config changetype: modify replace: ipaExtdomMaxNssBufSize ipaExtdomMaxNssBufSize: 268435456
部分 III. 将 Linux 域与 Active Directory 域集成:同步
Active Directory
和 Identity Management
用户的说明,如何将现有环境从同步迁移到信任,以及如何在 Active Directory
环境中使用 ID Views
。
第 6 章 同步 ActiveActive Directorynbsp;Directory 和 IdentityIdentity Managementnbsp;Management Users
6.1. 支持的 Windows 平台
- 林功能级别范围:Windows Server 2008 - Windows Server 2012 R2
- 域功能级别范围:Windows Server 2008 - Windows Server 2012 R2
- Windows Server 2012 R2
- Windows Server 2016
6.2. 关于 Active Directory 和 IdentityIdentity Managementnbsp;Management
图 6.1. ActiveActive Directorynbsp;Directory and IdM Synchronization
Windows 信息 | IdM 信息 |
---|---|
|
|
图 6.2. 同步拓扑
- 同步操作每五分钟运行一次。要修改频率,请在 Active Directory 对等 DN 中设置
winSyncInterval
属性:cn=meTowinserver.ad.example.com,cn=replica,cn=dc\3Didm\,dc\3Dexample\,dc\3Dcom,cn=mapping tree,cn=config
- 同步只能配置一个 ActiveActive Directorynbsp;Directory 域。
- 同步只能 配置一个 ActiveActive Directorynbsp;Directory 域控制器。
- 仅同步用户信息;组信息不.
- 用户属性和密码都可以同步。
- 虽然修改是双向的(从 ActiveActive Directorynbsp;Directory 到 IdM,从 IdM 到 ActiveActive Directorynbsp;Directory)时,创建帐户只能从 ActiveActive Directorynbsp;Directory 到 IdentityIdentity Managementnbsp;Management.在 ActiveActive Directorynbsp 中创建的新帐户;Directory 会自动同步到 IdM。但是,在 IdM 中创建的用户帐户还必须在 ActiveActive Directorynbsp;Directory 中创建,然后才能同步。在这种情况下,同步进程会尝试找到与 IdM 中
uid
属性相同的匹配帐户,而不是在 ActiveActive Directorynbsp;Directory 中找到sAMAccountName
属性。如果找到匹配项,IdMntUserDomainId
属性被设置为 ActiveActive Directorynbsp;DirectoryobjectGUID
值。这些属性全局唯一且不可变,并且条目保持同步,即使它们被移动或重命名。 - 默认情况下,帐户锁定信息同步,因此一个域中禁用的用户帐户在另一个域中被禁用。
- 密码同步更改将立即生效。如果在一个对等上添加或更改了用户密码,该更改将立即传播到其他同级服务器。Password Synchronization 客户端会同步新密码或密码更新。现有密码以 IdM 和 ActiveActive Directorynbsp 的散列形式存储;Directory,当安装 Password Synchronization 客户端时,无法解密或同步现有密码。必须更改用户密码,以启动对等服务器之间的同步。
- 虽然只能有一个协议,但 PassSync 服务必须安装在每个 ActiveActive Directorynbsp;Directory 服务器上。
6.3. 关于同步属性
用户架构,在 IdentityIdentity Managementnbsp 中是一样的 Same;管理和 Windows 服务器
- cn[2]
- physicalDeliveryOfficeName
- description
- postOfficeBox
- destinationIndicator
- postalAddress
- facsimileTelephoneNumber
- postalCode
- givenname
- registeredAddress
- homePhone
- sn
- homePostalAddress
- st
- Initials
- 街道
- l
- telephoneNumber
- mail
- teletexTerminalIdentifier
- Mobile
- telexNumber
- o
- title
- ou
- userCertificate
- 寻呼机
- x121Address
IdentityIdentity Managementnbsp;Management | Active Directory |
---|---|
cn[a] | name |
nsAccountLock | userAccountControl |
ntUserDomainId | sAMAccountName |
ntUserHomeDir | homeDirectory |
ntUserScriptPath | scriptPath |
ntUserLastLogon | lastLogon |
ntUserLastLogoff | lastLogoff |
ntUserAcctExpires | accountExpires |
ntUserCodePage | codePage |
ntUserLogonHours | logonHours |
ntUserMaxStorage | maxStorage |
ntUserProfile | profilePath |
ntUserParms | userParameters |
ntUserWorkstations | userWorkstations |
[a]
当从 IdentityIdentity Managementnbsp;Management to ActiveActive Directorynbsp;Directory)同步时, cn 会直接映射到cn 。cn 从 ActiveActive Directorynbsp 同步;Directory cn 是从 ActiveActive Directorynbsp 中的 name 属性映射;Directory 到 IdentityIdentity Managementnbsp;Management 中的 cn 属性。
|
6.3.1. IdentityIdentity Managementnbsp;Management 和 Active Directory 之间的用户架构差异
6.3.1.1. cn Attributes 的值
cn
属性可以是多值,而 Active Directory 此属性中必须只有一个值。当 IdentityIdentity Managementnbsp;Management cn
属性被同步时,只有一个值发送到 Active Directory peer。
cn
值添加到 Active Directory 条目,且该值不是 IdentityIdentity Managementnbsp 中的 cn
的值之一;Management,然后所有 IdentityIdentity Managementnbsp;Management cn
值都会被单个 Active Directory 值覆盖。
cn
属性作为其命名属性,其中 IdentityIdentity Managementnbsp;Management 使用 uid
。这意味着,如果在 IdentityIdentity Managementnbsp 中编辑 cn
属性,则可能完全命名条目(并意外)。
6.3.1.2. 街道和街道地址的值
streetAddress
用于用户的 postal 地址;这是 389389 Directory Servernbsp;Directory389 Directory Servernbsp;Server 使用 street
属性的方法。Active Directory 和 IdentityIdentity Managementnbsp 中有两个重要区别:Management 使用 streetAddress
和 street
属性:
- 在 389389 Directory Servernbsp;Directory389 Directory Servernbsp;Server,
streetAddress
是street
的别名。Active Directory 也具有street
属性,但它是一个单独的属性,可以保存独立值,而不是streetAddress
的别名。 - Active Directory 将
streetAddress
和street
定义为单值属性,而 389389 Directory Servernbsp;Directory389 Directory Servernbsp;Server 将street
定义为多值属性,如 RFC 4519 中指定的。
streetAddress
和 street
属性的不同方法,在 Active Directory 和 IdentityIdentity Managementnbsp 中设置地址属性时有两种:
- 同步过程将 ActiveActive Directorynbsp 中的
streetAddress
映射到 IdentityIdentity Managementnbsp;Management 中的street
条目。为避免冲突,不应在 Active Directory 中使用street
属性。 - 只将一个 IdentityIdentity Managementnbsp;Management
street
属性值同步到 Active Directory。如果streetAddress
属性在 Active Directory 中被改变,且新值尚未存在于 IdentityIdentity Managementnbsp;Management 中,则 IdentityIdentity Managementnbsp;Management 中的所有street
属性值替换为新的、单一 Active Directory 值。
6.3.1.3. 初始属性限制
initials
属性,Active Directory 会对六个字符的最大长度限制,但 389389 Directory Servernbsp;Directory389 Directory Servernbsp;Server 没有长度限制。如果在 IdentityIdentity Managementnbsp;Management 中添加大于 6 个字符的 initials
属性,则该值会在与 Active Directory 条目同步时进行修剪。
6.3.1.4. 要求姓氏(sn)属性
6.3.2. Activeactive Directorynbsp;Directory Entries 和 POSIX Attributes
uidNumber
和 gidNumber
属性的值时,WinSync 不会将这些值同步到 Identity Management。相反,它会在 Identity Management 中创建新的 UID 和 GID 值。
uidNumber
和 gidNumber
的值在 Active Directory 和 Identity Management 中有所不同。
cn
的处理方式与其他同步属性不同。当从 IdentityIdentity Managementnbsp 同步;Management 到 ActiveActive Directorynbsp;Directory 时,它会被直接映射到cn
。cn
从 ActiveActive Directorynbsp 同步;Directory 到 IdentityIdentity Managementnbsp;Management 时,cn
从 Windows 上的 name
属性映射到 IdentityIdentity Managementnbsp;Management 中的 cn
属性。
6.4. 设置 ActiveActive Directorynbsp;Directory 用于同步
6.4.1. 创建 ActiveActive Directorynbsp;Directory 用户进行同步
- 为同步用户帐户复制目录更改授予同步 Active Directory 子树的权限。同步用户需要副本权限才能执行同步操作。
- 添加同步用户,作为帐户操作员 和企业只读域控制器组的成员。用户不需要从属于 Domain Admins 组。
6.4.2. 设置 ActiveActive Directorynbsp;Directory 证书颁发机构
6.5. 管理同步协议
6.5.1. 创建同步协议
- 将根证书颁发机构(CA)证书复制到 IdM 服务器中:
- 如果您的 ActiveActive Directorynbsp;Directory CA 证书是自签名的:
- 在 Windows 服务器上导出 ActiveActive Directorynbsp;Directory CA 证书。
- Super 键+R 组合键打开运行对话框。
- 输入 certsrv.msc
- 右键单击本地证书颁发机构的名称,然后选择属性。
- 在 General 选项卡上,选择要在 CA 证书字段中导出的证书 ,然后单击查看证书。
- 在 Details 选项卡中,单击 。
- 单击 Base-64 编码 X.509(.CER)。,然后选择
- 为导出的文件指定合适的目录和文件名。单击以导出证书,然后单击 。
- 将导出的证书复制到 IdM 服务器机器。
- 如果您的 ActiveActive Directorynbsp;Directory CA 证书由外部 CA 签名:
- 要找出 CA root 证书是什么证书,显示证书链:
# openssl s_client -connect adserver.example.com:636 CONNECTED(00000003) depth=1 C = US, O = Demo Company, OU = IT, CN = Demo CA-28 verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain 0 s:/C=US/O=Demo Company/OU=IT/CN=adserver.example.com i:/C=US/O=Demo Company/OU=IT/CN=Demo CA-1 1 s:/C=US/O=Demo Company/OU=IT/CN=Demo CA-1 i:/C=US/O=Demo Company/OU=IT/CN=Demo Root CA 2
上例显示 ActiveActive Directorynbsp;Directory 服务器的 CA 证书由CN=Demo CA-1
签名,它由CN=Demo Root CA 2
签名。这意味着CN=Demo Root CA 2
是根 CA。 - 将 CA 证书复制到 IdM 服务器。
- 删除 IdM 服务器中的任何现有 Kerberos 凭据。
$ kdestroy
- 使用 ipa-replica-manage 命令创建 Windows 同步协议。这需要
--winsync
选项。如果密码与用户帐户同步,则也使用--passsync
选项,并设置用于密码同步的密码。--binddn
和--bindpw
选项在 ActiveActive Directorynbsp 上为系统帐户提供用户名和密码;Directory 服务器将用于连接到 ActiveActive Directorynbsp;Directory 服务器。$ ipa-replica-manage connect --winsync \ --binddn cn=administrator,cn=users,dc=example,dc=com \ --bindpw Windows-secret \ --passsync secretpwd \ --cacert /etc/openldap/cacerts/windows.cer \ adserver.example.com -v
--WinSync
:将此识别为 Windows 同步协议。--bind
DN : IdM 使用此 ActiveActive Directorynbsp 的 DN;Directory 帐户绑定到远程目录和同步属性。--bindpw
:同步帐户的密码。--cacert
:完整路径和文件名:- Activeactive Directorynbsp;Directory CA 证书(如果 CA 已被自签名)。
- 外部 CA 证书,如果 ActiveActive Directorynbsp;Directory CA 由一个外部 CA 签名。
--win-subtree
:包含要同步用户的 Windows 目录子树的 DN。默认值为cn=Users,$SUFFIX
。AD_server_name
: ActiveActive Directorynbsp 的全限定域名(FQDN);Directory 域控制器。
- 出现提示时,输入 Directory Manager 密码。
- 可选。配置密码同步,如 第 6.6.2 节 “设置密码同步” 中所示。如果没有 Password Synchronization 客户端,用户属性会在对等服务器之间同步,但密码则不会。注意密码同步客户端捕获密码更改,然后在 ActiveActive Directorynbsp;Directory 和 IdM 之间同步它们。这意味着它将同步新密码或密码更新。现有密码以 IdM 和 ActiveActive Directorynbsp 的散列形式存储;Directory,当安装 Password Synchronization 客户端时,无法解密或同步现有密码。必须更改用户密码,以启动对等服务器之间的同步。
6.5.2. 更改同步用户帐户属性的行为
ipaWinSyncAcctDisable
属性来禁用它。(更改意味着,如果在 ActiveActive Directorynbsp 中禁用了帐户,它仍然在 IdM 中活跃,反之亦然。)
[jsmith@ipaserver ~]$ ldapmodify -x -D "cn=directory manager" -w password dn: cn=ipa-winsync,cn=plugins,cn=config changetype: modify replace: ipaWinSyncAcctDisable ipaWinSyncAcctDisable: none modifying entry "cn=ipa-winsync,cn=plugins,cn=config"
常规用户帐户参数
ipaWinSyncNewEntryFilter
:设置搜索过滤器以查找包含要添加到新用户条目的对象类列表的条目。默认值为: (cn=ipaConfig)ipaWinSyncNewUserOCAttr
:在配置条目中设置 属性,该条目实际上包含要添加到新用户条目的对象类列表。默认值: ipauserobjectclassesipaWinSyncHomeDirAttr
:识别条目中的哪个属性包含 POSIX 主目录的默认位置。默认值: ipaHomesRootDiripaWinSyncUserAttr
: 当它们从 ActiveActive Directorynbsp;Directory 域同步时,设置一个带有特定值的额外属性来添加到 ActiveActive Directorynbsp;Directory 域时。如果 属性为 multi-valued,则它可以设置多次,同步进程会将所有值添加到条目。示例: ipaWinSyncUserAttr: attributeName attributeValue注意仅当条目尚未存在该属性时,这才会设置 属性值。如果存在 属性,则条目的值会在 ActiveActive Directorynbsp;Directory 条目被同步时使用。ipaWinSyncForceSync
:设置匹配现有 AD 用户的现有 IdM 用户是否强制同步。当设置为true
时,此类 IdM 用户会自动编辑,以便同步它们。可能的值:true | false
如果一个 IdMnbsp;IdM 用户帐户有一个uid
参数,它与现有 ActiveActive Directorynbsp;Directory 用户相同,则该帐户 默认不会 同步。sAMAccountName
此属性告知同步服务自动将ntUser
和ntUserDomainId
添加到 IdM 用户条目中,这允许它们同步。
用户帐户锁定参数
ipaWinSyncAcctDisable
:设置同步帐户锁定属性的方式。可以控制哪些帐户锁定设置生效。例如,to_ad 表示当在 IdM 中设置帐户锁定属性时,其值会同步到 ActiveActive Directorynbsp;Directory 并覆盖本地 ActiveActive Directorynbsp;Directory 值。默认情况下,帐户锁定属性从两个域同步。可能的值:(默认
)、to_ad
、to_ds
、none
ipaWinSyncInactivatedFilter
:设置搜索过滤器以查找用于存放已激活(禁用)用户的组的 DN。在大多数部署中不需要更改此设置。默认值为: (&(cn=inactivated)(objectclass=groupOfNames))
组参数
ipaWinSyncDefaultGroupAttr
:在新用户帐户中设置 属性,以引用该用户的默认组。然后,条目中的组名将用于查找用户帐户的gidNumber
。默认值: ipaDefaultPrimaryGroupipaWinSyncDefaultGroupFilter
:设置新用户帐户中的 属性,以引用该用户的默认组。然后,条目中的组名将用于查找用户帐户的gidNumber
。默认值: ipaDefaultPrimaryGroup
域参数
ipaWinSyncRealmAttr
:设置 realm 条目中包含 realm 名称的属性。默认值:cn
ipaWinSyncRealmFilter
:设置搜索过滤器以查找包含 IdM 域名称的条目。默认值为:(objectclass=krbRealmContainer)
6.5.3. 更改 Synchronized Windows Subtree
--win-subtree
选项创建同步协议时,ActiveActive Directorynbsp;Directory 子树的值可设为非默认值。在协议被创建后,可以使用 ldapmodify 命令编辑同步协议条目中的 nsds7WindowsReplicaSubtree
值来更改 ActiveActive Directorynbsp;Directory 子树。
- 使用 ldapsearch 获取同步协议的名称。此搜索只会返回
dn
和nsds7WindowsReplicaSubtree
属性的值,而不是整个条目。[jsmith@ipaserver ~]$ ldapsearch -xLLL -D "cn=directory manager" -w password -p 389 -h ipaserver.example.com -b cn=config objectclass=nsdswindowsreplicationagreement dn nsds7WindowsReplicaSubtree dn: cn=meToWindowsBox.example.com,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config nsds7WindowsReplicaSubtree: cn=users,dc=example,dc=com ... 8< ...
- 修改同步协议
[jsmith@ipaserver ~]$ ldapmodify -x -D "cn=directory manager" -W -p 389 -h ipaserver.example.com <<EOF dn: cn=meToWindowsBox.example.com,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config changetype: modify replace: nsds7WindowsReplicaSubtree nsds7WindowsReplicaSubtree: cn=alternateusers,dc=example,dc=com EOF modifying entry "cn=meToWindowsBox.example.com,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config"
6.5.4. 配置 Uni-ward Synchronization
oneWaySync
参数来完成。可能的值有 fromWindows
(用于 ActiveActive Directorynbsp;Directory 到 IdentityIdentity Managementnbsp;Management 同步)和 toWindows
(用于 IdentityIdentity Managementnbsp;Management to ActiveActive Directorynbsp;Directory 同步)。
[jsmith@ipaserver ~]$ ldapmodify -x -D "cn=directory manager" -w password -p 389 -h ipaserver.example.com dn: cn=meToWindowsBox.example.com,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config changetype: modify add: oneWaySync oneWaySync: fromWindows
6.5.5. 删除同步协议
- 删除同步协议。
# ipa-replica-manage disconnect adserver.ad.example.com
- 列出 IdM 目录证书数据库中的证书:
# certutil -L -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI IDM.EXAMPLE.COM IPA CA CT,C,C CN=adserver,DC=ad,DC=example,DC=com C,, Server-Cert u,u,u
- 从 IdM 服务器数据库中删除 ActiveActive Directorynbsp;Directory CA 证书:
# certutil -D -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -n "CN=adserver,DC=ad,DC=example,DC=com"
6.5.6. WinSync Agreement 失败
创建同步协议会失败,因为它无法连接到 ActiveActive Directorynbsp;Directory 服务器。
一个最常见的同步协议失败是 IdM 服务器无法连接到 ActiveActive Directorynbsp;Directory 服务器:
"Update failed! Status: [81 - LDAP error: Can't contact LDAP server]
数据库(/etc/dirsrv/slapd-DOMAIN/
目录中)中创建名为 Imported CA 的重复证书。这可使用 certutil 检查:
$ certutil -L -d /etc/dirsrv/slapd-DOMAIN/ Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI CA certificate CTu,u,Cu Imported CA CT,,C Server-Cert u,u,u Imported CA CT,,C
# certutil -d /etc/dirsrv/slapd-DOMAIN-NAME -D -n "Imported CA"
存在错误,指出密码未同步,因为它表示该条目存在
对于用户数据库中的一些条目,可能会有一条信息错误消息,指出没有重置密码,因为该条目已存在:
"Windows PassSync entry exists, not resetting password"
6.6. 管理密码同步
6.6.1. 设置 Windows Server for Password Synchronization
- Activeactive Directorynbsp;Directory 必须在 SSL 中运行。注意在企业根模式中安装 Microsoft 证书系统.Activeactive Directorynbsp;Directory 将自动注册来检索其 SSL 服务器证书。
- 密码同步服务必须安装到 每个 ActiveActive Directorynbsp;Directory 域控制器。要从 Windows 同步密码,PassSync 服务需要访问未加密的密码才能通过安全连接与 IdM 同步。由于用户可以在每个域控制器上更改密码,因此需要在每个域控制器上安装 PassSync 服务。
- 密码策略必须在 IdM 和 ActiveActive Directorynbsp;Directory 端设置相似。当同步目的地收到更新的密码时,它仅被验证为与源上的策略匹配。同步目的地上未重新验证它。
> dsquery * -scope base -attr pwdProperties pwdProperties 1
pwdProperties
的值设为 1
,则会为该域启用密码复杂性策略。
- 从命令行运行
gpmc.msc
。 - 选择。
- 右键单击条目,再选择 。
- Group Policy Management Editor 会自动打开。
- 启用密码必须满足复杂性要求选项并保存。
6.6.2. 设置密码同步
- 将
RedHat-PassSync-*.msi
文件下载到 Active Directory 域控制器:- 登录客户门户网站。
- 单击页面顶部的 Downloads。
- 选择 Red Hat Enterprise Linuxnbsp;Hat Enterprise Red Hat Enterprise Linuxnbsp;Linux from the product list.
- 选择 Red Hat Enterprise Linuxnbsp 的最新版本;Hat Enterprise Linuxnbsp;Linux 6 或 Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux 7 and architecture.
- 在 ActiveActive Directorynbsp;Directory 域控制器架构中下载 WinSync Installer,方法是点 按钮。
双击MSI
文件进行安装。- 此时将显示 Password Synchronrization Setup 窗口。按下一步开始安装。
- 填写信息以建立与 IdM 服务器的连接。
- IdM 服务器连接信息,包括主机名和安全端口号。
- ActiveActive Directorynbsp;Directory 用来连接到 IdM 机器的系统用户的用户名。当 IdM 服务器上配置同步时,此帐户会自动配置。默认帐户为uid=passsync,cn=sysaccounts,cn=etc,dc=example,dc=com.
- 同步协议创建时在
--passsync
选项中设置的密码。 - IdM 服务器上的 People 子树的搜索基础。ActiveActive Directorynbsp;Directory 服务器连接到与 ldapsearch 或 replication 操作类似的 IdM 服务器,因此它必须知道在 IdM 子树中查找用户帐户的位置。用户子树为 cn=users,cn=accounts,dc=example,dc=com。
- 此时不使用证书令牌,因此该字段应当留空。
- 将 IdM 服务器的 CA 证书导入到 PassSync 证书存储中。
- 从
http://ipa.example.com/ipa/config/ca.crt
下载 IdM 服务器的 CA 证书。 - 将 IdM CA 证书复制到 ActiveActive Directorynbsp;Directory 服务器。
- 在 Password Synchronization 数据库中安装 IdM CA 证书。例如:
cd "C:\Program Files\Red Hat Directory Password Synchronization" certutil.exe -d . -A -n "IPASERVER.EXAMPLE.COM IPA CA" -t CT,, -a -i ipaca.crt
- 重新启动 Windows 计算机以启动密码同步。注意必须重新引导 Windows 机器。
如果不重新启动,PasswordHook.dll
则未启用,密码同步将无法正常工作。 - 如果应当同步现有帐户的密码,请重置用户密码。注意密码同步客户端捕获密码更改,然后在 ActiveActive Directorynbsp;Directory 和 IdM 之间同步它们。这意味着它将同步新密码或密码更新。现有密码以 IdM 和 ActiveActive Directorynbsp 的散列形式存储;Directory,当安装 Password Synchronization 客户端时,无法解密或同步现有密码。必须更改用户密码,以启动对等服务器之间的同步。
创建证书和密钥数据库的工具与.msi
一起安装。
admin
组的成员的密码。这种行为旨在防止密码同步代理或低级用户管理员更改顶级管理员的密码。
第 7 章 将现有环境从同步迁移到信任
7.1. 使用 ipa-winsync-migrate
自动从 Synchronization 迁移到 Trust
ipa-winsync-migrate
实用程序仅在运行 Red Hat Enterprise Linux 7.2 或更高版本的系统上可用。
7.1.1. 如何使用 ipa-winsync-migrate Works 进行迁移
ipa-winsync-migrate
实用程序将所有同步的用户从 AD 林迁移,同时保留 Winsync 环境中的现有配置,并将其传送到 AD 信任中。对于 Winsync 协议创建的每个 AD 用户,ipa-winsync-migrate
在 Default Trust View 中创建了一个 ID 覆盖(请参阅 第 8.1 节 “Active Directory 默认信任视图”)。
- AD 用户的 ID 覆盖具有以下从 Winsync 中的原始条目复制的属性:
- 登录名
(uid
) - UID
号(uid 号
) - GID
号(gid number
) 主目录(主目录
)- GECOS
条目(gecos
)
- AD 信任中的用户帐户将其原始配置保留在 IdM 中,其中包括:
- POSIX 属性
- 用户组
- 基于角色的访问控制规则
- 基于主机的访问控制规则
- SELinux 成员资格
sudo
规则
- 新 AD 用户添加为外部 IdM 组的成员。
- 删除原始 Winsync 复制协议、原始同步用户帐户和用户帐户的所有本地副本。
7.1.2. 如何使用 ipa-winsync-migrate 进行迁移
- 使用
ipa-backup
实用程序备份您的 IdM 设置。请参阅 Linux 域 身份、身份验证和策略指南中的备份和恢复 身份管理。原因:迁移会影响 IdM 配置和许多用户帐户的重要部分。如有必要,创建备份可让您恢复原始设置。
- 运行
ipa-winsync-migrate
并指定 AD 域和 AD 域控制器的主机名:# ipa-winsync-migrate --realm example.com --server ad.example.com
如果在ipa-winsync-migrate
创建的覆盖中发生冲突,则会显示有关冲突的信息,但迁移继续进行。 - 从 AD 服务器卸载 Password Sync 服务。这会从 AD 域控制器移除同步协议。
7.2. 使用 ID 视图手动从同步迁移到 Trust
- 为原始同步的用户和组条目创建备份。
- 对于每个同步的用户和组,通过执行以下操作之一保留 IdM 生成的 UID 和 GID:
- 单独创建应用到特定主机的 ID 视图,并将用户 ID 覆盖添加到视图中。
- 在 Default Trust View 中创建用户 ID 覆盖。
详情请参阅在 不同主机上为用户帐户定义不同的属性值。注意只有 IdM 用户可以管理 ID 视图。AD 用户无法. - 删除原始同步的用户和组条目。
第 8 章 在 Active Directory 环境中使用 ID 视图
- 覆盖 AD 用户属性,如 POSIX 属性或 SSH 登录详情
- 从同步迁移到基于信任的集成
- 执行每个主机组覆盖 IdM 用户属性
- 详情请查看 第 8.4 节 “将 NIS 域迁移到 IdM”。
8.1. Active Directory 默认信任视图
8.1.1. 默认信任视图
ipa-adtrust-install 建立信任且无法删除时
,它会自动创建。
AD 中的值 | 默认信任视图 | 结果 | ||
---|---|---|---|---|
login | ad_user | ad_user | → | ad_user |
UID | 111 | 222 | → | 222 |
GID | 111 | (无值) | → | 111 |
8.1.2. 使用其他 ID 视图覆盖默认信任视图
- 如果在特定于主机的 ID 视图中定义了属性,IdM 将应用此视图中的值。
- 如果在特定于主机的 ID 视图中未定义属性,IdM 将应用 Default Trust View 中的值。
AD 中的值 | 默认信任视图 | 主机特定视图 | 结果 | ||
---|---|---|---|---|---|
login | ad_user | ad_user | (无值) | → | ad_user |
UID | 111 | 222 | 333 | → | 333 |
GID | 111 | (无值) | 333 | → | 333 |
8.1.3. 基于客户端版本的 ID 覆盖
- 旧客户端:RHEL 6.3 及更早版本(SSSD 1.8 及更早版本)
- 客户端可以请求应用特定的 ID 视图。要在传统客户端上使用特定于主机的 ID 视图,请将客户端上的基本 DN
更改为:cn=id_view_name,cn=views,cn=compat,dc=example,dc=com.
- RHEL 6.4 到 7.0(SSSD 1.9 到 1.11)
- 不支持客户端上的特定于主机的 ID 视图。
- RHEL 7.1 及更高版本(SSSD 1.12 及更高版本)
- 完全支持.
8.2. 修复 ID 冲突
8.3. 使用 ID 视图来定义 AD 用户属性
- 创建新的 ID 视图。
- 在 ID 视图中添加用户 ID 覆盖,并指定 require 属性值。
- 将 ID 视图应用到特定的主机。
8.4. 将 NIS 域迁移到 IdM
- 在 IdM 域中创建用户和组。详情请查看
- 使用现有主机的 ID 视图覆盖用户创建过程中生成的 IdM ID:
- 创建单独的 ID 视图.
- 将用户和组的 ID 覆盖添加到 ID 视图。
- 将 ID 视图分配到特定的主机。
详情请参阅在 不同主机上为用户帐户定义不同的属性值。 - 停用 NIS 域.
8.5. 使用 Short Names 进行解析和验证用户和组的配置选项
user_name@domain
或 domain\user_name
完全限定名称格式,以在 Active Directory(AD)环境中解析和验证用户和组。您可以配置它:
- 在信任 AD 的 Identity Management(IdM)中
- 在 Red Hat Enterprise Linux 中使用 SSSD 加入 AD
8.5.1. 域解析如何工作
您可以使用域解析顺序选项指定搜索域列表的顺序
,以返回给定用户名的匹配项。您可以设置选项:
- 在客户端上.请查看 第 8.5.3 节 “在 IdM 客户端中配置域解析顺序”
从特定客户端的角度来看,可以在以上三个位置中的多个位置中设置域解析顺序选项
。客户端检查这三个位置的顺序是:
- 本地
sssd.conf
配置 - id 视图配置
- 全局 IdM 配置
- 用户名存在于多个域中
- SSSD 配置包括
default_domain_suffix
选项,您想要向未使用该选项指定的域发出请求
8.5.2. 在身份管理服务器上配置域解析顺序
8.5.2.1. 全局设置域解析顺序
$ ipa config-mod --domain-resolution-order='idm.example.com:ad.example.com:subdomain1.ad.example.com:subdomain2.ad.example.com' Maximum username length: 32 Home directory base: /home ... Domain Resolution Order: idm.example.com:ad.example.com:subdomain1.ad.example.com:subdomain2.ad.example.com ...通过以这种方式设置域解析顺序,来自 IdM 域和可信 AD 林的用户只能使用短名称登录。
8.5.2.2. 为 ID 视图设置域解析顺序
使用域解析顺序选项集创建一个
ID 视图:$ ipa idview-add example_view --desc "ID view for custom shortname resolution on server.idm.example.com" --domain-resolution-order subdomain2.ad.example.com:subdomain1.ad.example.com --------------------------------- Added ID View "example_view" --------------------------------- ID View Name: example_view Description: ID view for custom shortname resolution on server.idm.example.com Domain Resolution Order: subdomain2.ad.example.com:subdomain1.ad.example.com
- 在客户端上应用视图。例如:
$ ipa idview-apply example_view --hosts server.idm.example.com ----------------------------------- Applied ID View "example_view" ----------------------------------- hosts: server.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 1 ---------------------------------------------
8.5.3. 在 IdM 客户端中配置域解析顺序
/etc/sssd/sssd.conf
文件的 [sssd] 部分中设置 domain_resolution_order
选项,例如:
domain_resolution_order = subdomain1.ad.example.com, subdomain2.ad.example.com
domain_resolution_order
选项的详情请参考 sssd.conf(5)手册页。
附录 A. 修订历史记录
修订历史 | |||
---|---|---|---|
修订 7.0-51 | Thu Mar 4 2021 | ||
| |||
修订 7.0-50 | Wed May 27 2020 | ||
| |||
修订 7.0-49 | Tue Aug 06 2019 | ||
| |||
修订 7.0-48 | Wed Jun 05 2019 | ||
| |||
修订 7.0-47 | Tue Apr 08 2019 | ||
| |||
修订 7.0-46 | Mon Oct 29 2018 | ||
| |||
修订 7.0-45 | Mon Jun 25 2018 | ||
| |||
修订 7.0-44 | Thu Apr 5 2018 | ||
| |||
修订 7.0-43 | Wed Feb 28 2018 | ||
| |||
修订 7.0-42 | Mon Feb 12 2018 | ||
| |||
修订 7.0-41 | Mon Jan 29 2018 | ||
| |||
修订 7.0-40 | Fri Dec 15 2017 | ||
| |||
修订 7.0-39 | Mon Dec 6 2017 | ||
| |||
修订 7.0-38 | Mon Dec 4 2017 | ||
| |||
修订 7.0-37 | Mon Nov 20 2017 | ||
| |||
修订 7.0-36 | Mon Nov 6 2017 | ||
| |||
修订 7.0-35 | Mon Oct 23 2017 | ||
| |||
修订 7.0-34 | Mon Oct 9 2017 | ||
| |||
修订 7.0-33 | Tue Sep 26 2017 | ||
| |||
修订 7.0-32 | Tue Jul 18 2017 | ||
| |||
修订 7.0-31 | Tue May 23 2017 | ||
| |||
修订 7.0-30 | Mon Apr 24 2017 | ||
| |||
修订 7.0-29 | Mon Apr 10 2017 | ||
| |||
修订 7.0-28 | Mon Mar 27 2017 | ||
| |||
修订 7.0-27 | Mon Feb 27 2017 | ||
| |||
修订 7.0-26 | Wed Nov 23 2016 | ||
| |||
修订 7.0-25 | Tue Oct 18 2016 | ||
| |||
修订 7.0-24 | Thu Jul 28 2016 | ||
| |||
修订 7.0-23 | Thu Jun 09 2016 | ||
| |||
修订 7.0-22 | Tue Feb 09 2016 | ||
| |||
修订 7.0-21 | Fri Nov 13 2015 | ||
| |||
修订 7.0-20 | Thu Nov 12 2015 | ||
| |||
修订 7.0-19 | Fri Sep 18 2015 | ||
| |||
修订 7.0-18 | Thu Sep 10 2015 | ||
| |||
修订 7.0-17 | Mon Jul 27 2015 | ||
| |||
修订 7.0-16 | Thu Apr 02 2015 | ||
| |||
修订 7.0-15 | Fri Mar 13 2015 | ||
| |||
修订 7.0-13 | Wed Feb 25 2015 | ||
| |||
修订 7.0-11 | Fri Dec 05 2014 | ||
| |||
修订 7.0-7 | Mon Sep 15 2014 | ||
| |||
修订 7.0-5 | June 27, 2014 | ||
| |||
修订 7.0-4 | June 13, 2014 | ||
| |||
修订 7.0-3 | June 11, 2014 | ||
|