4.5. 在 RHEL 中应用组策略对象访问控制
组策略对象( GPO)是存储在 Microsoft Active Directory(AD)中的访问控制设置集合,可应用于 AD 环境中的计算机和用户。通过在 AD 中指定 GPO,管理员可以定义 Windows 客户端和 Red Hat Enterprise Linux(RHEL)主机加入 AD 的登录策略。
以下小节介绍了如何在您的环境中管理 GPO:
4.5.1. SSSD 如何解释 GPO 访问控制规则
默认情况下,SSSD 从 Active Directory(AD)域控制器检索组策略对象(GPO),并对其进行评估,以确定是否允许用户登录加入 AD 的特定 RHEL 主机。
SSSD 将 AD Windows Logon Rights 映射到可插拔验证模块(PAM)服务名称,以在 GNU/Linux 环境中强制实现这些权限。
作为 AD Administrator,您可以通过 在安全过滤器 中列出 GPO 规则的范围,将 GPO 规则的范围限制为特定用户、组或主机。
主机过滤的限制
旧版本的 SSSD 不评估 AD GPO 安全过滤器中的主机。
- RHEL 8.3.0 及更新版本:SSSD 支持安全过滤器中的用户、组和主机。
-
早于 8.3.0 的 RHEL 版本:SSSD 会忽略主机条目,并且只支持安全过滤器中的用户和组。
为确保 SSSD 应用基于 GPO 的访问控制到特定主机,请在 AD 域中创建新的机构单元(OU),将系统移到新 OU,然后将 GPO 链接到这个 OU。
按组过滤的限制
SSSD 目前不支持 Active Directory 的内置组,如具有安全标识符(SID) S-1-5-32-544
的管理员
。红帽建议您在 AD GPOs 中针对 RHEL 主机使用 AD 内置组。
其它资源
- 有关 Windows GPO 选项及其对应的 SSSD 选项 列表,请参阅 SSSD 支持的 GPO 设置列表。
4.5.2. SSSD 支持的 GPO 设置列表
下表显示了与 Windows 上的 Group Policy Management Editor 中指定的 Active Directory GPO 选项对应的 SSSD 选项。
表 4.1. SSSD 检索的 GPO 访问控制选项
GPO 选项 | 对应的 sssd.conf 选项 |
---|---|
允许本地登录 |
|
允许通过 Remote Desktop Services 登录 |
|
从网络访问此计算机 |
|
允许以批处理作业身份登录 |
|
允许作为服务登录 |
|
其它资源
-
有关这些
sssd.conf
设置的更多信息,如映射到 GPO 选项的可插拔验证模块(PAM)服务,请参阅sssd-ad(5)
手册页条目。
4.5.3. 控制 GPO 强制的 SSSD 选项列表
您可以设置以下 SSSD 选项来限制 GPO 规则的范围。
ad_gpo_access_control
选项
您可以在 /etc/sssd/sssd.conf
文件中设置 ad_gpo_access_control
选项,以选择基于 GPO 的访问控制在三种不同模式中运行。
表 4.2. ad_gpo_access_control
值表
ad_gpo_access_control 的值 | 行为 |
---|---|
|
基于 GPO 的访问控制规则会被评估,并强制执行。 |
|
基于 GPO 的访问控制规则会被评估,但 不会 强制实施;每次被拒绝的访问都会记录 |
| 基于 GPO 的访问控制规则不评估,也不强制执行。 |
ad_gpo_implicit_deny
选项
默认情况下,ad_gpo_implicit_deny
选项设置为 False
。在此默认状态下,如果找不到适用的 GPO,则允许用户访问。如果将这个选项设置为 True
,则必须明确允许用户使用 GPO 规则进行访问。
您可以使用此功能来强化安全性,但请小心不要意外拒绝访问。红帽建议在 ad_gpo_access_control
设置为 permissive
时测试此功能。
以下两个表演示了根据 AD 服务器端定义的允许和拒绝登录权限以及 ad_gpo_implicit_deny
的值,允许或拒绝用户访问。
表 4.3. 将 ad_gpo_implicit_deny
设置为 False
的登录行为 (默认)
允许规则 | 拒绝规则 | 结果 |
---|---|---|
缺少 | 缺少 | 允许所有用户 |
缺少 | 存在 | 仅允许没有拒绝规则的用户 |
存在 | 缺少 | 只允许有允许规则的用户 |
存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
表 4.4. ad_gpo_implicit_deny
设置为 True
的登录行为
允许规则 | 拒绝规则 | 结果 |
---|---|---|
缺少 | 缺少 | 没有用户被允许 |
缺少 | 存在 | 没有用户被允许 |
存在 | 缺少 | 只允许有允许规则的用户 |
存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
其它资源
- 有关在 SSSD 中更改 GPO 强制模式的步骤,请参阅 更改 GPO 访问控制模式。
-
有关每个不同 GPO 操作模式的详情,请查看
sssd-ad(5)
手册页中的ad_gpo_access_control
条目。
4.5.4. 更改 GPO 访问控制模式
此流程改变了在加入 Active Directory(AD)环境的 RHEL 主机上评估并实施基于 GPO 的访问控制规则的方式。
在本例中,您将为测试目的将 GPO 操作模式从 enforcing
(默认)更改为 permissive
。
如果您看到以下错误,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_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.
如果这是不需要的行为,您可以临时将 ad_gpo_access_control
设置为 permissive
,在对 AD 中的正确 GPO 设置进行故障排除时,如这个过程所述。
先决条件
- 已使用 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
文件。 重启 SSSD 服务以加载配置更改。
[root@server ~]# systemctl restart sssd
其它资源
- 有关不同 GPO 访问控制模式的列表,请参阅 SSSD 选项列表来控制 GPO 强制。
4.5.5. 在 AD GUI 中为 RHEL 主机创建和配置 GPO
组策略对象(GPO)是存储在 Microsoft Active Directory(AD)中的访问控制设置的集合,适用于 AD 环境中的计算机和用户。以下流程在 AD 图形用户界面(GUI)中创建 GPO,以控制对直接集成到 AD 域的 RHEL 主机的登录访问。
先决条件
- 已使用 SSSD 将 RHEL 主机加入到 AD 环境中。
- 您有 AD Administrator 特权才能使用 GUI 更改 AD。
流程
在
Active Directory 用户和计算机中
,创建一个机构单元(OU)以与新的 GPO 相关联:- 右键点击域。
-
选择
New
。 -
选择
Organizational Unit
。
- 单击代表 RHEL 主机(加入 Active Directory 时创建的计算机对象)的名称,并将它拖到新 OU 中。通过让 RHEL 主机在自己的 OU 中,GPO 将此主机作为目标。
在
组策略管理编辑器
中,为您创建的 OU 创建一个新的 GPO:-
扩展
林
. -
展开
域.
- 展开您的域。
- 右键点击新的 OU。
-
选择
Create a GPO in this domain
。
-
扩展
-
为新 GPO 指定名称,如
Allow SSH access 或
Allow Console/GUI 访问
并点击OK
。 编辑新的 GPO:
-
在
组策略管理
编辑器中选择 OU。 -
右键单击并选择"
编辑
"。 -
选择
Usertitle Assignment
。 -
选择"
计算机配置"
-
选择
Policies
。 -
选择"
Windows 设置"
-
选择
Security Settings
。 -
选择
Local Policies
。 -
选择
Usertitle Assignment
。
-
在
分配登录权限:
-
允许本地登录以授予本地
控制台/GUI 访问权限。 -
双击
Allow log via Remote Desktop Services
以授予 SSH 访问权限。
-
将您要访问这些策略的用户添加到策略本身:
-
点
Add User or Group
。 - 在空白字段中输入用户名。
-
点
确定
。
-
点
其它资源
- 如需有关组策略对象的更多信息,请参阅 Microsoft 文档中的组策略对象。
4.5.6. 其它资源
- 有关将 RHEL 主机加入到活动目录环境的更多信息,请参阅 使用 SSSD 将 RHEL 系统直接连接到 AD。