搜索

4.5. 在 RHEL 中应用组策略对象访问控制

download PDF

组策略对象 (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-544Administrators。红帽建议您在 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。在这个默认状态下,如果没有找到适用的 GPOs,则允许用户进行访问。如果将这个选项设置为 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 Users 和 Computers 中,创建一个机构单元(OU)来与新的 GPO 关联:

    1. 右键点击域。
    2. 选择 New
    3. 选择 Organizational Unit
  2. 点代表 RHEL 主机的 Computer Object 名称(加入 Active Directory 时创建),并将其拖到新的 OU 中。通过在自己的 OU 中带有 RHEL 主机,GPO 以这个主机为目标。
  3. Group Policy Management Editor 中,为您创建的 OU 创建新的 GPO:

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

    1. Group Policy Management 编辑器中选择 OU。
    2. 点鼠标右键,选择 Edit
    3. 选择 User Rights Assignment
    4. 选择 Computer Configuration
    5. 选择 Policies
    6. 选择 Windows Settings
    7. 选择 Security Settings
    8. 选择 Local Policies
    9. 选择 User Rights Assignment
  6. 分配登录权限:

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

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

其他资源

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

4.5.6. 其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.