对不起,如果我问一个愚蠢的问题。
一般情况下,我们使用物理服务器并创build多个虚拟机(我正在处理最简单的情况)。每个虚拟机的操作系统和configuration可能不同。 但所有资源的实际“所有者”是基础物理机器。 举例来说,每个虚拟机使用与物理服务器相同的物理内存,并且只在物理服务器的硬盘上创build虚拟磁盘。
现在我的问题是为什么我们不能实现一个仅在物理服务器上运行的防病毒机制? 如果是这样,我们不需要为每个虚拟机分别安装防病毒程序。(物理机可以访问内存,虚拟机正在使用的磁盘空间)
主要的问题是主机操作系统不一定理解客户操作系统的内部 – 即不知道客户操作系统甚至文件系统布局中正在运行什么进程。 通常,主机操作系统将虚拟机视为一个黑盒,使用一定的内存,磁盘映像/分区和一些CPU周期。
但要实施有效的防病毒程序,您需要访问过程详细信息和文件信息(并且该信息仅在虚拟机内部可用)。
对于这个特定的一方迟了一点,但是当VMWare的vShield Endpoint产品与特定的第三方虚拟设备(如Sophos Endpoint )相结合时,可以让一个中央虚拟机来处理整个VM场的所有防病毒操作。
防病毒程序在文件级别运行,也就是说,在每个文件系统访问(打开,读取,写入等)时,它们会对请求进行调用 ,并根据各种规则对其进行过滤。 例如,如果文件的内容是可执行文件,则检查文件的内容。
虚拟机主机在CPU级别上运行,即当操作系统执行某些级别非常低的操作时需要仿真以保留虚拟机的状态,这些虚拟机会在客户机操作系统上进行调用。 主机虚拟机软件忘记了客户操作系统的实际操作,只是为了延续客户操作系统在真实硬件上运行的错觉(这不是真的,存在各种工具来允许客户操作系统访问主机操作系统,例如VMWare工具驱动程序)。
这个工作的唯一方法是在客户操作系统中加载一个驱动程序,该驱动程序将对每个对主机虚拟机的访问进行控制,并从那里对主机上运行的用户空间AV程序进行授权。 这些操作的结果将不得不传播到操作系统应用的客户操作系统,以避免来宾和主机同时修改磁盘结构的损坏。
所以,在一天结束的时候,您将有一个AV软件副本在客户操作系统外部运行,但必须与所有人(以复杂的方式)进行通信,以实现传统的AV解决scheme。
我们甚至没有涉及在同一台主机上运行多个异构操作系统,升级这个共享AV服务,在物理主机之间迁移虚拟机等。
我怀疑,上面的解决scheme将被certificate是与Guest OS中运行的传统AV服务一样的性能。 你问这个问题的动机是什么?
你没有提到你使用的是哪个VM技术厂商,但这是VMware方面的一个产品要求,我相信它将被devise为下一个版本的“裸机”产品,vSphere。
http://www.vmware.com/technology/security/vmsafe.html
这是他们这项技术的主要产品页面。 你可以看看这个小小的闪存演示,看看它是如何工作的一个高级视图,但正如你所build议的那样,虚拟机pipe理程序层可以允许vmsafe“装置”(只是DataCenter中的另一个虚拟机)来监视所有虚拟硬件组件(networking,CPU,RAM,磁盘)用于certificate恶意软件,并在出现问题之前将其消除。
相当酷,但只有当你运行VMware时,以及产品还没有完全释放,反正!
好的想法。
不知道这是一个理论还是实际的问题…
从理论上讲,虽然没有任何杀毒软件供应商提供这种function,但仍有可能。 实际上,文件级防病毒应用程序会导致操作系统访问重要文件(如VHD本身)的能力出现问题(这种情况与Exchange或SharePoint或许多其他服务器应用程序类似),您需要排除特定文件由AV扫描。
对于一个正式的答案,这个问题已经被Ben Armstrong(Hyper-V开发者之一)回答了: http : //blogs.msdn.com/virtual_pc_guy/archive/2009/03/17/antivirus-and-hyper- v-或-为什么-可以-TI -开始-我的虚machine.aspx
不是真正的病毒扫描程序,但是BlockWatch (基于白名单的内存完整性检查程序)是这样工作的:轮询正在运行的虚拟机,快照或保存状态,然后validation分配给该guest虚拟机的内存。 它适用于Windows 32和64位操作系统。