Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 32 章 定义 SELinux 用户映射

安全增强型 Linux(SELinux)可设置有关用户可以访问进程、文件、目录和系统设置的规则。系统管理员和系统应用都可以定义 安全上下文,以限制或允许来自其他应用的访问。
作为在身份管理域中定义集中式安全策略的一部分,身份管理提供了一种将 IdM 用户映射到现有 SELinux 用户上下文的方法,并根据主机的 SELinux 策略授予或限制对 IdM 域中客户端和服务的访问权限。

32.1. 关于身份管理、SELinux 和映射用户

身份管理不会在系统上创建或修改 SELinux 上下文。相反,它使用与目标主机上现有上下文匹配的字符串,作为将域中 IdM 用户映射到系统中的 SELinux 用户的基础。
增强安全性的 Linux 为进程如何与系统上的其他资源交互定义了内核级、强制访问控制。根据系统上进程的预期行为及其安全影响,将设置称为策略的特定规则。这与更高级别的自主访问控制相反,它们主要关注文件所有权和用户身份。系统上的每个资源都被分配一个上下文。资源包括用户、应用程序、文件和进程。
系统用户与 SELinux 角色 关联。该角色同时分配了多层安全上下文(MLS)和多类别安全上下文(MCS)。MLS 和 MCS 上下文限制用户,以便他们只能访问系统上的某些进程、文件和操作。
要获得可用 SELinux 用户的完整列表:
[root@server1 ~]# semanage user -l

                Labelling  MLS/       MLS/
SELinux User    Prefix     MCS Level  MCS Range                      SELinux Roles

guest_u         user       s0         s0                             guest_r
root            user       s0         s0-s0:c0.c1023                 staff_r sysadm_r system_r unconfined_r
staff_u         user       s0         s0-s0:c0.c1023                 staff_r sysadm_r system_r unconfined_r
sysadm_u        user       s0         s0-s0:c0.c1023                 sysadm_r
system_u        user       s0         s0-s0:c0.c1023                 system_r unconfined_r
unconfined_u    user       s0         s0-s0:c0.c1023                 system_r unconfined_r
user_u          user       s0         s0                             user_r
xguest_u        user       s0         s0                             xguest_r
有关 Red Hat Enterprise Linux 中的 SELinux 的详情,请查看 Red Hat Enterprise Linux 7 SELinux 用户和管理员指南
SELinux 用户和策略在系统级别而非网络级别发挥作用。这意味着 SELinux 用户是在每个系统上独立配置的。尽管在很多情况下这是可以接受的,因为 SELinux 具有常见的系统用户和 SELinux 感知服务定义自己的策略,因此当远程用户和系统访问本地资源时,会导致问题。可以在不知晓远程用户和角色的实际 SELinux 用户和角色的情况下为远程用户和服务分配默认的 guest 上下文。
身份管理可以将身份域与本地 SELinux 服务集成。身份管理可以根据主机将 IdM 用户映射到 每个主机配置的 SELinux 角色,或者 基于 HBAC 规则。映射 SELinux 和 IdM 用户改进了用户管理:
  • 远程用户可以根据其 IdM 组分配授予适当的 SELinux 用户上下文。这也允许管理员一致地将相同的策略应用到同一用户,而无需创建本地帐户或重新配置 SELinux。
  • 与用户关联的 SELinux 上下文是集中的。
  • 可以通过基于 IdM 主机的访问控制规则等设置来计划以及与域范围内的安全策略相关的 SELinux 策略。
  • 管理员可以在环境范围内实现可见性,并控制 SELinux 中如何分配用户和系统。
SELinux 用户映射定义了三个部分存在的两个独立关系:系统的 SELinux 用户、IdM 用户和 IdM 主机。首先,SELinux 用户映射定义了 SELinux 用户和 IdM 主机(本地或远程系统)之间的关系。其次,它定义了 SELinux 用户和 IdM 用户之间的关系。
此安排允许管理员为同一 IdM 用户设置不同的 SELinux 用户,具体取决于他们正在访问的主机。
SELinux 映射规则的核心是 SELinux 系统用户。每个映射首先与 SELinux 用户关联。可用于映射的 SELinux 用户在 IdM 服务器中配置,因此有一个中央和通用列表。这样,IdM 定义一组它知道的 SELinux 用户,并可在登录时与 IdM 用户关联。默认情况下,它们分别为:
  • unconfined_u (也用作 IdM 用户的默认)
  • guest_u
  • xguest_u
  • user_u
  • staff_u
但是,可以修改这个默认列表,以及从中央 IdM SELinux 用户列表添加或删除任何 原生 SELinux 用户(请参阅 第 32.1 节 “关于身份管理、SELinux 和映射用户”)。
在 IdM 服务器配置中,每个 SELinux 用户都只配置其用户名,也配置其 MLS 和 MCS 范围,SELinux_user:MLS[:MCS]。IPA 服务器使用这种格式在配置映射时标识 SELinux 用户。
IdM 用户和主机配置非常灵活。可以明确且单独分配用户和主机到 SELinux 用户映射,或者可以将用户组或主机组显式分配到该映射。
您还可以将 SELinux 映射规则与基于主机的访问控制规则相关联,以简化管理,以避免在两个位置重复相同的规则,并使规则保持同步。只要基于主机的访问控制规则定义了用户和主机,就可以将它用于 SELinux 用户映射。基于主机的访问控制规则(在 第 31 章 配置基于主机的访问控制中描述)有助于将 SELinux 用户映射与 IdM 中的其他访问控制集成,并帮助限制或允许远程用户的基于主机的用户访问,以及定义本地安全上下文。
注意
如果基于主机的访问控制规则与 SELinux 用户映射关联,则在从 SELinux 用户映射配置中删除之前,无法删除基于主机的访问控制规则。
SELinux 用户映射与系统安全服务守护进程(SSSD)和 pam_selinux 模块一起工作。当远程用户尝试登录机器时,SSSD 会检查其 IdM 身份提供程序以收集用户信息,包括任何 SELinux 映射。然后 PAM 模块处理用户,并为它分配相应的 SELinux 用户上下文。SSSD 缓存允许映射离线工作。