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 规则的范围限制到特定用户、组或主机。
主机过滤的限制
旧版本的 SSSD 不评估 AD GPO 安全过滤器中的主机。
- RHEL 8.3.0 和更新版本: SSSD 支持安全过滤器中的用户、组和主机。
-
RHEL 版本早于 8.3.0: SSSD 忽略主机条目,并且仅支持安全过滤器中的用户和组。
为确保 SSSD 将基于 GPO 的访问控制应用到特定主机,请在 AD 域中创建一个新的机构单元(OU),将系统移到新的 OU 中,然后将 GPO 链接到此 OU。
按组过滤的限制
SSSD 目前不支持 Active Directory 的内置组,如带有安全标识符(SID) S-1-5-32-544
的 Administrators
。红帽建议您在 AD GPOs 中针对 RHEL 主机使用 AD 内置组。
其它资源
- 有关 Windows GPO 选项及其对应的 SSSD 选项列表,请参阅 SSSD 支持的 GPO 设置列表。
4.5.2. SSSD 支持的 GPO 设置列表
下表显示了与 Windows 上的 Group Policy Management Editor 中指定的 Active Directory GPO 选项对应的 SSSD 选项。
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 访问控制的三种不同模式。
ad_gpo_access_control 的值 | 行为 |
---|---|
|
基于 GPO 的访问控制规则会被评估并强制执行。 |
|
基于 GPO 的访问控制规则会被评估 但不会强制;每次访问时都会记录一个 |
| 基于 GPO 的访问控制规则不被评估也不被强制执行。 |
ad_gpo_implicit_deny
选项
ad_gpo_implicit_deny
选项默认设置为 False
。在这个默认状态下,如果没有找到适用的 GPOs,则允许用户进行访问。如果将这个选项设置为 True
,则必须使用 GPO 规则明确允许用户访问。
您可以使用此功能来强化安全性,但小心不要意外拒绝访问。红帽建议在 ad_gpo_access_control
设置为 permissive
时测试此功能。
以下两个表演示了,根据在 AD 服务器端定义的允许和拒绝登陆权限和 ad_gpo_implicit_deny
的值,一个用户被允许或拒绝访问。
允许规则 | 拒绝规则 | 结果 |
---|---|---|
缺少 | 缺少 | 允许所有用户 |
缺少 | 存在 | 仅允许没有拒绝规则的用户 |
存在 | 缺少 | 只允许有允许规则的用户 |
存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
允许规则 | 拒绝规则 | 结果 |
---|---|---|
缺少 | 缺少 | 没有用户被允许 |
缺少 | 存在 | 没有用户被允许 |
存在 | 缺少 | 只允许有允许规则的用户 |
存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
其它资源
- 有关在 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 Users 和 Computers
中,创建一个机构单元(OU)来与新的 GPO 关联:- 右键点击域。
-
选择
New
。 -
选择
Organizational Unit
。
- 点代表 RHEL 主机的 Computer Object 名称(加入 Active Directory 时创建),并将其拖到新的 OU 中。通过在自己的 OU 中带有 RHEL 主机,GPO 以这个主机为目标。
在
Group Policy Management Editor
中,为您创建的 OU 创建新的 GPO:-
展开
Forest
。 -
展开
Domains
。 - 展开您的域。
- 右键点击新的 OU。
-
选择
Create a GPO in this domain
。
-
展开
-
为新的 GPO 指定名称,如
Allow SSH access
或Allow Console/GUI access
并点OK
。 编辑新的 GPO:
-
在
Group Policy Management
编辑器中选择 OU。 -
点鼠标右键,选择
Edit
。 -
选择
User Rights Assignment
。 -
选择
Computer Configuration
-
选择
Policies
。 -
选择
Windows Settings
。 -
选择
Security Settings
。 -
选择
Local Policies
。 -
选择
User Rights Assignment
。
-
在
分配登录权限:
-
双击
Allow log on locally
以授予本地控制台/GUI 访问权限。 -
双击
Allow log on remote Desktop Services
以授予 SSH 访问权限。
-
双击
将您要访问这些策略的用户添加到策略本身:
-
点
Add User or Group
。 - 在空白字段中输入用户名。
-
点击
确定
。
-
点
其他资源
- 如需有关组策略对象的更多信息,请参阅 Microsoft 文档中的组策略对象。
4.5.6. 其它资源
- 有关将 RHEL 主机加入活动目录环境的更多信息,请参阅 使用 SSSD 将 RHEL 系统直接连接到 AD。