威胁隔离!用SELinux保护虚拟化

【.com独家翻译】虚拟化被认为是计算机技术发展史中的一次技术革命,它在资源分配,系统管理,电力和制冷成本节省,按需扩大或收缩资源等方面表现出极大的优势,虽然人人都在谈虚拟化,人人都准备用上虚拟化,但一直伴随虚拟化挥之不去的阴影 – 安全问题 – 又让无数人望而却步。

虚拟化安全性如何?

当攻击者攻破虚拟机,接管了虚拟机的所有控制权后会发生什么?如果系统管理程序(Hypervisor)存在bug又会发生什么?

在未虚拟化之前,我们隔离了服务器,攻击者攻破一台服务器后,他只能控制那一台服务器,这时攻击者必须采取网络攻击,攻击网络内的其它服务器,才有可能拿到其它服务器的控制权。系统管理员有很多工具检测和保护网络攻击,如防火墙,网络流量分析工具,入侵检测工具等。

虚拟化后,在同一台物理主机上运行了多个服务(应用程序),如果虚拟机被攻破,攻击者只需要破坏系统管理程序,就可以达到破坏所有服务的目的。如果系统管理程序存在漏洞,攻击者可以接管主机上托管的所有虚拟机,甚至可以向主机能直接访问的虚拟机镜像写入恶意代码。

听起来非常恐怖吧,现在的问题是如果真发生这种情况时该如何处置,攻击者对系统管理程序的漏洞兴趣越来越浓,前不久Xen系统管理程序就已经被攻破了。——王文文:VMware的产品中同样出现过类似问题,而现在他们已经在采用RSA的身份认证技术来缓解虚拟数据中心威胁了。那如果不使用身份认证技术的话,我们看看本文中SELinux的保护方式。

现在我们来看看Fedora 11中的libvirtd/qemu/kvm,libvirtd启动所有虚拟机,所有虚拟机都以独立的进程运行,虚拟镜像被保存为一个文件或类似逻辑卷和iSCSI目标的设备。

SELinux真的有用么?

SELinux标记进程,文件和设备,同时负责定义被标记进程,文件和设备之间互操作的规则,通过SELinux可以减小系统管理程序漏洞引起的影响范围。

如果你阅读过Xen漏洞文档,你一定知道如何绕过RHEL 5中SELinux保护机制,攻击者知道标记为xend_t的xen进程可以读/写所有用fixed_disk_device_t标记的固定磁盘,通过写物理磁盘,攻击者可以绕过SELinux的限制。我给RHEL 5上的Xen编写策略时,最初要求管理员将Xen镜像设备卷标记为xen_image_t,Xen开发人员认为这对管理员的管理来说太困难了,可能会导致许多故障,我们没有时间制作管理工具使其自动化,大家都认为在这个例子中可用性比安全更重要,我不得不同意他们的意见。

在Fedora 11中,James Morris,Daniel Berrange和我以及其它共事者给libvirt增加了SELinux支持,形成了sVirt,我们给libvirt增加了一个插件架构,默认启用了SELinux保护,理论上你可以使用其它安全架构。libvirt动态地标记镜像文件,并用正确的标记启动虚拟机,管理员不必记住给镜像文件和设备设置的标记,在F11中,默认所有虚拟机都使用svirt_t type类型标记,所有镜像文件都使用svirt_image_t类型标记。

SELinux策略规定svirt_t进程可以读/写svirt_image_t文件和设备。

这种保护允许我们保护主机不受任何虚拟机的侵害,虚拟机只能与正确标记的文件和设备交互,被攻破的虚拟机不能访问我的home目录,即使虚拟机以root权限运行。

但这种类型的保护不能阻止一个虚拟机攻击另一个虚拟机,我们需要一种方法使用相同的类型标记域和镜像文件,与此同时,停掉虚拟机1,以svirt_t类型运行,攻击虚拟机2,虚拟机2也将以svirt_t类型运行。

多类别安全(Multi Category Security,MCS)保护

我们在开发RHEL 5时,我们增加了MCS支持,包括给SELinux上下文增加第四个字段。

最开始在RHEL 4中,SELinux上下文只有三个字段:“用户:角色:类型”,在RHEL 5中,SELinux上下文字段增加到四个:“用户:角色:类型:MLS”,例如,home目录中的文件可能被标记为system_u:system_r:user_home_t:TopSecretRecipe,MLS标记定义了一个敏感级别(s0-s15)和数据分类(c0.c1023),这个例子中的TopSecretRecipe是类似s15:c0.c36这样的字段的人文翻译,MLS标记允许MLS机器不仅可以基于它的使用者标记文件,在这个例子中是user_home_t,也可以根据敏感性和内容的本身属性进行标记,如TopSecretRecipe。

这个字段仅在MLS策略中使用,我们尝试在默认策略(targeted)中使用它,只定义一个敏感级别(s0),允许管理员定义分类,我们把它叫做多分类安全(MCS),旨在让管理员和用户可以基于文件内容的自身属性进行标记,如system_u:object_r:database_t:PatientRecord可能是一个包含病人记录的数据库,遗憾的是,由于种种原因,MCS未被广泛使用。

但我们在开发sVirt时,我们认识到可以使用MCS隔离两个相同SELinux类型(svirt_t)的虚拟机,我们设计libvirt分配一个不同的随机选择的MCS标记给每个虚拟机及其关联的虚拟镜像,libvirt保证它选择的MCS字段的唯一性,SELinux阻止以不同MCS字段运行的虚拟机互操作,这样就保证了虚拟机不会相互攻击。

例如,libvirt用下面这些标记创建两个虚拟镜像:

SELinux阻止虚拟机1(system_u:system_r:svirt_t:s0:c0,c10)访问虚拟机2的镜像文件(system_u:object_r:svirt_image_t:s0:c101,c230),因此这两个虚拟机不能互相攻击。

下面是libvirt指定的标记:

我们也给sVirt增加了静态标记的功能,静态标记允许管理员为虚拟机选择一个特殊的标记,包括MCS/MLS字段,虚拟机将总是以这个标记启动,运行静态虚拟机的管理员负责给镜像文件设置正确的标记,libvirt永远不会修改静态虚拟机上下文的标记,它允许sVirt组件在MLS环境下运行,你可以在一个libvirt系统上以不同敏感级运行多个虚拟机。

【.COM 独家翻译,转载请注明出处及作者!】

【编辑推荐】

  1. 从虚拟化和云计算解析IT安全的两大疑惑
  2. 虚拟化安全焦点:四问虚拟防火墙

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/124301.html<

(0)
运维的头像运维
上一篇2025-02-23 05:23
下一篇 2025-02-23 05:25

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注