4.5. 在 RHEL 中应用组策略对象访问控制
组策略对象( GPO)是存储在 Microsoft Active Directory(AD)中的访问控制设置集合,可应用于 AD 环境中的计算机和用户。通过在 AD 中指定 GPO,管理员可以定义 Windows 客户端和 Red Hat Enterprise Linux (RHEL)主机加入到 AD 的登录策略。
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 支持安全过滤器中的用户、组和主机。
-
RHEL 版本早于 8.3.0 :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 选项。
GPO 选项 | 对应的 sssd.conf 选项 |
---|---|
允许本地登录 |
|
允许通过 Remote Desktop Services 登录 |
|
从网络访问此计算机 |
|
允许以批处理作业身份登录 |
|
允许作为服务登录 |
|
其它资源
-
系统中
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
。在此默认状态下,如果找不到适用的 GPO,则允许用户访问。如果将这个选项设置为 True
,则必须明确允许用户使用 GPO 规则进行访问。
您可以使用此功能来强化安全性,但请小心不要意外拒绝访问。红帽建议在 ad_gpo_access_control
设置为 permissive
时测试此功能。
以下两个表演示了根据 AD 服务器端定义的允许和拒绝登录权限以及 ad_gpo_implicit_deny
的值,允许或拒绝用户访问。
允许规则 | 拒绝规则 | 结果 |
---|---|---|
缺少 | 缺少 | 允许所有用户 |
缺少 | 存在 | 仅允许没有拒绝规则的用户 |
存在 | 缺少 | 只允许有允许规则的用户 |
存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
允许规则 | 拒绝规则 | 结果 |
---|---|---|
缺少 | 缺少 | 没有用户被允许 |
缺少 | 存在 | 没有用户被允许 |
存在 | 缺少 | 只允许有允许规则的用户 |
存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
其它资源
- 更改 GPO 访问控制模式
-
系统中
sssd-ad (5)
手册页
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
其它资源
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 用户和 Computers 中,创建一个机构单元(OU)来与新的 GPO 关联:
- 右键点击域。
- 选择 New 。
- 选择 Organizational Unit。
- 点代表 RHEL 主机的 Computer Object 名称(加入 Active Directory 时创建),并将其拖到新的 OU 中。通过让 RHEL 主机在自己的 OU 中,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 Editor 中选择 OU。
- 点鼠标右键,选择 Edit。
- 选择 User Rights Assignment。
- 选择 Computer Configuration。
- 选择 Policies。
- 选择 Windows Settings。
- 选择 Security Settings。
- 选择 Local Policies。
- 选择 User Rights Assignment。
分配登录权限:
- 双击 Allow log on local to grant local console/GUI access。
- 双击 Allow log on remote Desktop Services 以授予 SSH 访问权限。
将您要访问这些策略的用户添加到策略本身:
- 点 Add User or Group。
- 在空白字段中输入用户名。
- 点确定。
其它资源
- Microsoft 文档中的 组策略对象