На Хабре не так много статей, посвященных операционной системе Qubes, а те, что я видел мало описывают опыт применения. Под катом надеюсь это исправить на примере использования Qubes в качестве средства защиты (от) среды Windows и, попутно, оценить количество русскоговорящих пользователей системы.

为什么是库布斯?
История с окончанием техподдержки Windows 7 и повышающаяся тревожность пользователей привела к необходимости организовать работу этой ОС, учитывая следующие требования:
- обеспечить применение полноценной активированной Windows 7 с возможностью установки пользователем обновлений и различных приложений (в том числе через Интернет);
- 根据条件(自主运行和流量过滤模式)实现完全或选择性排除网络交互;
- 提供有选择地连接可移动媒体和设备的能力。
这组限制以用户做好充分准备为前提,因为允许独立管理,并且这些限制与阻止其潜在操作无关,而是与排除可能的错误或破坏性软件效果有关。 那些。 模型中不存在内部违规者。
В поиске решения мы быстро отказались от идеи реализовывать ограничения встроенными или дополнительными средствами Windows, поскольку достаточно сложно эффективно ограничить пользователя с полномочиями администратора, оставляя ему возможность устанавливать приложения.
下一个解决方案是使用虚拟化进行隔离。 众所周知的桌面虚拟化工具(例如virtualbox)不太适合解决安全问题,并且所列出的限制必须由用户通过不断切换或调整来宾虚拟机(以下简称“虚拟机”)的属性来完成。 VM),这增加了出错的风险。
В то же время у нас был опыт применения Qubes в качестве настольной системы пользователя, но были сомнения в стабильности работы с гостевой Windows. Было решено проверить актуальную версию Qubes, поскольку поставленные ограничения очень хорошо укладываются в парадигму этой системы, особенно реализация шаблонов виртуальных машин и визуальная интеграция. Далее попробую по возможности кратко рассказать об идеях и инструментарии Qubes, на примере решения поставленной задачи.
Xen 虚拟化的类型
В основе Qubes лежит гипервизор Xen, который, минимизирует в себе функции управления ресурсами процессора, памятью и виртуальными машинами. Вся остальная работа с устройствами сосредоточена в dom0 на основе ядра Linux (в Qubes для dom0 используется дистрибутив Fedora).

Xen 支持多种类型的虚拟化(我将给出 Intel 架构的示例,尽管 Xen 支持其他类型):
- 半虚拟化(PV)——一种不使用硬件支持的虚拟化模式,让人想起容器虚拟化,可用于具有适配内核的系统(dom0 在此模式下运行);
- 完全虚拟化 (HVM) - 在此模式下,硬件支持用于处理器资源,所有其他设备均使用 QEMU 进行模拟。 这是运行各种操作系统最通用的方式;
- паравиртуализация оборудования (PVH — ParaVirtualized Hardware) — режим виртуализации с использованием аппаратной поддержки когда для работы с оборудованием ядро гостевой системы использует драйверы, адаптированные к возможностям гипервизора (например, разделяемой памяти), снимая необходимость в эмуляции QEMU и повышая производительность ввода-вывода. Ядро Linux начиная с 4.11 может работать в таком режиме.

从 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交互的过程示例。

因此,虚拟机中的工作无需使用网络即可进行,从而可以充分利用自治虚拟机来避免信息泄漏。 例如,当私钥在隔离的虚拟机中使用并且不超越它们时,这就是实现加密操作分离(PGP/SSH)的方式。
模板、应用程序和一次性虚拟机
Вся работа пользователя в Qubes производится в виртуальных машинах. Основная хостовая система используется для управления их работой и визуализации. ОС устанавливается вместе с базовым набором виртуальных машин на основе шаблонов (TemplateVM). Такой шаблон представляет собой Linux ВМ на основе дистрибутива Fedora или Debian, с установленными и настроенными средствами интеграции, выделенными системными и пользовательскими разделами. Установка и обновление программного обеспечения производится штатным менеджером пакетов (dnf или apt) из настроенных репозиториев с обязательной проверкой цифровой подписи (GnuPG). Назначение таких ВМ это обеспечение доверия к прикладным ВМ, запускаемым на их основе.
在启动时,应用程序虚拟机 (AppVM) 使用相应虚拟机模板的系统分区的快照,并在完成后删除该快照而不保存更改。 用户所需的数据存储在每个应用VM唯一的用户分区中,该用户分区挂载在主目录中。

从安全角度来看,使用一次性虚拟机 (disposableVM) 非常有用。 这样的虚拟机是在启动时根据模板创建的,启动时只有一个目的——执行一个应用程序,关闭后完成工作。 一次性虚拟机可用于打开可疑文件,其内容可能导致利用特定应用程序漏洞。 运行一次性虚拟机的功能已集成到文件管理器 (Nautilus) 和电子邮件客户端 (Thunderbird) 中。
Windows ВМ также может быть использована для создания шаблона и одноразовой ВМ, для этого профиль пользователя переносится в отдельный раздел. В нашем варианте такой шаблон будет использоваться пользователем для задач администрирования и установки приложений. На основе шаблона будут созданы несколько прикладных ВМ — с ограниченным доступом к сети (штатные возможности sys-firewall) и без доступа к сети вообще (не создается виртуальное сетевое устройство). Для работы в этих ВМ будут доступны все изменения и приложения, устанавливаемые в шаблоне и даже в случае внедрения программ-закладок, им будет недоступен сетевой доступ для компрометации.
Борьба за Windows
Описанные выше возможности являются основой Qubes и работают вполне стабильно, сложности начинаются с Windows. Для интеграции Windows необходимо использовать набор гостевых инструментов Qubes Windows Tools (QWT), включающий в себя драйверы для работы с Xen, драйвер qvideo и набор утилит для информационного обмена (файловый прием-передача, буфер обмена). Процесс установки и настройки подробно документирован на сайте проекта, поэтому поделимся нашим опытом применения.
Основную сложность составляет по сути отсутствие поддержки разработанного инструментария. Ключевые разработчики (QWT), по всей видимости, недоступны и проект интеграции с Windows находится в ожидании ведущего разработчика. Поэтому в первую очередь необходимо было оценить работоспособность и составить понимание о возможности его поддержки при необходимости самостоятельно. Наиболее сложным для разработки и отладки является графический драйвер, который эмулирует видеоадаптер и дисплей для формирования изображения в разделяемой памяти, позволяя отображать весь рабочий стол или непосредственно окно приложения в окне хостовой системы. В ходе анализа работы драйвера мы адаптировали код для сборки в окружении Linux и отработали схему отладки между двумя гостевыми Windows системами. На этапе кроссбилда провели несколько упрощающих для нас изменений в основном в части "тихой" установки утилит, а также устранили назойливую деградацию производительности при длительной работе в ВМ. Результаты работы мы оформили в отдельном ,因此不会持续很长时间 Qubes 首席开发人员。
Наиболее критичным этапом в плане стабильности гостевой системы является запуск Windows, здесь можно увидеть знакомый синий экран (или даже не увидеть). Для большинства выявленных ошибок находились различные варианты обхода — отказ от Xen драйверов блочных устройств, оключение балансировки памяти ВМ, фиксация сетевых настроек и минимизация количества ядер. Наша сборка гостевых средств устанавливается и работает на полностью обновленной Windows 7和 Windows 10 (за исключением qvideo).
При переходе из реальной среды в виртуальную возникает проблема с активацией Windows в случае использования предустановленных OEM версий. Такие системы используют активацию на основе лицензий, прописанных в UEFI устройства. Для корректной отработки активации необходимо транслировать в гостевую систему один из разделов ACPI хостовой системы целиком (SLIC table) и немного править другие, прописывая производителя. Xen позволяет настраивать содержимое ACPI дополнительных таблиц, но без модификации основных. С решением помог патч от похожего проекта OpenXT, который был адаптирован для Qubes. Исправления показались полезными не только нам и были транслированы в основной репозиторий Qubes и библиотеку Libvirt.
Очевидными недостатками средств интеграции Windows следует назвать отсутствие поддержки звука, USB-устройств и сложность работы с медиа, поскольку нет аппаратной поддержки GPU. Но перечисленное не мешает использованию ВМ для работы с офисными документами, не препятствует запуску специфичных корпоративных приложений.
Требование переключения в режим работы без сети или с ограниченной сетью после создания шаблона Windows ВМ выполнялось созданием соответствующих конфигураций прикладных ВМ, а возможность избирательного подключения съемных носителей также решалась штатными средствами ОС — при подключении они доступны в системной ВМ sys-usb, откуда могут быть "проброшены" к необходимой ВМ. Рабочий стол пользователя выглядит приблизительно так.

该系统的最终版本得到了用户的积极接受(在这种全面的解决方案允许的范围内),并且该系统的标准工具使得将应用程序扩展到用户的移动工作站(通过 VPN 访问)成为可能。
取而代之的是结论
Виртуализация в целом позволяет снижать риски использования Windows систем, оставленных без поддержки — не принуждает к обеспечению совместимости с новыми аппаратными средствами, позволяет исключать или контролировать доступ к системе по сети или посредством подключаемых устройств, позволяет реализовать среду для одноразового запуска.
基于通过虚拟化进行隔离的思想,Qubes OS 可以帮助您利用这些和其他机制来实现安全。 从外部来看,许多人主要将 Qubes 视为对匿名的渴望,但对于经常处理项目、基础设施和秘密来访问它们的工程师和安全研究人员来说,它都是一个有用的系统。 应用程序、数据的分离及其交互的形式化是威胁分析和安全系统设计的初始步骤。 这种分离有助于构建信息并减少由于人为因素(仓促、疲劳等)而出现错误的可能性。
В настоящее время основной упор в разработке идет на расширение функциональности Linux сред. Готовится к релизу версия 4.1, которая будет основана на Fedora 31 и включать актуальные версии ключевых компонент Xen и Libvirt. Стоит отметить, что Qubes создается профессионалами в области информационной безопасности, которые всегда оперативно выпускают обновления в случае выявления новых угроз или ошибок.
后记
我们正在开发的实验功能之一使我们能够创建支持来宾访问基于 Intel GVT-g 技术的 GPU 的虚拟机,这使我们能够使用图形适配器的功能并显着扩展系统的范围。 在撰写本文时,此功能适用于 Qubes 4.1 的测试版本,并且可在 .
来源: habr.com
