分类: LINUX
2011-05-30 02:09:50
说明:因为Qubes安装要求尽可能在单独的主机上进行,所以没有在VMware环境下进行测试,有时间可以试着运行一下看看效果,好像现在已经到3.0版本了!详见:
今天引用一篇帖子:
最近忙于一些公司的事情,代码分析进展缓慢,目前基本上已经完成64位xen的启动过程分析,但是由于主要分析对象
是Qubes系统本身,所以还需要把跟Qubes相关的内容剥离出来,避免其他内容的干扰,毕竟无论是xen还是linux内核都是一个庞大的项目,还是
紧跟Qubes本身代码的分析为好。所以这次还不能把源码分析的内容发布出来,干脆就讲讲Qubes的一些背后的故事吧,希望也能吸引到感兴趣的童鞋。
最早接触到Qubes是在2010年4月7号的Xen邮件列表里,joanna有封邮件正式介绍了基于Xen的安全操作系统Qubes(可以参见:基于Xen的安全桌面系统Qubes——<一>设计分析)。
Qubes本身的设计思想不是一个面向多用户的桌面系统,这点和现有的linux和windows有些区别,最初设计时曾考虑过在Dom0中创建多个非特
权用户,这样用户A就不能访问用户B的AppVMs,但是Rafal(ITL的另一个大牛)立马想出许多潜在的通过非特权用户攻击系统管理员的手段,甚至
是在SELinux强制模式下也不是没有可能,所以最终否决了这种设计。但最主要的问题还是Xen架构设计问题,例如Xend的管理接口设计时就未能考虑
允许非特权用户安全的控制Xen,也就是说没有一个安全通路可供用户A与Xend通讯控制他自己的VMs的同时又能不引入安全隐患,防止他人的权限能够提
升至root。另外,如果用户可以访问到物理机器,那么他就可以通过单用户模式进行提权(当然,这个可以利用Intel
TXT可信启动来防止)。所以基于以上考虑,Qubes并不打算支持多用户,因为它的目标是针对不同的威胁给用户提供保护,而不是针对不同的用户来保护系
统(显然这也是不现实的),也就是说Qubes的主要目的是防止A->root,而不是A->B。
老外把这种思想叫做Why humans jailing one each other?
Cause (at some point) it is easier and more rational to jail a bad guy rather than "harden" entire society.And it is kinda strange that this approach is not fully applied to computer science.The main idea behind Qubes architecture is to have Dom0 isolated from the outside world, so there is no point in further hardening it via e.g.grsecurity, etc. See the arch spec, last chapter, about the only potential attacks on Qubes Dom0.
人家的境界比较高,就不翻译了,相信大家也都看的懂。如果想要构建一个安全的系统,必须控制整个系统的构件,例如Dom0安装的所有的包,包括它的网络栈,有人还给Qubes这种设计起了个名字叫Bento安全模型。关于Qubes的,有手册也没来及翻译完,所以继续转帖:)
很久没来了,最近实在是没有时间,这次写点新鲜的:Qubes,一个你还没听说过的系统(嘿嘿,我也刚刚知道),它是由著名的波兰美女黑客Joanna Rutkowska最近刚发布了一个基于Xen和Linux的新开源操作系统,据说这个女人小时候就开始玩DOS了,这几年在虚拟化安全领域是大出风头,有时间再扯一扯她的光辉业绩,先来介绍一下这个系统(敬请留意)。
Qubes充分利用了虚拟化技术(基于安全虚拟机Xen),所有用户应用程序都运行在AppVM(基于Linux的轻量级虚拟机)中,彼此隔离。而联网代码使用 IOMMU/VT-d放在一个非特权虚拟机中,在特权域 (dom0) 中没有任何联网代码。许多系统级组件放在沙盒中,以避免互相影响。
Qubes允许用户自己定义许多安全域(用轻量级虚拟机实现),比如“个人”、“工作”、 “购物”、“银行”等,彼此隔离。另外,也支持各安全域之间复制-粘贴和文件共享。每个AppVM都是由TemplateVM创建的,他们以只读模式和模板共享根文件系统,所以每个AppVM仅需要存储自己的私有数据的磁盘空间,同时还可以通过运行TemplateVM中的升级进程升级所有AppVMs的软件,当然必须先停止所有的AppVMs。
该系统的主要是由VMs构成的,Qubes架构优化了硬盘(将来也会考虑内存)的使用,所以可以同时允许运行许多虚拟机(应用程序有很多的缘故)而不浪费磁盘空间,因为文件共享机制允许VM间重用绝大多数文件系统而不降低安全隔离属性。
Intel VT-d 和TXT 技术允许创建安全的驱动域,这样能够把系统攻击surface降到最小。一般可以把系统使用的VM按照两个策略分类:
AppVMs,用于不同的应用,如邮件客户端,web浏览器,等
SystemVMs (或称为ServiceVMs)主要用来提供 system-wide services, 如: networking 和disk storage.
该项目通过利用裸虚拟监视器(XEN)的隔离能力和硬件虚拟化技术(Inetl VT-d和TXT)构建一个桌面和笔记本用的安全操作系统。
当前桌面系统主要安全问题就是不能有效地隔离各种程序,主要是由于目前的操作系统架构设计问题(包括过于复杂的OS API,非安全的GUI设计,还有最关键问题:monolithic kernel architecture)所以说基于目前这种非安全的系统架构很难实现真正的安全操作系统。而通过Qubes系统我们最大可能的重用现有的系统构造块,特别是XEN虚拟监视器,并且在硬件虚拟化的支持下大大简化了虚拟监视器的代码,便于创建更robust的系统配置,例如使用驱动域( 也就是说把硬件相关的如networking 代码完全隔离出去)。
Qubes安全模型:虚拟机(VMS,也叫域)是Qubes系统安全模型主要的构造块,Qubes系统主要的工作就是隔离不同的VMs。从一个用户的角度日常使用中可能会需要分配以下几个域:
Random域,用来日常使用,例如安装非可信应用程序,由于该域没有敏感数据,所以不会有潜在的安全隐患。
Socila域:邮件,blog,twitter,facebook,等
Shopping域:在线购物等
Bank域:这个就不用我说了吧
Corporate域 :VPN等
(注:各种不同的域可以分级Non Restricted ,Restricted,Confidential,Top Secret)
另外还有一些专用的安全域,如网络虚拟域(由于网络世界充满未知,所以把所有网络相关代码放到一个非特权的域中,对于保证系统安全有很重要的影响)。
另外为了管理和定义这些虚拟机,Qubes提供了一个安全的GUI子系统,可以显示不同的应用程序,即使他们不在同一个VM中,但并未降低系统的隔离性,用户可以在不同域间拷贝复制和交换文件。在桌面应用环境中安全的GUI起着非常重要的角色,例如用户可能在邮件(Socila域)中收到一个不明的网络连接,他如果不了解该连接的真实可靠性就可以从这个VM中复制到Random域中,这样不管这个网站是否安全都不会破坏系统的安全性。
系统架构:
Qubes架构优化了硬盘(未来还要优化内存)的使用,所以不需要同时在系统中运行N多的VMs(太浪费硬盘空间)。文件系统共享机制允许域间重用大多数文件系统,不必考虑安全隔离的属性。IntelVT-d和TXT技术允许创建安全的驱动域,所以能最小化系统attack surface.同样存储设备可以放到存储域中,包括硬盘,USB,DVD等,并且借助文件系统加密、签名和可信启动技术,对于存储域的威胁不会影响到系统其他部分。
从整体上可以把域分为AppVMs和SystemVMs(或者叫Services Vms)。
Qubes系统主要的功能就是提供对于不同域间的不同应用程序的无缝整合,便于用户透明的使用所有的应用程序,不用去管到底哪个应用跑在哪个VM中。还一个关键的功能就是提供 near-native的性能,让用户使用是感觉不到AppVMs对应用程序的影响(但我在实际使用中碰到过内存不够的问题,相信以后的发布版中应该会解决这个问题)。
Qubes第一版假设所有的AppVMs都是跑在Linux系统中,但并不是说Qubes系统不支持在其他OS,如Windows中使用AppVMs。
Qubes主要是为使用虚拟机节省硬盘空间,所以所有的AppVMs都是基于同一个系统(目前是Linux),共享同一个只读文件系统,并且只需要为用户和每个域的设置分配一些磁盘空间, 每一个VM不必使用整个OS镜像。为了解决这个问题,Qubes架构引入了dedicated storage domain,把所有的磁盘和文件系统存储相关的代码放到这个“沙盒”中,这样即使这些部分受到攻击也不会影响系统其他部分。
在通常的系统上(如windows和Linux),核心的网络代码,包括网卡驱动和不同的协议栈都是运行在内核中,所以潜在的网络代码bug会导致整个系统受到威胁。在Qubes架构中会尽量减少这种问题带来的威胁,所以整个网络代码(包括驱动和协议栈)都被移到一个非特权域(Network 域)中。 Network 域直接访问网络设备,这是由intel VT-d技术提供的,这样一来所有对于 Network 域的攻击不会对其他域造成威胁。另外所有的安全敏感的应用可以使用加密保护的网络协议,如SSL、VPN、SSH。
复杂的文件共享机制(如 copy-on-write文件系统)需要后台的代码支持,为了减轻这个问题,文件系统共享代码,后台代码,以及磁盘驱动和栈,都移除到 专用的非特权域,storage域中。同样storage域可以直接访问磁盘控制器,也是由intel VT-d技术提供支持的。
另外,存储域可以访问USB和CD/DVD controllers,允许处理所有的可移动设备。所以对于移动设备的安全问题同样也被限制在VM中。
存储域最大的难题在于如何保证它安全性,Qubes架构是利用加密文件系统解决的,所以存储域不能读其他域的敏感信息,更不能够修改共享的根文件系统。另外通过使用intel TXT技术保护系统启动代码,使得即使存储域被挟持,最坏也就使系统或该VMs不能启动,但不至于威胁到整个系统(如安装后门,rootkit,或者偷取数据)。
GUI域(Dom0)是唯一直接访问图形设备的,包括输入设备,运行X server和Window Manager(管理应用程序启动和关闭并操作他们的windows)。GUI域一个最常用的应用就是Application Viewer(a little stub application :XEN术语),他用来启动和显示某个AppVM中实际的应用程序。AppViewer为用户提供一个系统中执行的应用程序的视图,而实际上他们是隔离在各个AppVM中。
由于GUI域是安全敏感的,所以目前还不确定是否要把他放到Dom0外的一个GUI子系统中。Qubes系统第一版中把GUI域作为管理域(Dom0),将来或许会从Dom0移除出去。
一口气说了这么多,快受不了了,不如赶紧使用一下吧,我刚刚使用过,还在摸索阶段,今后后不断的分析出来,大家拭目以待吧。