使用Qubes的安全桌面:安装
这是关于Qubes操作系统的系列文章的第二篇。在我的第一篇文章中,我总体介绍了Qubes,以及它与大多数其他桌面Linux发行版的不同之处,主要在于它专注于在不同的虚拟机中对应用程序进行隔离,以限制攻击者在虚拟机被入侵时可以访问的内容。这允许您使用一个虚拟机进行常规网页浏览,另一个虚拟机用于银行业务,还有一个不同的虚拟机用于存储您的GPG密钥和密码管理器。在本文中,我将继续介绍如何下载和安装Qubes的基本指南,以及桌面和各种默认虚拟机类型的概述。
下载并验证Qubes ISO您可以在此处下载最新版本的Qubes,在该页面上,您将找到下载安装程序ISO镜像的链接,以及关于如何使用Qubes ISO创建可引导USB磁盘的更详细说明(目前最新的3.1 ISO大于标准DVD的容量,因此您需要坚持使用基于USB的安装版本)。
除了ISO之外,您还应该通过同一下载页面上的链接下载签名文件和签名密钥文件。签名文件是使用Qubes团队的GPG签名密钥的GPG签名。这样,您不仅可以验证ISO在传输过程中是否损坏,还可以验证您和Qubes网站之间的某人是否替换了不同的ISO。当然,可以替换ISO的攻击者也可以替换签名密钥,因此从不同计算机在不同网络上下载签名密钥(理想情况下是一些与您没有直接关联的网络)并使用像sha256sum这样的工具来比较所有下载文件的哈希值非常重要。如果所有哈希值都匹配,您可以合理地确信您拥有正确的签名密钥,因为攻击者很难对多台计算机和网络进行中间人攻击。
一旦您验证了签名密钥,您可以使用以下命令将其导入到您的GPG密钥环中
$ gpg --import qubes-master-signing-key.asc
然后您可以使用gpg来验证ISO是否与签名匹配
$ gpg -v --verify Qubes-R3.1-x86_64.iso.asc Qubes-R3.1-x86_64.iso
gpg: armor header: Version: GnuPG v1
gpg: Signature made Tue 08 Mar 2016 07:40:56 PM PST using RSA
↪key ID 03FA5082
gpg: using classic trust model
gpg: Good signature from "Qubes OS Release 3 Signing Key"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs
↪to the owner.
Primary key fingerprint: C522 61BE 0A82 3221 D94C A1D1 CB11
↪CA1D 03FA 5082
gpg: binary signature, digest algorithm SHA256
您在输出中寻找的是显示“Good signature”(良好签名)的行,以证明签名匹配。如果您看到像上面输出中的警告,这是预期的,除非当您将Qubes签名密钥添加到您的密钥环时,您采取了额外的步骤来编辑它并将其标记为受信任。
安装QubesQubes的安装过程要么非常直接和简单,要么非常困难,这取决于您的硬件。由于虚拟化和其他Qubes需要的硬件支持的结合,它可能不一定在以前运行Linux的硬件上运行。Qubes在其网站上提供了一个硬件兼容性列表,以便您可以了解哪些硬件可能有效,并且Qubes网站开始创建认证硬件列表,Purism Librem 13笔记本电脑是第一款正式认证可以运行Qubes的笔记本电脑。
像大多数安装程序一样,您有机会对磁盘进行分区,您可以接受默认设置或采取手动方法。请注意,Qubes默认加密您的磁盘,因此您至少需要有一个单独的/boot分区。安装程序完成后,将显示配置向导,您可以在其中选择一些更高级的选项,例如是否启用sys-usb USB虚拟机。此虚拟机获取您的所有USB PCI设备,并充当保护桌面其余部分免受恶意USB设备侵害的屏障。它仍然是一个实验性选项,有一些优点和缺点,我将在以后的专栏中介绍。它默认是关闭的,所以如果您不确定,只需在安装过程中保持未选中状态——您始终可以在以后创建它。
安装程序还为您提供了安装KDE、XFCE或两者的选项。如果您选择两者都安装,您可以像任何其他Linux发行版一样在登录时选择要使用的桌面环境。考虑到现在磁盘空间如此便宜,我建议只安装两者,这样您就有更多选择。
Qubes桌面无论您选择KDE还是XFCE作为您的桌面环境,Qubes处理桌面应用程序的总体方式都是相同的,因此我不会专注于特定的桌面环境,而是尝试保持我的描述相对通用,以便它们适用于KDE或XFCE。
您可能注意到的第一件事是,Qubes应用程序菜单不是将应用程序组织成类别,而是虚拟机不同类别的列表。在每个虚拟机下,都有一组默认应用程序,但请注意,这不是可用应用程序的完整列表——那样会使菜单过于笨重。相反,您可以通过从该虚拟机的子菜单中选择“添加更多快捷方式”(图1)来选择要为每个虚拟机提供的应用程序。这将弹出一个窗口,允许您将应用程序快捷方式移动到菜单中。请注意,Qubes仅检测提供.desktop链接的应用程序(它们也会以相同的方式自动显示在其他桌面环境中)。

图1. Qubes桌面菜单示例
Qubes根据虚拟机类型将桌面菜单中的虚拟机分类为组。了解每个类别的用途非常重要,因为它将帮助您就每种类型的虚拟机中要做什么(以及不做什么)做出更安全的选择。以下是主要类别
一次性虚拟机(Disposable VM): 这些也称为dispVM,专为一次性使用而设计。当您启动一次性虚拟机时,它会基于模板创建一个全新的虚拟机实例,并启动一个应用程序(如果从菜单启动,通常是Web浏览器,但它可以是虚拟机模板中可用的任何应用程序)。当您关闭该应用程序时,该虚拟机的所有数据都将被擦除。您可以一次打开多个一次性虚拟机,并且每个虚拟机都在其自己的容器中运行。一次性虚拟机对于打开有风险的电子邮件附件、浏览有风险的网页或任何其他被入侵风险较高的活动非常有用。如果攻击者确实入侵了您的一次性虚拟机,他们最好快速行动,因为一旦您关闭窗口,整个环境将消失。
-
域虚拟机(Domain VM): 这些通常也称为appVM,它们是大多数应用程序运行的地方,也是用户花费大部分时间的地方。当您想要隔离活动时,您可以通过创建不同的appVM并根据从红色(不信任)到橙色、黄色、绿色、蓝色、紫色、灰色和黑色(最终信任)的一系列颜色为它们分配不同的信任级别来实现。例如,您可能有一个红色不信任的appVM用于通用网页浏览,另一个黄色appVM用于需要登录的最受信任的网页浏览,还有一个更受信任的绿色appVM,您仅将其用于银行业务。如果您在同一台笔记本电脑上进行个人活动和工作,appVM提供了一种很好的方式来完全分离工作和个人文件及活动。
-
服务虚拟机(Service VM): 服务虚拟机分为netVM和proxyVM子类别,它们通常在后台运行,并为您的appVM提供服务(通常是网络访问)。例如,sys-net netVM被分配了您的所有网络PCI设备,并且是为其余虚拟机提供外部网络访问的不受信任的虚拟机。sys-firewall proxyVM连接到sys-net,其他appVM使用它进行网络访问。由于sys-firewall充当代理,它允许您为连接到它的每个appVM创建自定义防火墙规则,因此您可以例如创建一个只能访问您银行网站上端口443的银行虚拟机。sys-whonix proxyVM为您提供集成的Tor路由器,因此您连接到它的任何appVM都会自动通过Tor路由其流量。您可以通过Qubes虚拟机管理器配置您的appVM使用哪个服务虚拟机进行网络连接(或者是否具有网络访问权限)。
-
模板虚拟机(Template VM): Qubes包含几个不同的Linux发行版模板,您可以从中创建其余的虚拟机。其他虚拟机从模板虚拟机获取其根文件系统模板,一旦您关闭appVM,您可能对该根文件系统所做的任何更改都将被擦除(只有/rw、/usr/local和/home中的更改会保留)。当您想要安装或更新应用程序时,您打开相应的模板虚拟机,执行安装或更新,然后将其关闭。然后,下次您重新启动基于该模板的appVM时,它将获得新的应用程序。模板虚拟机的compromise(入侵)意味着基于该模板的任何appVM的compromise(入侵),因此一般来说,您应保持模板虚拟机关闭状态,仅在临时更新或安装新软件时才打开它们。您甚至可以在设置appVM后更改它所基于的模板虚拟机。因为无论如何只有您的个人设置会保留,所以可以将其视为安装新的Linux发行版,但保留先前安装的/home目录。
由于使用了模板虚拟机,在Qubes中安装应用程序与常规桌面Linux发行版略有不同。假设您想在您的个人appVM上安装GIMP。虽然您可以根据appVM使用的发行版,使用yum、dnf或apt-get直接在appVM内部安装软件,但该应用程序只会持续到您关闭个人appVM为止(并且它不会显示在桌面菜单中)。要使应用程序持久存在,您只需确定appVM所基于的模板虚拟机,然后在桌面菜单中,您可以从菜单中选择“debian-8: Packages”或“fedora-23: Software”选项来启动虚拟机并启动GUI应用程序以安装新软件。或者,您也可以从相应的模板虚拟机打开终端应用程序,并使用yum、dnf或apt-get来安装软件。
一旦您安装了应用程序,如果它提供了.desktop快捷方式并将其安装在标准位置,Qubes将自动拾取它并将其添加到您的appVM的可用应用程序列表中。但这不会自动使其在菜单中可见。要将其添加到可见应用程序列表中,您必须从该appVM的菜单中选择“添加更多快捷方式”选项,并将其拖到可见应用程序列表中。否则,您始终可以在appVM中打开终端并以这种方式启动它。
Qubes虚拟机管理器Qubes虚拟机管理器为管理Qubes内部的所有虚拟机提供了一个友好的图形界面。主窗口显示所有正在运行的虚拟机的列表,包括CPU、RAM和磁盘使用情况、您分配给它们的颜色以及它们所基于的模板。顶部有一系列按钮,可让您对您选择的虚拟机执行各种操作,包括创建新虚拟机或删除现有虚拟机、打开或关闭虚拟机电源、更改其设置以及切换列表以仅显示正在运行的虚拟机或您的所有虚拟机。

图2. 带有某些正在运行的虚拟机的Qubes虚拟机管理器
您可能会调整虚拟机的许多不同设置,但虚拟机管理器使创建新虚拟机或更改常规设置相对简单且有条理。您可能想要调整的一些主要设置包括分配给虚拟机的颜色、它可以拥有的最大RAM或磁盘空间、它使用的模板以及它连接到的netVM。此外,您可以为您的虚拟机设置自定义防火墙规则,为其分配PCI设备并配置您的应用程序快捷方式菜单。
虚拟机管理器是使其更容易浏览原本会是一个非常复杂的命令行命令和配置文件系统的优点之一。再加上Qubes的其他一些工具,例如其复制粘贴方法(Ctrl-Shift-c从appVM的剪贴板移动到全局剪贴板,突出显示要粘贴到的appVM,然后Ctrl-Shift-v将其移动到该appVM的剪贴板)及其命令行和GUI文件管理器工具,使您可以在appVM之间复制文件,所有这些都使环境比您可能预期的更易于使用,考虑到其复杂性。
虽然本文将帮助您开始使用Qubes,但真正有趣的地方在于您如何组织appVM并在它们之间划分任务。在我的下一篇文章中,我将介绍我在个人和工作笔记本电脑上进行隔离的一些方法,并且我将重点介绍Qubes的一些其他安全功能,这些功能使我很难回到普通的旧Linux桌面。