本帖最后由 107 于 2010-12-17 16:43 编辑
VM到底有多安全!算是汇总帖如今已经是信息化的时代 我们不用向过去那样在实机上测试我们所不了解的事物 可以在虚拟机这样的架构平台上模拟多种实验。但是目前主流的VM到底有多安全呢 值得发人深思首先VM大家一定不陌生 现在到处都有此软件下载。不论从功能还是实用性等方面都是首选 尽管同类产品也有不少 但是目前最贴近实机体验的还是VM。从VM4开始我就在玩它 在使用的众多VM版本中我个人觉得5.5.2版本是最稳定的 VM可以做很多超级好玩的实验 譬如研究TCPIP协议的七层实验 搭建广域网实验 模拟黑客攻防实验 使用软路由测试DDOS攻击实验等等 VM如今已经启用了中国名字叫威荣 也就意味着将来会发行官方的中文版了 好了 接下来就几个新手常遇到的问题做个简单的介绍吧自己也是菜鸟 是老鸟的路过 可别砸砖我噢首先今天在坛子里逛了那么久 发觉问急最多的无非是在虚拟机里上网怎么上啊 为什么会波及主机病毒什么的 其实VM不神秘 这里我就不与VPC做对照了 因为这两家公司的东西有对抄嫌疑VM 从5.5系列开始就已经有了成熟的三大网络模式1。著名的桥接模式 PS下 我这里不讲原理 只简单介绍下使用情况桥接模式 就是把VM看做一台拥有独立公网IP的主机 看了下坛子里很多人选择的是NAT上网方式 桥接模式其实我觉得更好些 更安全些 为什么呢 因为桥接模式在互联网上就相当于一台独立工作的主机 而NAT模式 也叫地址转换协议 直观说就是让虚拟机和主机在同一个网段 通过虚拟机在宿主机上提供虚拟网卡进行通信 而其实虚拟网卡对主机来说仅仅是个接口 没什么特别的 说到这里就能解释为什么大家在坛子里老询问什么我使用了NAT模式为什么下个毒主机还能查杀到的原因 因为在NAT模式下工作就等于是在局域网里 而在宿主机看来VM只是个软件而不是主机 大家知道PC主机其实是靠网卡向外发送数据包和接收包的 所以在宿主机上的VM所虚拟出来的网卡就是虚拟机与宿主机的接口 如果在宿主机上网的前提下那么虚拟机就是依靠着虚拟网卡这个转接口进行传输数据的 所以当虚拟机下到了病毒时 病毒会也能被宿主机上的杀软所检测到 因为杀软监控的是网卡的数据流 而如果大家换成桥接模式下的话 就等于是在独立的系统下工作 那么宿主机是无法感染到病毒的 所以其实桥接模式下才是更为安全的做法 在来讲个大家不大使用的模式那就是ONLY-HOST也就是说在此模式下 用户可以搭建多个虚拟机组成一个复杂的网络实验 并通过VPN或者软路由的形式来实现共享上网 三种模式简单的介绍完了 VM的5系列真的很棒 在VM最新的系列里还提供了一种实验环境叫TEAM和UNITY功能 大家可以玩下 TEAM顾名思义就是团队的意思 就是可以在一个封闭的实验环境里做大量测试 UNITY是个很炫的功能具体的自己查下就知道了 尽管VM似乎看起来很强大 也很安全 但其实还是不安全的 VM的桥接模式其实就是把主机和虚拟机做了隔离来达到保护主机的目的 而宿主机本身就相当于是后台服务器的角色了 但是大家都知道世界上是不存在绝对安全的系统的说法 更何况虚拟机本身就是虚拟化技术的产物虽然现在个人企业等都在使用 但是VM本身还是存在漏洞的 并不是向大家所想的不能被突破的VM早在5.5.3版本时候就出过一个严重的漏洞 波及范围还满大 各类系统都波及到了 在5.5.2版本里 经过测试没明显感觉 最新版本增加了些什么自己去体验就不多做叙述了 现在说说我的担心吧 如今VM已经为很多人所熟悉的测试平台软件 却很少有人知道这个软件是存在很可怕的漏洞的 虽然说目前想突破它还有一定难度 为了说的更清楚些 我拷贝下这个区的solstice1988 网友的分享帖 在信息化的今天 网络技术得到了迅猛发展 对于安全的要求也日益提高 于是便孕育出了云计算的新兴概念 现在很多著名杀软厂商都号称自己拥有云计算技术 简单的介绍下什么是云计算 就是一种强大的分步式处理机制 在说的通俗点就是以后用户都可以不用升级杀软 因为用户没隐私可言 杀软厂商那安装的杀软会自动在你本机上做升级 就好象在你的电脑上预先安装了个监视装置 一但杀软发现病毒就可以实施处决 这样的好处对于企业而言是很棒的 对于个人来说就很痛苦了 譬如你想测试病毒 还没等你开测说不定就KO了 云计算技术的最大好处就是病毒库完全是实时更新汇总的 无须人员参与好了介绍完云计算的应用后 现在来说下与VM有什么关系应用程序间的安全隔离问题作为目前最好用的测试平台的VM 在组网搭建方面的确很出色 但是安全性还是令人担忧的“云计算的一个重要问题是计算平台的安全问题”, 即,用户级的应用程序代码与数据如何在计算机内存中得到保护.所谓在内存中保护用户程序与数据的安全,是指一个用户的程序代码以及数据在一个计算平台的内存储器中被执行时,其代码的正确性以及数据的私密性完整性不因受到攻击而被破坏或丢失. 注意,这里“破坏或丢失”不仅仅是指一般意义上的失去对物件的拥有或有效使用,还包含很可能是更为严重后果的破坏情况,如攻击者成功获得了其不应得到的信息. 我们都知道若要在外存设备上(如磁盘,网络通信设备)对数据进行保护,加密是常用且十分有效的保护手段.但在内存中情况十分不同,在内存中我们当然不能采用对信息进行加密的手段,不然的话CPU将如何理解,执行并计算那些加了密的代码与数据呢.对于内存中信息的保护,我们所需要的技术手段是隔离,即,不同用户的应用程序代码及数据之间应当实施适当的访问控制管理措施,使不同应用程序的代码及数据不能随意互访. 应用程序数据间的隔离其实是多用户操作系统的一个基本问题:操作系统负责管理用户对计算平台资源的分时共享包括内存的分时共享.正确的隔离是维护程序正确执行的基本条件. 值得注意的是,现今成功的商用操作系统(如Windows, Linux, 及各种Unix版本,等等)在实现应用程序隔离时主要考虑了程序正确执行的环境是一个非恶意的环境,其间不存在恶意攻击者.这样的考虑至少在这些系统问世之初以及它们的早期发展阶段应该算是合理的吧.在这样的非恶意计算环境考虑下,系统的正确性或许不是一个特别难解的问题(也许研究程序正确性,尤其是可证明正确性的同仁不会同意我这样说).不过在如今的互联网时代,在恶意代码,病毒,流氓软件肆意虐行的今天,计算环境的非恶意假定已不再成立.可惜商用操作系统在用户级应用程序隔离上的确存在先天不足的毛病.主要原因包含由于在以前非恶意计算环境考虑下形成的设计中系统赋予了用户进程过多的不必要的特权.另外所有这些操作系统如今都已经发展得十分庞大复杂, 存在许多隐含的设计漏洞. 许多这些漏洞都可以被恶意利用造成对用户应用程序的有效攻击.的确,大量攻击的存在恰恰是以操作系统存在可以被利用的漏洞为前提的. 大家都有过对操作系统安装打补钉程序的经历吧.看来补钉是一时半会儿打不完的. 系统化地解决计算平台安全问题现时已变得刻不容缓. 近来用硬件虚拟化技术来加强计算平台安全问题被十分看好. 硬件虚拟化技术是用一个直接跑在 “金属”硬件计算平台上的软件来模拟“金属”硬件的指令. 用分时的概念,一个硬件平台可以被虚拟成多个具有同样功能的软件计算平台.在每一个软件平台上都可以运行一个客户操作系统以及跑在其上的用户应用程序.在用户看来,这样虚拟出来的软件平台与被虚拟的硬件平台没有任何不同(当然在硬件平台负荷大的情况下用户会感觉到执行效益上的差别).这样虚拟出来的软件平台叫做虚拟机(Virtual Machine, VM).由于每个虚拟机分时地使用被虚拟的硬件平台,为了保证虚拟机正确使用硬件(向硬件平台发出正确执行指令),每个虚拟机都受到上面提到的哪个直接跑在硬件上的软件的严格监控(所以那个直接跑在硬件上的软件又叫做虚拟机监控器,Virtual Machine Monitor, VMM).虽然可以说VMM对每一个VM的严格监控,其出发点完全是为了向硬件发出正确的执行指令,以避免机器出错而死机,结果却在不同虚拟机之间事实上形成了很强的隔离效果. 跑在不同虚拟机上的用户应用程序是很难做到实现互访而同时又不被VMM所监控到. 那么将不同用户的应用程序部署于不同的虚拟机上,是否应用程序间的严格隔离问题,即我们所面对的计算平台安全问题,就得到解决了呢? 可惜事情远没那么简单! 由于VMM的不可被旁路的强制性监控性质,不同的客户虚拟机之间具有很强的隔离效果, 跑在不同虚拟机上的用户应用程序是很难做到实现互访而同时又不被VMM所监控到. 那么将不同用户的应用程序部署于不同的虚拟机上,是否应用程序间的严格隔离就得到满足了呢? 如上问题的回答其实是安全操作系统要解决的一个问题. 假定在客户VM中跑的操作系统本身不存在安全漏洞可被利用来攻击用户程序,那么对如上的问题我们可以给出肯定的回答. 当然这也是一个有点儿奇怪的回答: 如果这样安全的操作系统存在,用户程序之间的隔离则无须走硬件虚拟化技术的途径.其实当前利用硬件虚拟化技术来解决操作系统安全问题这样的做法变得越来越热门.这一现象本身恰恰是因为安全操作系统的缺失才使得人们考虑另辟蹊径走虚拟化道路的. 常用的商业操作系统(如Windows, Linux, Unix各种版本, Mac等)可以说没有一个能被认为是安全的操作系统.如果跑在一个客户VM中的操作系统是这些商业操作系统中的任何一个, 则客户虚拟机之间哪怕是再怎么强的隔离效果都无法在用户程序之间形成有效隔离.哪怕是在一个VM中只跑一个用户程序也不解决问题! 原因是如此简单: 你无法在用户程序及操作系统之间做隔离!用户程序需要操作系统对其提供服务.而其中最起码的一项服务就是内存管理.很不幸,所有商用操作系统偏偏在内存管理上尤其弱得不堪一击(理由我在上一讲中叙述过,下一讲中我还将给出攻击实例演示).广为所闻的堆栈缓冲区溢出攻击就是利用了商用操作系统在内存管理上存在的设计漏洞.你也许可以要求让你的程序"独享专用"一个VM,即不允许其他任何程序使用你的VM.可是你的"仆人",操作系统,却始终在为你服务!这个仆人的确能为你提供许多优质的服务使得你已经离不开它.可是它却有许多与生俱来的缺点和毛病可以被隐藏的敌人利用而给你带来危险!如今似乎没有人能知道常用的商用操作系统中隐含的安全漏洞在哪里.人们已达成共识:发现一个漏洞打一个补钉的方法是不能够得到一个安全操作系统的.这就是为什么我们说VM之间的隔离无法延伸到用户程序之间的隔离.看到这里高手应该明白我所担忧的是什么了吧 没错就是VM自身的BUG 按照上文的说法 仔细想来VM通过虚拟网卡接口与主机保持通信 因为都是虚拟的 所以其实内存也是共享的 包括CPU的时间所以假设被黑客实施了堆栈缓冲区溢出攻击 那后果不堪设想 当然这个需要黑客具备很高超的技术 我说这些只是想说明 虚拟机不会轻易被突破但不代表将来不会被突破 影子的教训我忘不了 曾经一度没事情 某次测毒就全挂了 所以世界上不存在绝对的安全 希望那些还在做梦的饭饭们 该醒醒了 让我们多重视下VM自身的BUG   |