我在同一台物理机(现代 MacBook Pro)上的两个独立磁盘分区上运行两个操作系统。为了将它们彼此隔离,我采取了以下步骤:
使用 ro,noauto 配置 /etc/fstab(只读,无自动挂载)
使用单独的加密密钥完全加密每个分区(提交到内存)
假设病毒感染了我不知道的第一个分区。我从第一个分区(加密卷)注销,然后关闭机器以清除 RAM。然后我取消加密并启动到第二个分区。我可以合理地确信病毒没有/不能感染两个分区,还是我在这里玩火?我意识到 MBP 不附带 TPM,因此引导加载程序感染被忽视仍然是理论上的可能性。但是,这种风险似乎与运行客户操作系统时利用 VMWare/VirtualBox Hypervisor 的风险相当,特别是因为 MBP 线使用 UEFI 而不是 BIOS。
这引出了我的问题:上面概述的双分区方法比使用虚拟机隔离服务更安全还是更安全?如果我的计算机安装了 TPM,这种情况会改变吗?
背景:
请注意,我当然会采取所有常见的额外预防措施,例如每天检查操作系统软件更新,除非绝对必要,否则不要以管理员用户身份登录,在两个分区上运行实时防病毒程序,运行基于主机的防火墙,监控传出网络连接等。我的问题实际上是公开检查,看看我是否在这里忽略了任何东西,并试图弄清楚我的双引导方案是否真的比虚拟机路由更安全。最重要的是,我只是想了解更多有关安全问题的信息。
编辑#1:
正如评论中所指出的,对于我的特定用例,该场景有点偏执。但是想想那些可能在公司或政府环境中并正在考虑使用虚拟机来运行被认为是“高风险”的服务或应用程序的人。正如我所概述的,他们最好使用虚拟机还是双启动方案?一个有效权衡该权衡利弊的答案是我在这篇文章的答案中真正寻找的答案。
编辑#2:
这个问题的部分原因是关于虚拟机是否真正保护了主机操作系统的争论。就我个人而言,我认为确实如此,但请考虑一下 Theo de Raadt 在 OpenBSD 邮件列表中的这句话:
x86 虚拟化基本上是在几乎没有正确页面保护的讨厌的 x86 架构之上放置另一个几乎完整的内核,充满了新的错误。然后在这个全新的垃圾堆的另一边运行你的操作系统。如果您认为全球范围内无法编写没有安全漏洞的操作系统或应用程序的软件工程师,那么您绝对是被骗了,然后可以转身突然编写没有安全漏洞的虚拟化层。
-http://kerneltrap.org/OpenBSD/Virtualization_Security
通过引用 Theo 的论点,我并不赞同它。我只是指出这里有多种观点,所以我试图找出更多关于这个问题的信息。