威胁隔离!用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

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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