4.6. 在 RHEL 中应用组策略对象访问控制
组策略对象 (GPO)是存储在 Microsoft Active Directory(AD)中的访问控制设置的集合,适用于 AD 环境中的计算机和用户。通过在 AD 中指定 GPO,管理员可以定义加入到 AD 的 Windows 客户端和 Red Hat Enterprise Linux (RHEL)主机所遵守的登录策略。
4.6.1. SSSD 如何解释 GPO 访问控制规则 复制链接链接已复制到粘贴板!
默认情况下,SSSD 从 Active Directory(AD)域控制器检索组策略对象(GPO),并评估它们来确定是否允许用户登录到加入 AD 的特定 RHEL 主机。
SSSD 将 AD Windows Logon Rights 映射到可插拔验证模块(PAM)服务名称,以在 GNU/Linux 环境中强制实现这些权限。
作为 AD Administrator,您可以通过在 安全过滤器中列出它们,将 GPO 规则的范围限制到特定用户、组或主机。
- 按组过滤的限制
-
SSSD 目前不支持 Active Directory 的内置组,如带有安全标识符(SID)
S-1-5-32-544的Administrators。红帽建议不要在针对 RHEL 主机的 AD GPO 中使用 AD 内置组。
4.6.2. SSSD 支持的 GPO 设置列表 复制链接链接已复制到粘贴板!
下表显示了与 Windows 上的 Group Policy Management Editor 中指定的 Active Directory GPO 选项对应的 SSSD 选项。
| GPO 选项 | 对应的 sssd.conf 选项 |
|---|---|
|
允许本地登陆 |
|
|
允许通过 Remote Desktop Services 登陆 |
|
|
从网络访问此计算机 |
|
|
允许作为批处理作业登陆 |
|
|
允许作为服务登陆 |
|
4.6.3. 控制 GPO 强制的 SSSD 选项列表 复制链接链接已复制到粘贴板!
您可以设置以下 SSSD 选项来限制 GPO 规则的范围。
ad_gpo_access_control选项-
您可以在
/etc/sssd/sssd.conf文件中设置ad_gpo_access_control选项来选择基于 GPO 访问控制的三种不同模式。
| ad_gpo_access_control 的值 | 行为 |
|---|---|
|
| 基于 GPO 的访问控制规则会被评估并强制执行。这是 RHEL 8 中的默认设置。 |
|
|
基于 GPO 的访问控制规则会被评估,但 不会 强制实施;每次被拒绝的访问都会记录 |
|
| 基于 GPO 的访问控制规则不被评估也不被强制执行。 |
ad_gpo_implicit_deny选项-
ad_gpo_implicit_deny选项默认设置为False。在这个默认状态下,如果没有找到适用的 GPOs,则允许用户进行访问。如果将这个选项设置为True,则必须使用 GPO 规则明确允许用户访问。
您可以使用此功能来强化安全性,但小心不要意外拒绝访问。红帽建议在 ad_gpo_access_control 设置为 permissive 时测试此功能。
以下两个表演示了,根据在 AD 服务器端定义的允许和拒绝登陆权限和 ad_gpo_implicit_deny 的值,一个用户被允许或拒绝访问。
| 允许规则 | 拒绝规则 | 结果 |
|---|---|---|
| 缺少 | 缺少 | 允许所有用户 |
| 缺少 | 存在 | 仅允许没有拒绝规则的用户 |
| 存在 | 缺少 | 只允许有允许规则的用户 |
| 存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
| 允许规则 | 拒绝规则 | 结果 |
|---|---|---|
| 缺少 | 缺少 | 没有用户被允许 |
| 缺少 | 存在 | 没有用户被允许 |
| 存在 | 缺少 | 只允许有允许规则的用户 |
| 存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
4.6.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.6.5. 在 AD GUI 中为 RHEL 主机创建和配置 GPO 复制链接链接已复制到粘贴板!
组策略对象 (GPO)是存储在 Microsoft Active Directory(AD)中的访问控制设置的集合,适用于 AD 环境中的计算机和用户。以下流程在 AD 图形用户界面(GUI)中创建 GPO,以控制对直接集成到 AD 域的 RHEL 主机的登录访问。
先决条件
- 已使用 SSSD 将 RHEL 主机加入到 AD 环境中。
- 您有 AD Administrator 特权才能使用 GUI 更改 AD。
流程
在活动目录 Users和 Computers 中,创建一个机构单元(OU)来与新的 GPO 关联:
- 右键点击域。
- 选择 New 。
- 选择 Organizational Unit。
- 点代表 RHEL 主机的 Computer Object 的名称(在加入活动目录时创建的),并将其拖到新的 OU 中。通过在自己的 OU 中带有 RHEL 主机,GPO 以这个主机为目标。
在 Group Policy Management 编辑器中,为您创建的 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 through Remote Desktop Services 来授予 SSH 访问权限。
将您要访问这些策略的用户添加到策略本身:
- 单击 Add User or Group。
- 在空白字段中输入用户名。
- 点确定。