对不起,如果我问一个愚蠢的问题。
通常我们使用物理服务器并在其上创建多个虚拟机。(我正在解决最简单的场景)每个虚拟机的操作系统和配置可能不同。但是所有资源的实际“所有者”是基础物理机器。例如,每个虚拟机都使用与物理服务器连接的相同物理内存,它们只是在物理服务器的硬盘上创建虚拟磁盘。
现在我的问题是为什么我们不能实现只在物理服务器上运行的防病毒机制?如果是这样,我们不需要为每个 VM 安装单独的防病毒程序。(物理机可以访问 VM 正在使用的内存、磁盘空间)
对不起,如果我问一个愚蠢的问题。
通常我们使用物理服务器并在其上创建多个虚拟机。(我正在解决最简单的场景)每个虚拟机的操作系统和配置可能不同。但是所有资源的实际“所有者”是基础物理机器。例如,每个虚拟机都使用与物理服务器连接的相同物理内存,它们只是在物理服务器的硬盘上创建虚拟磁盘。
现在我的问题是为什么我们不能实现只在物理服务器上运行的防病毒机制?如果是这样,我们不需要为每个 VM 安装单独的防病毒程序。(物理机可以访问 VM 正在使用的内存、磁盘空间)
主要问题是主机操作系统不一定了解客户操作系统的内部结构——即它不知道客户操作系统中正在运行哪些进程,甚至不知道文件系统布局。通常,主机操作系统将虚拟机视为使用一定数量内存、磁盘映像/分区和一些 CPU 周期的黑匣子。
但要实施有效的防病毒程序,您将需要访问进程详细信息和文件信息(并且该信息仅在虚拟机内部可用)。
对这个特定的一方来说有点晚了,但是当与特定的第三方虚拟设备(例如Sophos Endpoint )结合使用时,VMWare 的vShield Endpoint产品允许单个中央 VM 处理整个 VM 场的所有防病毒操作。
防病毒程序在文件级别运行,即在每次文件系统访问(打开、读取、写入等)时,它们都会对请求进行调解并根据其各种规则对其进行过滤。例如,如果文件是可执行文件,则检查文件的内容是否有病毒特征。
虚拟机主机在 cpu 级别运行,也就是说,当操作系统执行非常低级别的操作并且需要模拟以保留 VM 的状态时,它们会在其客户操作系统上进行调解。Host VM 软件忽略了 Guest OS 的实际操作,其运行只是为了延续 Guest OS 在真实硬件上运行的假象(严格来说这不是真的,存在各种工具来允许 Guest OS 访问例如主机操作系统、VMWare 工具驱动程序)。
实现这一点的唯一方法是在来宾操作系统中加载一个驱动程序,该驱动程序将控制权委托给对主机 VM 的每次访问以及从那里到在主机上运行的用户空间 AV 程序的控制。这些操作的结果必须传播回来宾操作系统以由其操作系统应用,以避免来自来宾和主机同时修改磁盘结构的损坏。
因此,在一天结束时,您将拥有一个在客户操作系统外部运行的 AV 软件副本,但必须与所有这些软件进行通信(在一个非常复杂的庄园中)才能实现传统 AV 解决方案的功能。
我们甚至还没有涉及处理在同一主机 VM 上运行多个异构操作系统、升级到此共享 AV 服务、物理主机之间的 VM 迁移等。
我怀疑上述解决方案是否会被证明与在来宾操作系统中运行的传统 AV 服务一样高效。你问这个问题的动机是什么?
您没有提到您使用的是哪个 VM 技术供应商,但这是 VMware 方面的产品要求,我相信它将被构建到他们的“裸机”产品的下一个版本中,vSphere。
http://www.vmware.com/technology/security/vmsafe.html
这是他们这项技术的主要产品页面。您可以查看华丽的小演示,以获得更多关于它如何工作的高级视图,但正如您所建议的,管理程序层可以允许 vmsafe“设备”(只是数据中心中的另一个虚拟机)来监控所有虚拟硬件组件(网络、CPU、RAM、磁盘),以寻找恶意软件的证据,并在它成为问题之前将其扼杀。
非常酷,但前提是您运行的是 VMware,而且无论如何,该产品还没有完全发布!
好主意;心存善念;睿智哲思。
不知道这是一个理论问题还是一个实际问题......
尽管没有任何防病毒供应商提供此功能,但理论上这是可能的。实际上,文件级防病毒应用程序会导致操作系统访问重要文件(如 VHD 本身)的能力出现问题(这种情况与 Exchange 或 SharePoint 或许多其他服务器应用程序类似),您需要将特定文件排除在外。由 AV 扫描。
对于官方答案,Ben Armstrong(Hyper-V 开发人员之一)已在此处回答了此问题:http: //blogs.msdn.com/virtual_pc_guy/archive/2009/03/17/antivirus-and-hyper- v-or-why-can-ti-start-my-virtual-machine.aspx
不是真正的病毒扫描程序,而是BlockWatch(基于白名单,内存完整性检查器)的工作方式,通过轮询正在运行的虚拟机、快照或保存状态,然后验证分配给该客户的内存。它适用于 Windows 32 和 64 位操作系统。