6.3. Selinux
强制访问控制通过限制 QEMU 进程的权限限制为仅需要什么内容来限制尝试攻击的影响。在 Red Hat OpenStack Platform 上,SELinux 配置为以单独的安全上下文运行每个 QEMU 进程。SELinux 策略已预先配置为 Red Hat OpenStack Platform 服务。
OpenStack 的 SELinux 策略旨在帮助保护虚拟机监控程序主机和虚拟机免受两个主要威胁向量:
- 管理程序威胁 - 虚拟机内运行的受损的应用程序会攻击管理程序以访问底层资源。例如,当虚拟机能够访问虚拟机监控程序操作系统、物理设备或其他应用程序时。这种威胁向量代表对虚拟机监控程序的威胁,对物理硬件的威胁以及公开其他虚拟机和网络段的风险。
- 虚拟机(多项目)威胁 - 虚拟机内运行的受损的应用程序会攻击虚拟机监控程序访问或控制另一台虚拟机及其资源。这是虚拟化独有的威胁向量,它代表了大量风险,因为单个应用程序中的漏洞可能会被破坏虚拟机文件镜像。这个虚拟网络攻击是一个主要关注,因为保护实际网络的管理技术不会直接应用到虚拟环境。每个基于 KVM 的虚拟机都是由 SELinux 标记的进程,能够有效地围绕每个虚拟机建立安全边界。此安全边界由 Linux 内核监控和强制实施,限制虚拟机对其边界之外的资源的访问权限,如主机数据文件或其他虚拟机。
无论虚拟机中运行的客户机操作系统是什么,都提供了红帽的基于 SELinux 的隔离。可以使用 Linux 或 Windows 虚拟机。
6.3.1. labels 和 Categories 复制链接链接已复制到粘贴板!
基于 KVM 的虚拟机实例使用自己的 SELinux 数据类型进行标记,称为 svirt_image_t
。内核级别保护可防止未经授权的系统进程(如恶意软件)操作磁盘上的虚拟机镜像文件。当虚拟机关闭时,镜像存储为 svirt_image_t
,如下所示:
system_u:object_r:svirt_image_t:SystemLow image1 system_u:object_r:svirt_image_t:SystemLow image2 system_u:object_r:svirt_image_t:SystemLow image3 system_u:object_r:svirt_image_t:SystemLow image4
system_u:object_r:svirt_image_t:SystemLow image1
system_u:object_r:svirt_image_t:SystemLow image2
system_u:object_r:svirt_image_t:SystemLow image3
system_u:object_r:svirt_image_t:SystemLow image4
svirt_image_t 标签
(svirt_image_t 标签)会唯一标识磁盘上的镜像文件,允许 SELinux 策略限制访问。当基于 KVM 的计算镜像时,SELinux 会将随机数字标识符附加到镜像。SELinux 能够为每个虚拟机监控程序节点分配最多 524,288 虚拟机,但大多数 OpenStack 部署不太可能遇到这个限制。本例显示了 SELinux 类别标识符:
system_u:object_r:svirt_image_t:s0:c87,c520 image1 system_u:object_r:svirt_image_t:s0:419,c172 image2
system_u:object_r:svirt_image_t:s0:c87,c520 image1
system_u:object_r:svirt_image_t:s0:419,c172 image2
6.3.2. SELinux 用户和角色 复制链接链接已复制到粘贴板!
SELinux 管理用户角色。它们可以通过 -Z
标志查看,也可以使用 semanage
命令查看。在 hypervisor 上,只有管理员应该可以访问系统,并且应对管理用户和系统上的任何其他用户都有适当的上下文。