使用 QubesOS 与 Windows 7 配合使用

Habré上专门介绍Qubes操作系统的文章并不多,而且我看过的也没有太多描述应用体验的内容。 下面,我希望通过使用 Qubes 作为保护(针对)Windows 环境的手段的示例来纠正这个问题,同时估计该系统的俄语用户数量。

使用 QubesOS 与 Windows 7 配合使用

为什么是库布斯?

Windows 7 技术支持结束和用户日益焦虑的故事导致需要组织该操作系统的工作,并考虑到以下要求:

  • 确保使用完全激活的 Windows 7,并且用户能够安装更新和各种应用程序(包括通过互联网);
  • 根据条件(自主运行和流量过滤模式)实现完全或选择性排除网络交互;
  • 提供有选择地连接可移动媒体和设备的能力。

这组限制以用户做好充分准备为前提,因为允许独立管理,并且这些限制与阻止其潜在操作无关,而是与排除可能的错误或破坏性软件效果有关。 那些。 模型中不存在内部违规者。

在寻找解决方案的过程中,我们很快放弃了使用内置或附加 Windows 工具实施限制的想法,因为有效限制具有管理员权限的用户,使其无法安装应用程序是相当困难的。

下一个解决方案是使用虚拟化进行隔离。 众所周知的桌面虚拟化工具(例如virtualbox)不太适合解决安全问题,并且所列出的限制必须由用户通过不断切换或调整来宾虚拟机(以下简称“虚拟机”)的属性来完成。 VM),这增加了出错的风险。

同时,我们有使用 Qubes 作为用户桌面系统的经验,但对使用来宾 Windows 的稳定性存有疑问。 决定检查 Qubes 的当前版本,因为所述限制非常适合该系统的范例,特别是虚拟机模板和可视化集成的实现。 接下来我尝试以解决问题的例子来简单谈谈Qubes的思想和工具。

Xen 虚拟化的类型

Qubes基于Xen虚拟机管理程序,最大限度地减少了管理处理器资源、内存和虚拟机的功能。 设备的所有其他工作都集中在基于 Linux 内核的 dom0 中(dom0 的 Qubes 使用 Fedora 发行版)。

使用 QubesOS 与 Windows 7 配合使用

Xen 支持多种类型的虚拟化(我将给出 Intel 架构的示例,尽管 Xen 支持其他类型):

  • 半虚拟化(PV)——一种不使用硬件支持的虚拟化模式,让人想起容器虚拟化,可用于具有适配内核的系统(dom0 在此模式下运行);
  • 完全虚拟化 (HVM) - 在此模式下,硬件支持用于处理器资源,所有其他设备均使用 QEMU 进行模拟。 这是运行各种操作系统最通用的方式;
  • 硬件半虚拟化(PVH - ParaVirtualized Hardware) - 一种使用硬件支持的虚拟化模式,为了与硬件一起工作,来宾系统内核使用适合虚拟机管理程序功能(例如共享内存)的驱动程序,从而无需 QEMU 模拟并提高 I/O 性能。 从4.11开始的Linux内核可以工作在该模式下。

使用 QubesOS 与 Windows 7 配合使用

从 Qubes 4.0 开始,出于安全原因,放弃使用半虚拟化模式(包括由于 Intel 架构中的已知漏洞,通过使用全虚拟化可以部分缓解);默认使用 PVH 模式。

使用仿真(HVM 模式)时,QEMU 在称为存根域的隔离 VM 中启动,从而降低了利用实现中潜在错误的风险(QEMU 项目包含大量代码,包括兼容性代码)。
在我们的例子中,这种模式应该用于 Windows。

服务虚拟机

在 Qubes 安全架构中,虚拟机管理程序的关键功能之一是将 PCI 设备传输到来宾环境。 硬件排除允许您将系统的主机部分与外部攻击隔离。 Xen 支持 PV 和 HVM 模式,在第二种情况下,它需要支持 IOMMU (Intel VT-d) - 虚拟化设备的硬件内存管理。

这将创建多个系统虚拟机:

  • sys-net,网络设备转移到该网络,并用作其他虚拟机的桥梁,例如实现防火墙或VPN客户端功能的虚拟机;
  • sys-usb,USB和其他外围设备控制器传输到此;
  • sys-firewall,它不使用设备,但充当连接的虚拟机的防火墙。

为了使用 USB 设备,需要使用代理服务,该服务提供以下功能:

  • 对于HID(人机接口设备)设备类,向dom0发送命令;
  • 对于可移动媒体,将设备卷重定向到其他虚拟机(dom0 除外);
  • 直接重定向到 USB 设备(使用 USBIP 和集成工具)。

在这种配置中,通过网络堆栈或连接的设备进行的成功攻击可能会导致仅影响正在运行的服务虚拟机,而不是整个系统。 并且重新启动服务VM后,它将按原始状态加载。

虚拟机集成工具

有多种方法可以与虚拟机桌面进行交互 - 在来宾系统中安装应用程序或使用虚拟化工具模拟视频。 访客应用程序可以是各种通用远程访问工具(RDP、VNC、Spice 等)或适用于特定管理程序(此类工具通常称为访客实用程序)。 当管理程序模拟来宾系统的 I/O 并在外部提供使用组合 I/O 的协议(例如 Spice)时,也可以使用混合选项。 同时,远程访问工具通常会优化图像,因为它们涉及通过网络进行工作,这不会对图像质量产生积极影响。

Qubes 提供了自己的 VM 集成工具。 首先,这是一个图形子系统 - 来自不同虚拟机的窗口以自己的颜色框架显示在单个桌面上。 一般来说,集成工具基于虚拟机管理程序的功能——共享内存(Xen 授权表)、通知工具(Xen 事件通道)、共享存储 xenstore 和 vchan 通信协议。 在他们的帮助下,实现了基本组件 qrexec 和 qubes-rpc 以及应用程序服务 - 音频或 USB 重定向、传输文件或剪贴板内容、执行命令和启动应用程序。 可以设置策略来限制虚拟机上可用的服务。 下图是初始化两个VM交互的过程示例。

使用 QubesOS 与 Windows 7 配合使用

因此,虚拟机中的工作无需使用网络即可进行,从而可以充分利用自治虚拟机来避免信息泄漏。 例如,当私钥在隔离的虚拟机中使用并且不超越它们时,这就是实现加密操作分离(PGP/SSH)的方式。

模板、应用程序和一次性虚拟机

Qubes 中的所有用户工作都在虚拟机中完成。 主主机系统用于控制和可视化它们。 该操作系统与一组基本的基于模板的虚拟机 (TemplateVM) 一起安装。 该模板是基于 Fedora 或 Debian 发行版的 Linux VM,已安装和配置集成工具以及专用系统和用户分区。 软件的安装和更新由标准包管理器(dnf 或 apt)从具有强制数字签名验证(GnuPG)的配置存储库执行。 此类 VM 的目的是确保对其基础上启动的应用程序 VM 的信任。

在启动时,应用程序虚拟机 (AppVM) 使用相应虚拟机模板的系统分区的快照,并在完成后删除该快照而不保存更改。 用户所需的数据存储在每个应用VM唯一的用户分区中,该用户分区挂载在主目录中。

使用 QubesOS 与 Windows 7 配合使用

从安全角度来看,使用一次性虚拟机 (disposableVM) 非常有用。 这样的虚拟机是在启动时根据模板创建的,启动时只有一个目的——执行一个应用程序,关闭后完成工作。 一次性虚拟机可用于打开可疑文件,其内容可能导致利用特定应用程序漏洞。 运行一次性虚拟机的功能已集成到文件管理器 (Nautilus) 和电子邮件客户端 (Thunderbird) 中。

通过将用户配置文件移动到单独的部分,Windows VM 还可用于创建模板和一次性 VM。 在我们的版本中,用户将使用这样的模板来执行管理任务和应用程序安装。 根据该模板,将创建多个应用程序虚拟机 - 对网络的访问权限有限(标准系统防火墙功能),并且根本无法访问网络(不创建虚拟网络设备)。 模板中安装的所有更改和应用程序都可以在这些虚拟机中运行,即使引入了书签程序,它们也不会具有网络访问权限。

为Windows而战

上述功能是 Qubes 的基础,并且工作相当稳定;困难始于 Windows。 要集成 Windows,您必须使用一组来宾工具 Qubes Windows Tools (QWT),其中包括用于 Xen 的驱动程序、qvideo 驱动程序和一组用于信息交换的实用程序(文件传输、剪贴板)。 安装和配置过程在项目网站上有详细记录,因此我们将分享我们的应用经验。

主要困难本质上是缺乏对开发工具的支持。 关键开发人员 (QWT) 似乎无法使用,Windows 集成项目正在等待首席开发人员。 因此,首先有必要评估其绩效,并了解必要时独立支持其的可能性。 最难开发和调试的是图形驱动程序,它模拟视频适配器和显示器在共享内存中生成图像,使您可以直接在主机系统窗口中显示整个桌面或应用程序窗口。 在分析驱动程序的运行过程中,我们对Linux环境下的汇编代码进行了修改,并制定了两个Windows客户系统之间的调试方案。 在交叉构建阶段,我们进行了一些更改,这些更改为我们简化了事情,主要是在实用程序的“静默”安装方面,并且还消除了长时间在虚拟机中工作时烦人的性能下降。 我们在单独的报告中介绍了工作结果 储存库,因此不会持续很长时间 鼓舞人心的 Qubes 首席开发人员。

就客户系统稳定性而言,最关键的阶段是Windows的启动,此时您可以看到熟悉的蓝屏(或者根本看不到)。 对于大多数已识别的错误,有多种解决方法 - 消除 Xen 块设备驱动程序、禁用 VM 内存平衡、修复网络设置以及最小化内核数量。 我们的访客工具可在完全更新的 Windows 7 和 Windows 10(qvideo 除外)上构建安装和运行。

从真实环境迁移到虚拟环境时,如果使用预装的 OEM 版本,激活 Windows 时会出现问题。 此类系统使用基于设备 UEFI 中指定的许可证的激活。 为了正确处理激活,有必要将主机系统的整个 ACPI 部分之一(SLIC 表)转换为来宾系统,并稍微编辑其他部分,注册制造商。 Xen 允许您自定义附加表的 ACPI 内容,但无需修改主表。 来自类似 OpenXT 项目的补丁(适用于 Qubes)帮助解决了这个问题。 这些修复似乎不仅对我们有用,而且已被翻译到主 Qubes 存储库和 Libvirt 库中。

Windows 集成工具的明显缺点包括缺乏对音频、USB 设备的支持以及媒体处理的复杂性,因为没有对 GPU 的硬件支持。 但上述情况并不妨碍使用虚拟机处理办公文档,也不妨碍启动特定的企业应用程序。

通过创建应用程序虚拟机的适当配置,满足了创建 Windows VM 模板后切换到无网络或有限网络操作模式的要求,并且标准操作系统工具还解决了选择性连接可移动媒体的可能性 - 连接时,它们在系统 VM sys-usb 中可用,从那里可以将它们“转发”到所需的 VM。 用户的桌面看起来像这样。

使用 QubesOS 与 Windows 7 配合使用

该系统的最终版本得到了用户的积极接受(在这种全面的解决方案允许的范围内),并且该系统的标准工具使得将应用程序扩展到用户的移动工作站(通过 VPN 访问)成为可能。

取而代之的是结论

一般来说,虚拟化可以让您降低使用没有支持的 Windows 系统的风险 - 它不会强制与新硬件兼容,它允许您排除或控制通过网络或连接的设备对系统的访问,并且它允许您实施一次性启动环境。

基于通过虚拟化进行隔离的思想,Qubes OS 可以帮助您利用这些和其他机制来实现安全。 从外部来看,许多人主要将 Qubes 视为对匿名的渴望,但对于经常处理项目、基础设施和秘密来访问它们的工程师和安全研究人员来说,它都是一个有用的系统。 应用程序、数据的分离及其交互的形式化是威胁分析和安全系统设计的初始步骤。 这种分离有助于构建信息并减少由于人为因素(仓促、疲劳等)而出现错误的可能性。

目前,开发的重点是扩展Linux环境的功能。 4.1 版本正在准备发布,它将基于 Fedora 31,并包括关键组件 Xen 和 Libvirt 的当前版本。 值得注意的是,Qubes 是由信息安全专业人员创建的,如果发现新的威胁或错误,他们总是会及时发布更新。

后记

我们正在开发的实验功能之一使我们能够创建支持来宾访问基于 Intel GVT-g 技术的 GPU 的虚拟机,这使我们能够使用图形适配器的功能并显着扩展系统的范围。 在撰写本文时,此功能适用于 Qubes 4.1 的测试版本,并且可在 github上.

来源: habr.com

添加评论