Qubes 桌面技巧

作者:Kyle Rankin

学习一些技巧,充分利用您的 Qubes 桌面。

我使用高安全性的 Qubes 操作系统已经有一段时间了,并且过去曾在Linux Journal上写过一个多部分系列的文章。在使用过程中,我收集了一些有用的技巧,在本文中,我将介绍一些专门为 Qubes 定制的技巧。即使这些技巧是针对 Qubes 的,并且假设桌面充满了虚拟机,您也可以将总体思路应用于其他桌面环境。

上班打卡,下班打卡

一般来说,最好将您的个人和工作环境完全分隔在不同的机器上。这更有利于安全,因为如果您的个人机器被黑客入侵,您不会冒感染工作环境的风险,反之亦然。当然,如果由于某种原因您没有两台机器的奢侈条件,或者如果您想设置一台配置了工作和个人设置的旅行笔记本电脑(就像我在之前的文章中提到的那样),您会需要某种方式在工作和个人模式之间切换。

由于 Qubes 通过许多不同的虚拟机来完成所有操作,这意味着编写一对简单的脚本 clock\_in 和 clock\_out,它们存储在 dom0 虚拟机中。这两个脚本都定义了个人和工作虚拟机的列表,它们将根据您是上班打卡还是下班打卡来关闭或启动虚拟机。这是一个 clock\_in 脚本的示例


#!/bin/bash

PERSONAL_VMS="fb personal personal-web vault finance
 ↪writing sys-whonix"
WORK_VMS="work work-web stage prod1 prod2 vault-work"

for i in $PERSONAL_VMS; do qvm-shutdown $i; done
for i in $WORK_VMS; do qvm-start $i; done

将此与我的 clock\_out 脚本进行比较,您会看到虚拟机列表是不同的


#!/bin/bash

PERSONAL_VMS="fb personal personal-web vault"
WORK_VMS="work work-web stage prod1 prod2 vault-work stage-gpg
 ↪prod-gpg sys-vpn-stage sys-vpn-prod1 sys-vpn-prod2"

for i in $PERSONAL_VMS; do qvm-shutdown $i; done
for i in $WORK_VMS; do qvm-start $i; done

列表不同的原因是,在这两种情况下,我都希望全面地关闭虚拟机,但在上班或下班时只需要启动特定的虚拟机。通过创建单独的列表,我可以确保所有可能正在运行的虚拟机都被关闭,并且我只启动我需要的虚拟机。

URL 的虚拟机选择器

Qubes 的一个优点是,如果您在一个虚拟机中获得了一个可疑的文件或 URL,您可以在不太受信任或一次性虚拟机中打开它。通常,当涉及到 URL 时,这意味着要通过 Qubes 更安全的复制粘贴方法,这需要比正常的复制粘贴多两倍的击键次数。我意识到我经常想从一个更受信任的虚拟机在一个不太受信任的虚拟机列表中打开一个 URL,所以我创建了以下名为 vm\_picker 的脚本,它弹出一个简单的 GUI 选择器,我可以用它来选择我想用哪个虚拟机打开 URL


#!/bin/bash

VM=$(zenity --list --title 'Open in which VM?' --column='VM Name' \
  untrusted \
  dispVM \
  personal-web \
)

if [ "$VM" == "dispVM" ]; then
  qvm-open-in-dvm $@
else
  qvm-open-in-vm $VM $@
fi

在这个脚本中,我定义了三个不同的虚拟机,我的完全不受信任的虚拟机用于正常的网页浏览,一个一次性虚拟机用于特别有风险的虚拟机,以及我的个人网页虚拟机,我将其用于更受信任的身份验证会话。该脚本使用 zenity,这是一个方便的命令行工具,您可以使用它来显示基本的 GUI 元素——在本例中是一个列表。一旦您选择了虚拟机,zenity 会将其分配给 VM 变量,如果它是一个一次性虚拟机,我将使用一个特殊的 Qubes 命令用于一次性虚拟机。如果它是任何其他虚拟机,我将使用另一个命令。

将脚本保存在您想要从中打开 URL 的任何虚拟机中,然后进入该虚拟机的“首选应用程序”程序(您可能需要更新该虚拟机的可见快捷方式列表才能看到此程序)。将此脚本设置为您的首选 Web 浏览应用程序,然后您在终端或其他 Web 感知程序中的所有右键单击“打开 URL”对话框都将使用您的虚拟机选择器。

显然,您需要自定义脚本以呈现您自己的虚拟机以及您喜欢的顺序。我发现我有一个不同的列表和顺序,具体取决于我从哪个虚拟机调用它,因此每个虚拟机都有略微不同的脚本版本。我还为在我的 vault 中运行的 KeePassX 程序设置了一个自定义版本,因为它允许您指定分配给特定用户名和密码的 URL,并且您可以告诉它使用快捷键打开 URL。在 KeePassX 设置中,有一个设置允许您定义自定义 URL 处理程序,所以我将其设置为我的 VM-picker 脚本。

结论

因此,如果您使用 Qubes,我希望您发现这些技巧很有用。如果您不使用 Qubes,您仍然可以将这些想法应用于您的桌面。例如,您可以简单地更改 clock\_in 和 clock\_out 脚本以关闭和启动特定的程序(或设置了特定模式的程序)。您可以更改 vm\_picker 脚本,使其允许您在不同的 Web 浏览器之间进行选择,而不是选择特定的虚拟机,这样您就可以在 Firefox 中打开一些 URL,而在 Chrome 中打开其他 URL。您甚至可以提前检查 URL 并自动启动特定的浏览器,而无需任何提示。

Kyle Rankin 是 Linux Journal 的技术编辑和专栏作家,也是 Purism 的首席安全官。他是 Linux Hardening in Hostile NetworksDevOps TroubleshootingThe Official Ubuntu Server BookKnoppix HacksKnoppix Pocket ReferenceLinux Multimedia HacksUbuntu Hacks 的作者,也是许多其他 O'Reilly 书籍的贡献者。Rankin 经常就安全和开源软件发表演讲,包括在 BsidesLV、O'Reilly Security Conference、OSCON、SCALE、CactusCon、Linux World Expo 和 Penguicon 上。您可以在 @kylerankin 上关注他。

加载 Disqus 评论