是否可以为多台虚拟机安装一个防病毒程序?

是否可以为多台虚拟机安装一个防病毒程序?

抱歉,我问了一个愚蠢的问题。

通常我们使用物理服务器并在其上创建多个虚拟机。(我指的是最简单的情况)每个虚拟机的操作系统和配置可能不同。但所有资源的实际“所有者”是基础物理机。例如,每个虚拟机都使用与物理服务器连接的相同物理内存,并且它们只是在物理服务器的硬盘上创建虚拟磁盘。

现在我的问题是为什么我们不能实现仅在物理服务器上运行的防病毒机制?如果是这样,我们就不需要为每个虚拟机安装单独的防病毒程序。(物理机器可以访问虚拟机正在使用的内存、磁盘空间)

答案1

主要问题是主机操作系统不一定了解客户操作系统的内部情况 - 即它不知道客户操作系统中正在运行哪些进程,甚至不知道文件系统布局。通常,主机操作系统将虚拟机视为使用一定量内存、磁盘映像/分区和一些 CPU 周期的黑匣子。

但是要实施有效的防病毒程序,您将需要访问进程详细信息和文件信息(并且该信息仅在虚拟机内部可用)。

答案2

参加这个聚会有点晚了,但是 VMWare 的vShield 端点产品与特定的第三方虚拟设备结合使用时(例如Sophos 端点) 允许单个中央 VM 处理整个 VM 场的所有防病毒操作。

答案3

防病毒程序在文件级别运行,即每次文件系统访问(打开、读取、写入等)时,它们说情根据请求并根据各种规则进行过滤。例如,如果文件是可执行文件,则检查文件内容是否带有病毒签名。

虚拟机主机在 CPU 级别运行,也就是说说情当操作系统执行一些非常低级的操作并且需要模拟以保留 VM 的状态时,主机 VM 软件会在其客户操作系统上执行这些操作。主机 VM 软件对客户操作系统的实际操作一无所知,并且仅继续让客户操作系统在真实硬件上运行的假象(这并非完全正确,存在各种工具允许客户操作系统访问主机操作系统,例如 VMWare 工具驱动程序)。

实现此目的的唯一方法是在客户操作系统中加载驱动程序,该驱动程序将对主机虚拟机的每次访问的控制权委托给主机上运行的用户空间 AV 程序。这些操作的结果必须传播回客户操作系统,供其操作系统应用,以避免客户和主机同时修改磁盘结构而造成损坏。

因此,最终您将拥有一份在客户操作系统外部运行的 AV 软件副本,但必须与所有副本进行通信(以非常复杂的方式)才能实现传统 AV 解决方案的功能。

我们甚至还没有涉及在同一主机 VM 上运行多个异构操作系统、对此共享 AV 服务的升级、物理主机之间的 VM 迁移等。

我怀疑上述解决方案的性能是否能与在客户操作系统中运行的传统 AV 服务一样好。你问这个问题的动机是什么?

答案4

不确定这是一个理论问题还是实际问题......

理论上这是可能的,尽管没有任何防病毒供应商提供此功能。实际上,文件级防病毒应用程序会导致操作系统无法访问重要文件(例​​如 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

相关内容