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 内置组。
4.5.2. SSSD 支持的 GPO 设置列表 复制链接链接已复制到粘贴板!
下表显示了与 Windows 上的 Group Policy Management Editor 中指定的 Active Directory GPO 选项对应的 SSSD 选项。
| GPO 选项 | 对应的 sssd.conf 选项 |
|---|---|
|
允许本地登录 |
|
|
允许通过 Remote Desktop Services 登录 |
|
|
从网络访问此计算机 |
|
|
允许以批处理作业身份登录 |
|
|
允许作为服务登录 |
|
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 的值,允许或拒绝用户访问。
| 允许规则 | 拒绝规则 | 结果 |
|---|---|---|
| 缺少 | 缺少 | 允许所有用户 |
| 缺少 | 存在 | 仅允许没有拒绝规则的用户 |
| 存在 | 缺少 | 只允许有允许规则的用户 |
| 存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
| 允许规则 | 拒绝规则 | 结果 |
|---|---|---|
| 缺少 | 缺少 | 没有用户被允许 |
| 缺少 | 存在 | 没有用户被允许 |
| 存在 | 缺少 | 只允许有允许规则的用户 |
| 存在 | 存在 | 只允许有允许规则而不在拒绝规则中的用户 |
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]
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]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/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.
(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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果这是不需要的行为,您可以临时将 ad_gpo_access_control 设置为 permissive,在对 AD 中的正确 GPO 设置进行故障排除时,如这个过程所述。
先决条件
- 已使用 SSSD 将 RHEL 主机加入到 AD 环境中。
-
编辑
/etc/sssd/sssd.conf配置文件需要root权限。
流程
停止 SSSD 服务。
systemctl stop sssd
[root@server ~]# systemctl stop sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在文本编辑器中打开
/etc/sssd/sssd.conf文件。 在 AD
域的 domain部分中,将ad_gpo_access_control设置为permissive。[domain/example.com] ad_gpo_access_control=permissive ...
[domain/example.com] ad_gpo_access_control=permissive ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存
/etc/sssd/sssd.conf文件。 重启 SSSD 服务以加载配置更改。
systemctl restart sssd
[root@server ~]# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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。
- 在空白字段中输入用户名。
- 点确定。