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 内置组。

其它资源

4.5.2. SSSD 支持的 GPO 设置列表

下表显示了与 Windows 上的 Group Policy Management Editor 中指定的 Active Directory GPO 选项对应的 SSSD 选项。

表 4.1. SSSD 检索的 GPO 访问控制选项

GPO 选项对应的 sssd.conf 选项

允许本地登录
拒绝本地日志

ad_gpo_map_interactive

允许通过 Remote Desktop Services 登录
通过 Remote Desktop Services 在 上拒绝登录

ad_gpo_map_remote_interactive

从网络访问此计算机
拒绝从网络访问此计算机

ad_gpo_map_network

允许以批处理作业身份登录
拒绝作为批处理作业登录

ad_gpo_map_batch

允许作为服务登录
拒绝作为服务登录

ad_gpo_map_service

其它资源

  • 有关这些 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 的值
行为

enforcing

基于 GPO 的访问控制规则会被评估,并强制执行。
这是 RHEL 8 中的默认设置。

Permissive

基于 GPO 的访问控制规则会被评估,但 不会 强制实施;每次被拒绝的访问都会记录 syslog 消息。这是 RHEL 7 中的默认设置。
这个模式是测试策略调整的理想模式,同时允许用户继续登录。

disabled

基于 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 权限。

流程

  1. 停止 SSSD 服务。

    [root@server ~]# systemctl stop sssd
  2. 在文本编辑器中打开 /etc/sssd/sssd.conf 文件。
  3. 在 AD 域的 domain 部分中,将 ad_gpo_access_control 设置为 permissive

    [domain/example.com]
    ad_gpo_access_control=permissive
    ...
  4. 保存 /etc/sssd/sssd.conf 文件。
  5. 重启 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。

流程

  1. Active Directory 用户和计算机中,创建一个机构单元(OU)以与新的 GPO 相关联:

    1. 右键点击域。
    2. 选择 New
    3. 选择 Organizational Unit
  2. 单击代表 RHEL 主机(加入 Active Directory 时创建的计算机对象)的名称,并将它拖到新 OU 中。通过让 RHEL 主机在自己的 OU 中,GPO 将此主机作为目标。
  3. 组策略管理编辑器 中,为您创建的 OU 创建一个新的 GPO:

    1. 扩展 .
    2. 展开 域.
    3. 展开您的域。
    4. 右键点击新的 OU。
    5. 选择 Create a GPO in this domain
  4. 为新 GPO 指定名称,如 Allow SSH access 或 Allow Console/GUI 访问 并点击 OK
  5. 编辑新的 GPO:

    1. 组策略管理 编辑器中选择 OU。
    2. 右键单击并选择" 编辑 "。
    3. 选择 Usertitle Assignment
    4. 选择" 计算机配置"
    5. 选择 Policies
    6. 选择" Windows 设置"
    7. 选择 Security Settings
    8. 选择 Local Policies
    9. 选择 Usertitle Assignment
  6. 分配登录权限:

    1. 允许本地登录以授予本地 控制台/GUI 访问权限。
    2. 双击 Allow log via Remote Desktop Services 以授予 SSH 访问权限。
  7. 将您要访问这些策略的用户添加到策略本身:

    1. Add User or Group
    2. 在空白字段中输入用户名。
    3. 确定

其它资源

  • 如需有关组策略对象的更多信息,请参阅 Microsoft 文档中的组策略对象

4.5.6. 其它资源