一、虚拟机简介
虚拟化指的是讲一个物理计算机划分为一个或多个完全孤立的“虚拟机”,俗称VM。对于操作系统而言,实际上把他们看作是在自己身上运行的一个程序,但他们实际上会共享机器的物理硬件,比如CPU、内存、磁盘和网络设备。虚拟机的使用提供了两个主要的好处:资源共享和隔离。在非虚拟环境中,所有的资源在物理计算机上专用。如果系统有2GB的内存,运行任务使用了其中1GB,那么其余的就会被闲置,不能充分利用。
在虚拟机的状态下,各种资源可以根据需要分配,在有的情况下甚至可以不用重启虚拟机即可分配硬件资源,虚拟机环境还提供了隔离。但是在非虚拟的状态下,所有运行的程序可以彼此看到对方,如果有足够的权限,他们可以相互进行通信。
虚拟机提供的环境,看起来就像是独立并存的数个计算机,而实际上他们都是在一个物理主机上模拟运行的。虽然虚拟机的隔离程度依赖于底层的虚拟化技术,但是在没有进行特殊配置的情况下,虚拟机之间并不允许互相交流。另外,这种环境的隔离还包括了另外一层意思,即使某个虚拟机崩溃了,也不应当影响其他的虚拟机运行。
二、虚拟机的安全威胁
虚拟化技术现在仍在发展,并且功能越来越强大。但是历史证明:功能越伟大,安全漏洞也越多,我们现在还不能完全知晓虚拟化技术的安全弱点,但问题是肯定存在的,本文意在透过已知的安全问题,提醒大家注意虚拟化带来的安全问题。
1、虚拟机之间的通信
虚拟机一般实现这四个功能:
- 多个组织共享一个物理机。
- 在一台计算机上,有高保密要求和低保密要求的应用。
- 合并一些服务到少数物理机上
- 提供一个通用硬件平台,承载多个操作系统
前三种情况都有隔离的需要,第一种情况下,其他组织是无法访问他们的。第二和第三种情况下,这些虚拟机不应该被不相关的人访问,第四种情况,虚拟化的目标一般是为了实现系统之间的交互。相对于物理机,虚拟机的安全问题是比较独特的。
比如剪贴板技术允许数据在虚拟机和主机之间传输,这个功能很方便,但也很容易被利用,恶意程序可以很方便的在系统之间传输。再比如,某虚拟技术在操作系统内核,提供了虚拟层的按键和屏幕记录,甚至可以监控虚拟机内的加密连接。还有,有的虚拟机根本没有进行隔离,可以让虚拟机无障碍的进入宿主机,在侧重运行的应用设计里比较常见,避免了信息孤岛,这也是很多虚拟机用户的要求,所以这也存在较大的安全隐患,应该讨论一个适当的方法进行隔离。
2、虚拟机逃逸技术
虚拟机让我们能够分享主机的资源并提供隔离。在理想的世界中,一个程序运行在虚拟机里,他应该无法影响其他虚拟机。不幸的是,由于技术的限制和虚拟化软件的一些bug,这种理想世界并不存在。在某些情况下,在虚拟机里运行的程序会绕过底层,从而利用宿主机,这种技术叫做虚拟机逃逸技术,由于宿主机的特权地位,其结果是整个安全模型完全崩溃。这也就是说,你在虚拟机上测试病毒、恶意软件,这些东西如果设计好的话,就会通过虚拟机进入你的系统。
3、宿主机对虚拟机的控制
对于虚拟机来说,宿主机是一个控制者,对虚拟机的检测、改变、通信都在宿主机上完成,所以宿主机的安全要更严格管理。根据不同的虚拟机技术,宿主机可在这几个方面影响虚拟机:
- 启动、停止、暂停、重启虚拟机;
- 监控和配置虚拟机资源,包括:CPU、内存、磁盘、虚拟机的网络;
- 调整CPU数量、内存大小、磁盘数量、虚拟网络的接口数量;
- 监控虚拟机内运行的应用程序;
- 查看、复制、修改数据在虚拟机的磁盘存储。
由于所有的网络数据都会通过宿主机发往虚拟机,那么宿主机就能够监控所有虚拟机的网络数据。
4、虚拟机对虚拟机的控制
隔离是虚拟机技术的主要特点,但是如果你从A虚拟机去控制B虚拟机,那么安全漏洞就出现了。现代的CPU可以通过强制执行管理程序,来实现内存保护,内存的管理程序应该是独立的,在正确的规则里,应该禁止正在使用的内存看到另外一个虚拟机。换句话说,即使B虚拟机上有内存未被使用,A虚拟机也不能去使用这些闲置内存。
那么对于网络流量来说也一样,每个虚拟机的连接都应该有专用的通道,虚拟机之间不能嗅探对方的数据包。但是,如果虚拟机平台使用了“虚拟hub”或者“虚拟交换”来连接所有虚拟机,那么虚拟机就可以进行嗅探,或者使用ARP中毒来重新定向数据包。
5、拒绝服务
由于虚拟机和宿主机共享资源,虚拟机会强制占用一些资源,从而使得其他虚拟机拒绝服务。现在通常的做法是:限制虚拟机可用资源。虚拟化技术提供了很多机制来保证这一点,把资源单独分配给一个虚拟机。正确的配置可以防止虚拟机无节制的滥用资源,从而避免拒绝服务攻击。
6、外部修改虚拟机
信任关系对虚拟机来说是个很重要的基础。例如,我们定义一个虚拟机的账户a,可以通过受保护的应用程序来访问数据库。账户a被锁定在这个应用程序里,也就是说账户a不能够访问数据库以外的应用。但是如果虚拟机可以被修改,那么账户a就有可能访问宿主机,这种信任模式就被打破了。对信任关系的保护可以通过数字签名和验证,签名的密钥应该放在安全的位置。
7、外部管理程序修改
虽然虚拟机一般都能够自我保护,但是恶意程序仍然能够影响虚拟机的管理程序。在去年加拿大举办的CanSecWest会议有一个来自VMware的研究员做了一个关于VMsafe的演讲,他利用Vmsafe API实现了一个小工具,这个工具是在VM外面运行,VM里面运行Filemon时会去修改SSDT表来监控文件的操作,在外面运行的小工具就会知道里面发生的一切,而且可以进行干预。比如说我想让VM中的系统在某些内存访问的时候产生一个断点,然后外面就可以知道里面运行的程序在做什么。因此还应该防止未授权的虚拟机管理程序,或者使用能够验证的管理程序。
三、硬件安全
1、硬件环境
在物理机上需要有足够的处理能力、内存、硬盘容量和带宽,以满足虚拟机的运行要求,一般建议计划一些额外的处理能力和内存。
但是在资源有限的环境里,有时候会分配超出处理能力的资源给虚拟机,因为虚拟机群不会在同一时间内达到峰值。比如有3个虚拟机,每个虚拟机申请峰值不超过500MHz的处理器时间,但是物理机实际上只是1GHz的CPU,由于他们满负载的时间不一致,因此可充分利用CPU资源,这种方法叫做资源饥饿。但这种方法可能会导致拒绝服务,你如何确保所有虚拟机不会在同一时间达到峰值?而且虚拟机资源共享机制比较粗糙,被饿死的可能不仅是CPU,内存、磁盘、带宽都有可能。
虚拟机的资源计算,是一个存在不可预知的数学题,下面这个公式是一个通用的计算方法:
图1
在这个公式里,H=物理机操作系统+虚拟机软件,G=虚拟机操作系统+应用程序,O=额外开销。
虽然虚拟机软件不尽相同,但是应该对物理机的硬件做如下考量:
- CPU——CPU数量、内核、缓存大小、速度
- 内存——需要的内存量,取决于物理机的需求+虚拟机的需求+额外开销
- 硬盘——容量、转速、存取时间、缓冲区大小
- 网络接口——单个或者多个网络接口
2、启动时的磁盘带宽
正常运行期间磁盘一般都能够提供足够的带宽,即使有多个虚拟机。但虚拟机在启动时会比较占用磁盘带宽,会同时加载一些库、守护进程及其他文件。有几种方法来解决:
A:开机时间错开,最关键的虚拟机首先启动,然后5分钟或者更长时间再启动另外一个虚拟机。
B:给每个虚拟机一个专用物理磁盘。
C:以上两种都没条件的话,你只好忍受漫长的启动。这是没有办法的办法。
3、限制对虚拟机的访问
宿主机对虚拟机的攻击有着得天独厚的条件,类似与贴身肉搏这种攻击,包括:
A:不需要账户和密码,即可使用操作系统特定的热键来杀死进程,监控资源的使用或者关闭机器。
B:重启机器,引导到外部媒体从而破解密码。
C: 窃取文件,比如利用软驱、光驱、USB等。
D: 捕获进出的网络流量。
E: 删除一个或多个磁盘,把它们挂载到已知管理员密码的机器上,可以进入虚拟机,从而看到全部内容。
F: 删除整个虚拟机。
宿主机的环境不同,造成的风险也不同,所以要对宿主机的安全提供细致的安全措施:
A: 宿主机的物理环境安全,包括对进入机房的身份卡验证,对机器进行加锁(避免被人窃走硬盘)。
B:在安装完毕后拆除软驱、光驱。
C:在BIOS里,禁止从其它设备引导,只允许从主硬盘引导。另外对BIOS设置密码,避免被人修改启动选项。
D:控制所有的外部接口。
4、加固操作系统
宿主机的操作系统相对于虚拟机,需要更加审慎的安全策略,因为宿主机管理着所有的虚拟机,一旦宿主机被突破,攻击者就有可能完全访问所有的虚拟机。并且宿主机还应提供一些额外的安全措施,比如防火墙、入侵检测系统:
A:宿主机应该只有一个账户能管理虚拟机。密码应该强壮,难以猜测,经常更换,只提供给必要的管理人员。
B:最安全当然是不接入任何网络。如果需要接入网络,在开启服务之前,要使用防火墙限制,只允许必要的人访问。
C:不需要的程序和服务不要开启,这样不仅可以保证安全,还可以节省资源。
D:应及时升级补丁。给宿主机打补丁要在其他机器上进行测试,因为一旦宿主机升级失败,会影响到所有的虚拟机运行。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
逆行:为什么信息安全将越来越依赖于硬件安全?
从历史上来看,企业信息安全技术在很大程度上依赖于软件安全产品来执行政策、阻止恶意软件和加密数据。然而,根据一位业界领先的密码学家表示,计算机安全硬件在未来将发挥更大的作用。
-
无线网络攻击之黑客帝国
今天我们所面临的网络威胁,早已不仅仅是早期出现的那些攻击手段,如病毒、木马、间谍软件与网络监听、口令攻击、漏洞攻击等。黑客攻击技术近年来的最新动态是什么?