在入门中,我们介绍了 Qubes OS 中您所在位置之间的区别 安装 您的软件以及您在哪里 跑步 你的软件。您的软件安装在模板中。每个模板与基于它的所有 qube 共享其根文件系统(即其所有程序和系统文件)。应用程序 qube 是您运行软件和存储数据的地方。

模板系统具有显着的优点:

  • 安全: 每个 qube 都对其所基于的模板具有只读访问权限,因此,如果 qube 遭到破坏,它无法感染其模板或基于该模板的任何其他 qube。

  • 贮存: 每个基于模板的 qube 仅使用存储其自身数据(即其主目录中的文件)所需的磁盘空间,这极大地节省了磁盘空间。

  • 速度: 创建新应用程序 qube 的速度非常快,因为根文件系统已存在于模板中。

  • 更新: 更新自然是集中的,因为更新模板意味着基于该模板的所有 qube 在重新启动后都会自动使用这些更新。

该系统的一个重要副作用是,应用程序 qube 中安装的任何软件(而不是其所基于的模板中)将在应用程序 qube 重新启动后消失(请参阅 继承与延续)。因此,我们建议您将大部分软件安装在模板中,而不是安装在应用程序 qube 中。

Qubes 中的默认模板基于 Fedora,但还有基于其他 Linux 发行版的其他模板。还有一些预装或未预装某些软件的模板。您可能会发现安装多个模板很有用,以便提供:

  • 不同的安全级别(例如安装或多或少受信任的软件)
  • 不同的环境(例如,Fedora、Debian、Whonix)
  • 不同的工具(例如,办公、媒体、开发、硬件驱动程序)

官方的

这些是官方 Qubes OS 项目模板。我们为这些模板构建并发布更新。我们保证二进制更新是从与我们发布的完全相同的源代码编译的。

这些模板由 Qubes 社区支持。其中一些以即用型二进制包形式提供(由 Qubes 开发人员构建),而另一些则仅以源代码形式提供。在所有情况下,Qubes OS 项目都不提供这些模板的更新。然而,此类更新可以由模板维护者提供。

通过安装这些模板,您不仅信任 Qubes 开发人员和发行版维护人员,还信任模板维护人员。此外,这些模板可能不太稳定,因为 Qubes 开发人员没有测试它们。

视窗

Windows 模板的构建方式与基于 Linux 的模板不同,因为 Windows 是一个闭源系统,只能在安装后进行修改。因此不可能为 Qubes 提供预配置的 Windows 模板。 Windows qubes 中的多个章节描述了安装 Windows qube 并通过安装 Qubes Windows Tools (QWT) 将其连接到 Qubes 环境的过程。

安装中

Qubes OS 预装了某些模板。但是,有时您可能希望从 Qubes 存储库安装新模板,例如:

  • 当您使用的模板版本达到使用寿命时。
  • 当您希望使用的模板的新版本受到支持时。
  • 当您怀疑您的模板已被泄露时。
  • 当您对模板进行了不再需要的修改时。

您可以使用命令行工具 – qvm-template – 或 GUI – qvm-template-gui。

在 dom0 的命令行中, qvm-template list –available 将显示可用的模板。要安装模板,请使用:

您还可以使用 qvm-template 来升级或重新安装模板。

存储库定义存储在 /etc/qubes/repo-templates 中,相关密钥存储在 /etc/qubes/repo-templates/keys 中。
还有用于测试版本和社区模板的其他存储库。要临时启用这些存储库中的任何一个,请使用 –enablerepo= 选项。例如:

$ qvm-template –enablerepo qubes-templates-community 安装

要永久启用存储库,请在 /etc/qubes/repo-templates 的存储库定义中设置启用= 1 行。
要永久禁用,请将该行设置为启用 = 0。

如果您希望安装正在测试中的模板,请参阅此处。

安装后

安装新模板后,我们建议执行以下步骤:

  • 更新模板

  • 将基于旧模板的任何应用程序 qube 切换到新模板

  • 如果需要的话, 卸载旧模板

  • 网络接入

    有关模板如何访问网络的信息,请参阅为什么模板没有网络访问权限?和更新代理。

    更新中

    请参阅如何更新。

    安装软件

    请参阅如何安装软件。

    卸载

    如果您想删除模板,则必须确保该模板未被使用。您应该检查该模板是否未被任何 qube 使用,并且是否未将其设置为默认模板。

    卸载模板的过程取决于它的创建方式。

    如果该模板最初是通过克隆另一个模板创建的,那么您可以像删除任何其他 qube 一样删除它。在 Qube Manager 中,右键单击模板并选择 删除 qube。 (如果您不确定,您可以先尝试此方法,看看是否有效。)

    另一方面,如果模板是预先安装的,或者是通过在 dom0 中安装模板包来安装的,请按照说明进行操作
    多于,那么您必须在 dom0 中执行以下类型的命令才能卸载它:

    $ qvm-template 删除 qubes-template–

    qubes-template–是所需模板包的名称。

    您可能会看到如下警告消息:

    警告:文件 /var/lib/qubes/vm-templates/fedora-XX/whitelisted-appmenus.list:删除失败:没有这样的文件或目录警告:文件 /var/lib/qubes/vm-templates/fedora-XX/ vm-whitelisted-appmenus.list:删除失败:没有此类文件或目录警告:文件/var/lib/qubes/vm-templates/fedora-XX/root.img.part.04:删除失败:没有这样的文件或目录警告:文件/var/lib/qubes/vm-templates/fedora-XX/root.img.part.03:删除失败:没有这样的文件或目录警告:文件/var/lib/ qubes/vm-templates/fedora-XX/root.img.part.02:删除失败:没有这样的文件或目录警告:文件/var/lib/qubes/vm-templates/fedora-XX/root.img.part.01:删除失败:没有此类文件或目录警告:文件 /var/lib/qubes/vm-templates/fedora-XX/root .img.part.00:删除失败:没有这样的文件或目录警告:文件/var/lib/qubes/vm-templates/fedora-XX/netvm-whitelisted-appmenus.list:删除失败:没有这样的文件或目录警告:文件 /var/lib/qubes/vm-templates/fedora-XX/icon.png:删除失败:没有这样的文件或目录警告:文件 /var/lib/qubes/vm-templates/fedora -XX/clean-volatile.img.tar:删除失败:没有这样的文件或目录警告:文件/var/lib/qubes/vm-templates/fedora-XX/apps.templates:删除失败:没有这样的文件或目录警告:文件 /var/lib/qubes/vm-templates/fedora-XX/apps.tempicons:删除失败:没有这样的文件或目录警告:文件 /var/lib/qubes/vm-templates/fedora-XX/apps:删除失败:没有这样的文件或目录警告:文件 /var/lib/qubes/vm-templates/fedora-XX:删除失败:没有这样的文件或目录

    这些都是正常的,也是意料之中的。没有任何问题,也不需要采取任何措施来解决这些警告。

    如果卸载命令不起作用,请密切注意任何错误消息:它可能会告诉您 qube 正在使用该模板,或者该模板是否是默认模板。其他情况请参见虚拟机故障处理。

    如果卸载模板后应用程序菜单条目没有消失,请在 dom0 中执行以下类型的命令:

    $ rm ~/.local/share/applications/

    应用程序 用于备份已删除的 qube 的菜单条目也可以在 dom0 的 /usr/local/share/applications/ 中找到。

    $ rm /usr/local/share/applications/

    重新安装

    请参阅如何重新安装模板。

    交换

    当您安装新模板或升级模板时,建议您将使用旧模板的所有内容切换到新模板:

  • 将新模板设为默认模板。 在应用程序菜单中,转到 Qubes 工具,然后单击 Qubes 全局设置。在 Qube 默认部分中,从模板旁边的下拉列表中选择新模板。按确定。

  • 您的一次性模板以新模板为基础。

    • 如果您只有键盘和鼠标 不是 通过 USB qube 连接,或者 USB qube 是 不是 一个一次性设备,然后关闭所有一次性设备。在应用程序菜单中,转到 Qubes Tools,然后单击 Qube Manager。在 Qube Manager 中,找到您的一次性模板。 (默认情况下,它们以 -dvm 结尾。)右键单击,将鼠标悬停在模板上,然后单击新模板。对每个一次性模板重复此操作。

    • 如果您只有键盘或鼠标 通过 USB qube 连接,并且该 USB qube 一次性模板,那么您必须输入一个特殊命令来关闭所有 qube,将 USB qube 的一次性模板切换到新模板,然后再次启动 USB qube。为了避免被系统锁定,您必须非常小心地输入此命令,不要出现拼写错误并进行正确的替换。

      在应用程序菜单中,单击终端模拟器。键入以下命令,替换为 sys-usb 所基于的一次性模板的名称、新模板的名称以及 USB qube 的名称。除了这些替换之外,请确保完全按照书面形式输入命令。

      qvm-shutdown –等待 –all; qvm-prefs 模板; qvm 启动

      通过替换,您的命令应类似于此示例。 (警告:这只是一个示例。请勿尝试使用它。)

      qvm-shutdown –等待 –all; qvm-prefs fedora-01-dvm 模板 fedora-02; qvm-启动 sys-usb

  • 让您的应用程序 qube 基于新模板。 在 Qube 管理器中,单击模板标题以按模板排序。通过单击第一个,按住 Shift 键,然后单击最后一个,选择基于旧模板的所有 qube。选择多个 qube 后,右键单击其中任何一个,将光标悬停在模板上,然后单击新模板。或者在系统菜单中选择管理 qube 模板,选择使用旧模板的任何 qube,然后使用下拉菜单将其更新为新模板。

  • 更改 default-mgmt-dvm 的模板 如果旧模板用于管理 qube,则应更改模板。这是一个 内部的 qube 默认情况下不会出现在 Qube 管理器中。在系统菜单中选择管理 qubes 模板,您将看到 默认管理 dvm 库贝。将用于此一次性模板的模板更改为新模板。

  • 先进的

    以下部分涵盖与模板相关的高级主题。

    传承与坚持

    每当创建应用程序 qube 时,其父模板的 /home 目录的内容是 不是 复制到子应用程序 qube 的 /home。子应用程序 qube 的 /home 始终独立于其父模板的 /home,这意味着对父模板 /home 的任何后续更改都不会影响子应用程序 qube 的 /home。

    创建应用程序 qube 后,其 /home、/usr/local 或 /rw/config 目录中的任何更改都将在重新启动后保持不变,这意味着存储在其中的任何文件在重新启动应用程序 qube 后仍然可用。应用程序 qubes 中的任何其他目录中的任何更改都不会以这种方式持续存在。如果您想在其他目录中进行更改 如果坚持这种方式,您必须在父模板中进行这些更改。

    Qube Type Inheritance1 Persistence2 template N/A(模板不能基于模板) everything app qube3 /etc/skel to /home; /usr/local.orig 到 /usr/local /rw (包括 /home、/usr/local 和 bind-dirs) 一次性 /rw (包括 /home、/usr/local 和 bind-dirs) 无

    1创建时
    2关机后
    3包括一次性模板

    信任您的模板

    由于该模板用于为您实际执行工作的其他应用程序 qube 创建文件系统,因此这意味着该模板与基于此模板的最受信任的应用程序 qube 一样受信任。换句话说,如果您的模板受到损害,例如因为您安装了一个应用程序,其 安装程序的脚本 是恶意的,那么 全部 您的应用程序 qubes(基于此模板)将继承此妥协。

    有几种方法可以解决这个问题:

    • 仅安装来自受信任来源的软件包 – 例如来自预配置的 Fedora 存储库。所有这些软件包都经过 Fedora 签名,我们预计至少软件包的安装脚本不是恶意的。默认情况下(在防火墙 qube 级别)强制执行此操作,默认模板中不允许任何网络连接,但访问 Fedora 存储库除外。

    • 使用独立程序(见下文)安装不受信任的软件包。

    • 对不同类别的域使用多个模板(见下文),例如,用于创建不太受信任的应用程序 qube 的不太受信任的模板将从不太受信任的供应商获取各种包,而用于更受信任的应用程序 qube 的模板只会获取包来自标准 Fedora 存储库。

    一些常见问题:

    那么,我们为什么要真正信任 Fedora 存储库——它还包含大量可能有错误的第三方软件,对吧?

    就模板的妥协而言,/usr/bin/firefox 是否有错误并且是否可以被利用并不重要。重要的是它是否 安装 脚本(例如 rpm.spec 中的 %post)是否是良性的。模板应该仅用于安装软件包,仅此而已,因此它永远不应该有机会实际运行 /usr/bin/firefox 并从中感染,以防它被破坏。此外,一些更值得信赖的应用程序 qube 会受到防火墙 qube 的网络限制,并且他们不应该担心这个众所周知的 /usr/bin/firefox 可能存在错误且容易受到攻击。

    但为什么信任 Fedora?

    因为我们选择使用 Fedora 作为 Qubes OS 基础的供应商(例如 dom0 软件包和 app qube 软件包)。我们还选择信任其他几个供应商,例如 Xen.org、kernel.org 以及我们在 dom0 中使用其软件的其他一些供应商。我们必须相信 某人 因为我们无法自己从头开始编写所有软件。但是,信任所有 Fedora 软件包都是非恶意的(就安装脚本而言)与信任所有这些软件包都没有错误且不可利用是有很大区别的。我们当然不会假设后者。

    那么,模板是否像 dom0 一样受信任?

    不完全是。 Dom0 的妥协绝对是致命的,它会导致 Game OverTM。但是,模板的妥协仅影响所有应用程序 qube 的子集(如果您使用多个模板或一些独立模板)。此外,如果您的应用程序 qube 网络断开,即使其文件系统可能由于相应的模板泄露而受到损害,攻击者仍然很难真正泄漏应用程序 qube 中被盗的数据。并非不可能(由于 x86 架构上虚拟机之间存在隐蔽通道),但困难且缓慢。

    关于将应用程序 qubes 的根文件系统非持久性视为安全功能的注意事项

    任何基于模板的应用程序 qube 的根文件系统在 qube 重新启动后都不是持久的。换句话说,无论 qube (或在此 qube 中运行的恶意软件)对其根文件系统所做的任何更改,只要重新启动 qube,都会自动丢弃。

    这似乎是 qube 内部使用的一种出色的反恶意软件机制。然而,人们应该小心地将此属性视为保持 qube 免受恶意软件侵害的可靠方法。这是因为,在正常 qube 的情况下,非持久性仅适用于根文件系统,而不适用于用户文件系统(存储 /home、/rw 和 /usr/local),原因很明显。恶意软件,尤其是专门针对 Qubes 编写的恶意软件,可能只能将其挂钩安装在用户主目录文件中。此类挂钩的明显位置示例可能是:.bashrc、包含扩展的 Firefox 配置文件目录,或一些预计用户经常打开的 PDF 或 DOC 文档(假设恶意软件在 PDF 或DOC 阅读器),当然还有许多其他地方,都在用户的主目录中。

    非持久性 rootfs 的优点之一是,在用户的文件系统被系统/应用程序安装和“处理”之前,恶意软件仍然处于非活动状态,理论上这可能允许某些扫描程序(或熟练的用户)可靠地扫描应用程序 qube 感染的迹象。但是,当然,一般来说,找到恶意软件挂钩的问题很困难,因此这可能只适用于某些特殊情况(例如不使用 Firefox 的应用程序 qube,否则将很难扫描 Firefox 配置文件目录可靠地在那里找到恶意软件挂钩)。另请注意,用户文件系统的元数据可能会被恶意软件恶意修改,以便在安装格式错误的文件系统时利用应用程序 qube 内核中的假设错误。然而,在修复假设的错误并应用更新(通过模板更新)后,这些漏洞将自动停止工作(因此感染可能会自动清除),这是 Qubes OS 的一项特殊功能。

    另请注意,一次性 qube 没有持久的用户文件系统,因此它们每次启动时都完全“干净”。请注意,“干净”一词在此上下文中的含义:当然与其模板文件系统相同。

    重要提示

    • qvm-trim-template 在 Qubes 4.0 及更高版本中不再需要或不再可用。所有 qube 都在精简池中创建,并自动处理修剪。无需用户执行任何操作。有关详细信息,请参阅磁盘修剪。

    • RPM 安装的模板是“系统管理的”,因此无法使用 Qubes 的内置备份功能进行备份。为了确保保留您的自定义设置以及“已知良好”备份模板的可用性,您可能希望克隆默认系统模板并将您的克隆用作应用程序 qube 的默认模板。

    • 一些模板以现成的二进制形式提供,但其中一些仅作为源代码提供,可以使用 Qubes Builder 构建。特别是,某些模板“风格”仅以源代码形式提供。模板系统的技术细节请参见模板实现。查看 Qubes Builder 文档以获取有关如何编译它们的说明。

    1736730796
    #模板 #Qubes操作系统
    2025-01-12 22:32:00

    Leave a Reply

    Your email address will not be published. Required fields are marked *