VM 里的 VPN 能对宿主机隐藏流量吗?
桌面虚拟机里的隧道只保护一条网络路径。宿主机仍在运行客户机、保留其痕迹,并能观察它的工作。
你在虚拟机里安装客户端,隧道建立起来,客户机的流量被加密。这对机器之外的网络有一定价值。面对运行客户机的操作系统,它买到的就少得多,因为该系统能读取客户机的内存并查看其屏幕。下面的检查把隧道保护的部分与宿主机保留的部分分开。
宿主机比隧道更早读到明文
桌面虚拟机监控程序给客户机分配 CPU 时间,并能读取它写入的内存,包括浏览器刚刚解密的那一页。宿主机上的监控工具无需攻击密码即可读到那段明文,同一层级的键盘记录器会在任何客户端包装按键之前就收集击键。这些都不需要 VPN 被攻破,因此一条干净的隧道可以和一台装了监控的宿主机并存。
该位置交不出的,是远端的密钥,或另一个端点端到端保护的内容。隧道对它所穿越的网络依然有效,缺口在本地。
痕迹比会话活得更久
暂停 VirtualBox 客户机,旁边就会出现保存内存状态的 .sav 文件。VMware 在挂起和快照期间留下 .vmem 和 .vmsn 文件,Hyper-V 检查点会在宿主机卷上生成 .avhdx 差异磁盘。这些文件都不受客户机磁盘加密的保护。宿主机的页面文件也可能接收监控程序挤出的页,这正是 Tails 在其虚拟化指南中警告的痕迹。要检查监控程序是否保留快照,以及宿主机交换分区是否位于加密卷上。
为这些文件定一条保留规则,而不是相信默认设置,默认会一直留着,直到有人删除。宣称无痕会话的客户机改变不了这点:文件是宿主机写的,所以由宿主机的策略决定。如果你说不出快照在哪里、谁能打开,客户机的设计就没有被评估过。
磁盘加密覆盖的范围更窄
加密客户机磁盘保护的是静态镜像、被带到另一台机器的卷,或逃逸出去的备份。客户机运行时它毫无作用,因为监控程序是在客户机解密之后读取内存的。把口令当作对存档副本的保护,而不是对抗运行该 VM 的机器的护盾。
密钥与实时执行是两个问题。在托管或共享环境里,提供商可能一边持有镜像密钥,一边在你从不检查的硬件上运行客户机,所以两个答案都要记录。
传输并不等于同一个视角
承载客户机隧道的人看到的是外层端点、时序和流量体积,即使载荷保持封闭。这种形状的元数据往往正好回答观察者真正关心的问题,所以应把它当作暴露的一部分而不是噪声。适配器模式和路由决定宿主机层面的 VPN 规则是否触及客户机流量。
要在客户机内部测试,而不是在宿主机上的浏览器里测。客户机直接桥接出去时,宿主机的浏览器可能已被覆盖;两者也可以共用一条连接却走不同的路由。记下适配器模式,然后到宿主机物理网卡上抓包核对,而不是相信假设。
缩小穿越面,然后写下记录
在你掌控的硬件上运行客户机,让监控程序保持补丁,只在工作需要的地方开启共享文件夹、剪贴板共享和拖放。每一项都是宿主机与客户机之间的通道,而出厂默认通常比任务需要的更开放。关掉不用的客户机增强功能,然后确认设置在重启后仍然有效,因为升级可能把你说关掉的东西又恢复。
这些步骤缩小了穿越面,但并没有把客户机变成独立的物理信任边界。把加固过的 VM 当成那样的边界,正是风险评估通常出错的地方。
对敏感工作,要记录流量如何路由、哪些本地系统运行并保存这份工作负载。再补上谁控制宿主机、哪些文件在会话结束后仍然存在。只列出隧道的隐私说明,只描述了安排的一半。