★何为“虚拟机快照”
首先,快照是针对某个虚拟系统(Guest OS)而言的。当你为某个虚拟系统创建快照,则虚拟机软件会把这个虚拟系统的所有信息(包括内存状态、硬盘状态、等等)都保存起来。当你需要的时候,可以再切换到这个快照。一旦切换到某个快照,虚拟系统(Guest OS)就回到当初创建快照的那个状态。
大多数虚拟机软件都支持树状结构的快照,也就是说,你可以在某个快照之上再创建快照。这就好比大伙儿都熟悉的文件目录结构——可以在某个目录内再创建目录,最终形成一个树形结构。
为了给大伙儿一个直观的印象,放一张截图:从这张截图可以看出,这是一个装了 Windows 10(x64)的虚拟系统,图中名为“激活并关闭自动更新…”的快照,是一个干净并禁止更新的 Win10 系统。然后基于这个快照,再创建2个快照,分别是装了wps的和没装wps的。
★用“快照”能带来哪些好处?
为了让大伙儿更加重视,先来聊聊好处。
◇对各种恶意软件(流氓软件、病毒、木马)的免疫
如果你学会了本文介绍的招数,并养成频繁回退快照的习惯,你可以确保自己的 Guest OS 对各种安全威胁是【免疫的】。
比如说:你不小心访问了某个挂马的网站,中了木马。当你下次回退到前一个快照,木马自然就消失了。
◇避免在本机留下操作痕迹
如果你学会了本文介绍的招数,并养成频繁回退快照的习惯,就会最小化 Guest OS 里面的操作痕迹(比如上网浏览历史)。
比如说:你【每天】都回退快照,那么你在 Guest OS 里面只会留下【最多一天】的操作痕迹。这一点对于隐私保护是非常重要滴!
★使用“快照方案”的【原理】
先来介绍一下“原理”。
本文开头扫盲了“快照”的概念,其中提到一句:一旦切换到某个快照,虚拟系统(Guest OS)就回到当初创建快照的那个状态。(这点是由虚拟化软件保证的,也是本文的核心)。有了这个保证,你只需遵循如下三个步骤,就可以让系统始终处于干净纯洁的状态。
首先,
你创建一个【干净的、纯洁的】Guest OS,然后在这个“干净纯洁”的状态下制作一个快照。
其次,
你可以在这个快照的基础上使用该虚拟系统(Guest OS)。使用的过程中,你可能会不小心感染了病毒或中了木马。不过没关系。
最后,
当你使用完毕,只需简单地把虚拟系统(Guest OS)退回到那个干净的快照,虚拟系统(Guest OS)就重新变得干净纯洁了。
★具体的操作步骤
刚才已经说完了【原理】,下面来介绍详细的操作步骤。
考虑到俺的读者中,有些人【不是】IT 行业的从业人员,所以俺会尽量说得比较详细、比较浅显。(懂行的同学或许会嫌俺太罗嗦)
◇安装一个【干净】的系统
打基础很重要。所以,首先要确保你初始安装的 Guest OS 就是干净纯洁的。要做到这点,至少要确保如下几个注意事项:
1. 你的 Host OS 首先必须是【纯洁】的。
如果 Host OS 本身就中了木马或者已经有了流氓软件,你就很难保证 Guest OS 也是纯洁的。
2. 用来安装 Guest OS 的安装盘必须是【正宗】的。
这个道理很简单——如果安装盘不靠谱,装出来的系统自然也不靠谱。所以,【不要】使用国产的经过破解的光盘镜像(比如“番茄花园、雨林木风”之类),天晓得里面有啥猫腻。俺一直建议用【官网】提供的原始光盘镜像,才比较保险。
如果你的光盘镜像【不是】从官网直接下载的,那么你要校验一下光盘镜像的散列值(Hash)。具体的教程,请参见《扫盲文件完整性校验——关于散列值和数字签名》一文。
Windows 的光盘镜像,可以在微软官网查到 ISO 镜像文件的散列值;Linux 的光盘镜像,只要是知名的发行版,其官网通常都会提供散列值。
至于具体的安装过程,俺就不罗嗦了,大伙儿可以去参考本系列前面的两篇:
《4. 虚拟系统的安装(多图)》
《5. 虚拟系统的配置(多图)》
◇何时做第一次快照?
当你装完系统,建议你顺手把相关的安全补丁都打全(关于“安全补丁”的重要性,可以参见《如何防止黑客入侵》系列的其中一篇)。
然后,安装一些基本的软件(你要确保你安装的这些软件全都是靠谱的;否则这个系统就不纯洁了)
最后,再把一些个性化设置也配置好。(否则的话,每次回退到快照,还要重新再设置一遍,比较繁琐)
上述几个步骤做完,你就可以创建该 Guest OS 的第一个快照。
◇何时更新快照?
(所谓的“更新快照”,就是在原有快照的基础上,制作新的快照)
快照不是永久不变的。有些时候,你需要更新快照。具体有如下几种情况:
系统安全更新
以 Windows 为例,每个月都会发布安全补丁。为了安全起见,你必须打这些补丁。
假如你没有更新快照,那么每次你回退到快照之后,又得重新打一次安全补丁。随着时间的推移(每个月都有新的补丁),于是你需要打的补丁会越来越多。这就很繁琐,也很浪费时间。
安装新的软件 / 软件升级新的版本
有些时候,你需要在 Guest OS 里面安装一些新的软件;或者把原有的某些软件升级到新版本。
假如你没有更新快照,那么每次你回退到快照之后,又得重新安装一次新软件或者升级新版本。这就很繁琐,也很浪费时间。
◇如何更新快照?
刚才分析了“更新快照”的必要性。接下来聊聊“更新快照”的注意事项。
系统安全更新的情况
1. 你要先回退到前一个快照(回退之后,Guest OS 是纯洁的)
2. 在此基础上,安装系统的安全补丁
3. 安装补丁之后,不要做太多额外的操作,尽快制作一个新的快照
(为啥俺强调“不要做太多额外的操作”,主要是避免误操作引入新的安全风险)
安装新的软件 或 软件升级新的版本
1. 你要先回退到前一个快照(回退之后,Guest OS 是纯洁的)
2. 在此基础上,安装新的软件 或 给现有软件升级版本
3. 做完上述操作之后,不要做太多额外的操作,尽快制作一个新的快照
(为啥俺强调“不要做太多额外的操作”,主要是避免误操作引入新的安全风险)
如果你遵循上述操作步骤,那么你的 Guest OS 在更新快照之后,依然是纯洁的。
◇“运行时”制作快照 VS “关机时”制作快照
制作快照的时机有两种,分别是 Guest OS“处于运行状态”和“处于关机状态”。这两种各自有优缺点,分别如下:
Guest OS 运行状态制作快照
优点:下次回退到快照,Guest OS 已经处于运行状态,省掉了等待系统启动的时间
缺点:因为 Guest OS 是在运行状态,虚拟化软件生成快照时,还需要把 Guest OS 的内存写入硬盘。多消耗了 Host OS 的硬盘空间。
Guest OS 关机状态制作快照
优点:节省了 Host OS 的硬盘空间
缺点:每次回退到快照之后,还需要等待 Guest OS 启动
看完上述优缺点分析后,你可以根据自己的偏好,决定采用哪一种方式的快照。
◇需要保留多少个快照?
虚拟化软件为了记录快照的相关信息(磁盘状态、内存状态),需要占用挺多的物理硬盘空间。所以,如果你保留的快照太多,会导致 Host OS 的磁盘空间消耗很快。
解决办法是:只保留最近的 N 次快照。N 可以是 1 或 2
保留两次快照是为了防止误操作——比如你不小心生成了一个【不纯洁】的快照。在这种情况下,你可以把【不纯洁】的快照直接删除。然后退回到这个【不纯洁】快照的“前一个快照”。
◇多久回退一次快照?
通常而言,越频繁地回退到干净的快照,安全性就越好。
你可以根据自己的安全需求,决定多久回退一次。
俺个人建议,时间间隔【不要超过1周】。
★如何解决“持久文件”的问题?
(所谓的“持久文件”,就是一些你希望永久保留的文件)
使用快照的安全解决方案,最经常碰到的就是这个问题。具体原因如下:
因为当 Guest OS 回退到前一个快照,那么从“前一个快照”生成【之后】的所有修改(对硬盘的修改),都消失了。比方说,在前一个快照生成【之后】,你在 Guest OS 里面保存了一份文档。当 Guest OS 回退到前一个快照,那么这份文档就消失了。
那么该咋办捏?下面介绍俺的几条经验:
◇使用“共享目录”
几乎有所有主流的虚拟机软件,都支持“共享目录”的机制。所以这招是常用招数。
所谓的“共享目录”,就是把 Host OS 的某个目录共享到(映射到) Guest OS 里面。之后,你可以在 Guest OS 里面操作该目录(比如在该目录中创建文件)。你在该目录下的所有操作,最终都是保存在 Host OS 里面。
由于“共享目录”里面的内容是保存在 Host OS 里面,因此也就【不受】快照回退的影响。
◇使用“持久硬盘”
这个功能比较高大上,【不是】所有的虚拟机软件都支持。下面俺简单拿 VirtualBox(以下简称 VBox)和 VMware Workstation(以下简称 VMware)来说事儿。
VBox
VBox 的虚拟磁盘支持一种“write-through”的类型(中文翻译成“完全写入”)。如果某个虚拟磁盘设置为这种方式,那么该磁盘的内容【不受】快照回退的影响。
有了这个功能,你可以在 Guest OS 中添加一块新的虚拟硬盘,并把这块新盘的类型设置为“write-through”。之后,凡是需要永久保留的文件,都放在这块盘上。
以 Windows 为例说一下:
大部分需要永久保存的文件,都是在“我的文档”目录下。因此你可以把“我的文档”里面的目录放置到新加的这块(类型为“write-through”)的硬盘上。
VMware
VMware 的虚拟磁盘中,提供一种“independent-persistent”类型的虚拟磁盘(中文翻译成“独立持久硬盘”),效果有点类似于 VBox 的“write-through”。但是它的缺点很明显:一旦 Guest OS 中添加了这种磁盘,就【无法】制作快照了(参见 VMware 官网“这里”的介绍)。
显然在这方面,VMware 不如 VBox 那么灵活。
顺便插一句题外话:
VirtualBox 是开源软件而 VMware 是闭源软件。所以俺建议大伙儿优先考虑 Virtual Box。
◇安全方面的注意事项
不论采用上述哪一种方案,俺都要提醒一下安全方面的注意事项。
由于“持久文件”不受“快照回退”的影响,会成为“快照方案”的一个潜在漏洞。因此,你在持久文件中保存的东东,只能是“数据型的文件”,而【不能是】“可执行文件”(比如 exe 之类的文件)。
发表回复