Использование QubesOS для работы с Windows 7

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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


qubes-os


Почему Qubes?


История с окончанием техподдержки Windows 7 и повышающаяся тревожность пользователей привела к необходимости организовать работу этой ОС, учитывая следующие требования:


  • обеспечить применение полноценной активированной Windows 7 с возможностью установки пользователем обновлений и различных приложений (в том числе через Интернет);
  • реализовать полное или избирательное исключение сетевых взаимодействий по условию (режимы автономной работы и фильтрации трафика);
  • предоставить возможность избирательного подключения съемных носителей и устройств.

Такой набор ограничений предполагает явно подготовленного пользователя, поскольку разрешается самостоятельное администрирование, и ограничения связаны не с блокированием его потенциальных действий, а с исключением возможных ошибок или программного деструктивного воздействия. Т.е. внутреннего нарушителя в модели нет.


В поиске решения мы быстро отказались от идеи реализовывать ограничения встроенными или дополнительными средствами Windows, поскольку достаточно сложно эффективно ограничить пользователя с полномочиями администратора, оставляя ему возможность устанавливать приложения.


Следующим вариантом решения была изоляция с помощью виртуализации. Широкоизвестные инструменты для настольной виртуализации (например, такие как virtualbox) плохо приспособлены для решений задач безопасности и перечисленные ограничения придется делать пользователю постоянно переключая или настраивая свойства гостевой виртуальной машины (далее ВМ), что повышает риски ошибок.


В то же время у нас был опыт применения Qubes в качестве настольной системы пользователя, но были сомнения в стабильности работы с гостевой Windows. Было решено проверить актуальную версию Qubes, поскольку поставленные ограничения очень хорошо укладываются в парадигму этой системы, особенно реализация шаблонов виртуальных машин и визуальная интеграция. Далее попробую по возможности кратко рассказать об идеях и инструментарии Qubes, на примере решения поставленной задачи.


Типы виртуализации Xen


В основе Qubes лежит гипервизор Xen, который, минимизирует в себе функции управления ресурсами процессора, памятью и виртуальными машинами. Вся остальная работа с устройствами сосредоточена в dom0 на основе ядра Linux (в Qubes для dom0 используется дистрибутив Fedora).


xen-arch


Xen поддерживает несколько типов виртуализации (я буду приводить примеры для Intel архитектуры, хотя Xen поддерживает и другие):


  • паравиртуализация (PV) — режим виртуализации без использования аппаратной поддержки, напоминает контейнерную виртуализацию, может использоваться для систем c адаптированным ядром (в таком режиме функционирует dom0);
  • полная виртуализация (HVM) — в таком режиме для ресурсов процессора используется аппаратная поддержка, а все остальное оборудование эмулируется средствами QEMU. Это наиболее универсальный способ запуска различных ОС;
  • паравиртуализация оборудования (PVH — ParaVirtualized Hardware) — режим виртуализации с использованием аппаратной поддержки когда для работы с оборудованием ядро гостевой системы использует драйверы, адаптированные к возможностям гипервизора (например, разделяемой памяти), снимая необходимость в эмуляции QEMU и повышая производительность ввода-вывода. Ядро Linux начиная с 4.11 может работать в таком режиме.

xen-guestmodes


Начиная с версии Qubes 4.0 по соображениям безопасности идет отказ от использования режима паравиртуализации (в том числе в связи с известными уязвимостями архитектуры Intel, которые частично снимаются использованием полноценной виртуализации), по умолчанию используется режим PVH.


При использовании эмуляции (режим HVM) запуск QEMU осуществляется в изолированной ВМ называемой stubdomain, тем самым снижая риски эксплуатации потенциальных ошибок в реализации (проект QEMU содержит много кода, в том числе для совместимости).
Такой режим в нашем случае следует использовать для Windows.


Служебные виртуальные машины


В архитектуре безопасности Qubes одной из ключевых возможностей гипервизора является передача PCI-устройств в гостевое окружение. Исключение оборудования позволяет изолировать хостовую часть системы от внешних атак. Xen поддерживает это для PV и HVM режимов, во втором случае для этого требуется поддержка IOMMU (Intel VT-d) — аппаратного управление памятью для виртуализируемых устройств.


Таким образом создаются несколько системных виртуальных машин:


  • sys-net, которой передаются сетевые устройства и которая используется в качестве моста для других ВМ, например, реализующих функции межсетевого экрана или клиента сети VPN;
  • sys-usb, которой передаются USB и другие контроллеры периферийных устройств;
  • sys-firewall, которая не использует устройства, а работает как межсетевой экран для подключаемых ВМ.

Для работы с USB устройствами используются прокси-сервисы, которые обеспечивают в том числе:


  • для класса устройств HID (human interface device) передачу команд в dom0;
  • для съемных носителей перенаправление томов устройств в другие ВМ (за исключением dom0);
  • перенаправление непосредственно USB устройства (используется USBIP и средства интеграции).

В такой конфигурации успешная атака через сетевой стек или подключаемые устройства может приводить к компрометации только запущенной служебной ВМ, а не всей системы в целом. А после перезапуска служебной ВМ она будет загружена в исходном состоянии.


Инструменты интеграции ВМ


Есть несколько способов взаимодействия с рабочим столом виртуальной машины — установка приложений в гостевую систему или эмуляция видео средствами виртуализации. В качестве гостевых приложений могут выступать различные универсальные средства удаленного доступа (RDP, VNC, Spice и т.п.) или адаптированные к конкретному гипервизору (такой инструментаций обычно называют гостевыми утилитами). Может применяться и смешанный вариант, когда гипервизор эмулирует ввод-вывод для гостевой системы, а снаружи предоставляет возможность использовать протокол, комбинирующий ввод-вывод, например, как у Spice. При этом средства удаленного доступа обычно оптимизируют изображение, поскольку предполагают работу через сеть, что не в лучшую сторону влияет на качество картинки.


Qubes предоставляет собственные средства для интеграции ВМ. В первую очередь это графическая подсистема — окна из различных ВМ отображаются на едином рабочем столе с собственным цветовым обрамлением. В целом средства интеграции основаны на возможностях гипервизора — разделяемой памяти (Xen grant table), средствах уведомления (Xen event channel), разделяемом хранилище xenstore и протоколе коммуникации vchan. С их помощью реализуются базовые компоненты qrexec и qubes-rpc, и прикладные сервисы — перенаправление звука или USB, передача файлов или содержимого буфера обмена, выполнение команд и запуск приложений. Есть возможность устанавливать политики, позволяющей ограничить доступные на ВМ сервисы. На рисунке ниже пример процедуры инициализации взаимодействия двух ВМ.


qubes-rpc


Таким образом работа в ВМ производится без использования сети, что позволяет полноценно использовать автономные ВМ для избежания утечки информации. Например, так реализуется разделение криптографических операций (PGP/SSH), когда закрытые ключи используются в изолированных ВМ и не выходят за их пределы.


Шаблоны, прикладные и одноразовые ВМ


Вся работа пользователя в Qubes производится в виртуальных машинах. Основная хостовая система используется для управления их работой и визуализации. ОС устанавливается вместе с базовым набором виртуальных машин на основе шаблонов (TemplateVM). Такой шаблон представляет собой Linux ВМ на основе дистрибутива Fedora или Debian, с установленными и настроенными средствами интеграции, выделенными системными и пользовательскими разделами. Установка и обновление программного обеспечения производится штатным менеджером пакетов (dnf или apt) из настроенных репозиториев с обязательной проверкой цифровой подписи (GnuPG). Назначение таких ВМ это обеспечение доверия к прикладным ВМ, запускаемым на их основе.


Прикладная ВМ (AppVM) при старте использует снимок системного раздела соответствующего шаблона ВМ, а после завершения удаляет этот снимок без сохранения изменений. Необходимые пользователю данные хранятся в уникальном для каждой прикладной ВМ пользовательском разделе, который монтируется в домашний каталог.


qubes-template


Полезным с точки зрения безопасности может быть использование одноразовых ВМ (disposibleVM). Такая ВМ создается на основе шаблона в момент старта и запускается с одной целью — выполнения одного приложения, завершая работу после его закрытия. Одноразовые ВМ могут использоваться для открытия подозрительных файлов, содержимое которых может приводить к эксплуатации уязвимостей конкретных приложений. Возможность запуска одноразовой ВМ интегрирована в файловый менеджер (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, основанная на идее изоляции через виртуализацию, помогает использовать эти и другие механизмы для обеспечения безопасности. Со стороны многие видят в Qubes в первую очередь стремление к анонимности, но это полезная система как для инженеров, часто совмещающих проекты, инфраструктуры и секреты доступа к ним, так и для исследователей безопасности. Разделение приложений, данных и формализация их взаимодействия это начальные шаги анализа угроз и проектирования системы защиты. Такое разделение помогает структурировать информацию и снизить вероятность ошибки из-за человеческого фактора — спешки, усталости и т.п.


В настоящее время основной упор в разработке идет на расширение функциональности Linux сред. Готовится к релизу версия 4.1, которая будет основана на Fedora 31 и включать актуальные версии ключевых компонент Xen и Libvirt. Стоит отметить, что Qubes создается профессионалами в области информационной безопасности, которые всегда оперативно выпускают обновления в случае выявления новых угроз или ошибок.


Послесловие


Одна из развиваемых нами экспериментальных возможностей позволяет создавать ВМ с поддержкой гостевого доступа к GPU на основе технологии Intel GVT-g, что позволяет использовать возможности графического адаптера и значительно расширить область применения системы. На момент написания статьи этот функционал работает для тестовых сборок Qubes 4.1, и доступен на github.

Источник: https://habr.com/ru/post/488234/


Интересные статьи

Интересные статьи

Прим. перев.: месяц назад компания Kinvolk выпустила свой интерфейс для управления Kubernetes-кластерами. Новый Open Source-проект, пополнив уже немалочисленные ряды подобных решений, соч...
С ЭВМ (слово компьютер тогда не было в ходу) я столкнулся в году 1977, просто курс такой был на мехмате. Fortran IV, коды М-20, Algol-60, PL/1, сразу после универа попал в программисты (системные...
Недавно мы поделились с Вами материалом о том, как работает Netflix, теперь пришло время рассказать о том, как работается в одной из крупнейших IT-компаний мира. Для этих целей мы расшифровали ин...
В предыдущих сериях Не так давно я рассказал о двух уязвимостях Стима: CVE-2019-14743 и CVE-2019-15316. Там была целая история о том, как я пытался зарепортить их, у меня не получалось, меня заб...
В моей компьютерной реальности Windows 3.x продержалась недолго, всего пару лет, и была моментально забыта после появления Windows 95. Но и в первой половине девяностых она никогда не была основн...