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

Zakaj Qubes?
История с окончанием техподдержки Windows 7 и повышающаяся тревожность пользователей привела к необходимости организовать работу этой ОС, учитывая следующие требования:
- обеспечить применение полноценной активированной Windows 7 с возможностью установки пользователем обновлений и различных приложений (в том числе через Интернет);
- izvajati popolno ali selektivno izključitev omrežnih interakcij na podlagi pogojev (avtonomno delovanje in načini filtriranja prometa);
- omogočajo selektivno povezovanje odstranljivih medijev in naprav.
Ta sklop omejitev očitno predpostavlja usposobljenega uporabnika, saj je dovoljeno neodvisno upravljanje, omejitve pa niso namenjene blokiranju njihovih morebitnih dejanj, temveč odpravljanju morebitnih napak ali uničujočih vplivov programske opreme. Z drugimi besedami, v modelu ni notranjega napadalca.
В поиске решения мы быстро отказались от идеи реализовывать ограничения встроенными или дополнительными средствами Windows, поскольку достаточно сложно эффективно ограничить пользователя с полномочиями администратора, оставляя ему возможность устанавливать приложения.
Naslednja rešitev je bila izolacija z virtualizacijo. Znana orodja za virtualizacijo namizja (kot je VirtualBox) so slabo prilagojena varnostnim vprašanjem, omenjene omejitve pa od uporabnika zahtevajo nenehno preklapljanje ali prilagajanje lastnosti gostujočega virtualnega stroja (VM), kar povečuje tveganje za napake.
В то же время у нас был опыт применения Qubes в качестве настольной системы пользователя, но были сомнения в стабильности работы с гостевой Windows. Было решено проверить актуальную версию Qubes, поскольку поставленные ограничения очень хорошо укладываются в парадигму этой системы, особенно реализация шаблонов виртуальных машин и визуальная интеграция. Далее попробую по возможности кратко рассказать об идеях и инструментарии Qubes, на примере решения поставленной задачи.
Vrste virtualizacije Xen
В основе Qubes лежит гипервизор Xen, который, минимизирует в себе функции управления ресурсами процессора, памятью и виртуальными машинами. Вся остальная работа с устройствами сосредоточена в dom0 на основе ядра Linux (в Qubes для dom0 используется дистрибутив Fedora).

Xen podpira več vrst virtualizacije (navedel bom primere za Intelovo arhitekturo, čeprav Xen podpira tudi druge):
- paravirtualizacija (PV) je način virtualizacije brez uporabe strojne podpore, podoben virtualizaciji vsebnikov, in se lahko uporablja za sisteme s prilagojenim jedrom (dom0 deluje v tem načinu);
- Popolna virtualizacija (HVM) – v tem načinu se za procesorske vire uporablja strojna podpora, medtem ko se vsa ostala strojna oprema emulira z uporabo QEMU. To je najbolj univerzalen način za zagon različnih operacijskih sistemov;
- паравиртуализация оборудования (PVH — ParaVirtualized Hardware) — режим виртуализации с использованием аппаратной поддержки когда для работы с оборудованием ядро гостевой системы использует драйверы, адаптированные к возможностям гипервизора (например, разделяемой памяти), снимая необходимость в эмуляции QEMU и повышая производительность ввода-вывода. Ядро Linux начиная с 4.11 может работать в таком режиме.

Od različice Qubes 4.0 naprej se zaradi varnostnih razlogov opušča uporaba paravirtualizacijskega načina (tudi zaradi znanih ranljivosti v Intelovi arhitekturi, ki jih delno odpravimo z uporabo popolne virtualizacije); privzeto se uporablja način PVH.
Pri uporabi emulacije (način HVM) se QEMU izvaja v izoliranem virtualnem stroju, imenovanem stubdomain, s čimer se zmanjša tveganje izkoriščanja morebitnih napak v implementaciji (projekt QEMU vsebuje veliko kode, vključno s kodo za združljivost).
Такой режим в нашем случае следует использовать для Windows.
Storitve virtualnih strojev
V varnostni arhitekturi Qubes je ena ključnih zmogljivosti hipervizorja izključitev naprav PCI iz gostujočega okolja. Ta izključitev strojne opreme izolira gostiteljski sistem pred zunanjimi napadi. Xen to podpira tako za način PV kot za način HVM, čeprav slednji zahteva podporo za IOMMU (Intel VT-d) – upravljanje pomnilnika na osnovi strojne opreme za virtualizirane naprave.
Na ta način se ustvari več sistemskih virtualnih strojev:
- sys-net, ki se uporablja za prenos omrežnih naprav in kot most za druge virtualne stroje, na primer tiste, ki izvajajo požarni zid ali funkcije odjemalca VPN;
- sys-usb, ki upravlja USB in druge krmilnike perifernih naprav;
- sys-firewall, ki ne uporablja naprav, ampak deluje kot požarni zid za povezane virtualne računalnike.
Za delo z napravami USB se uporabljajo posredniške storitve, ki med drugim omogočajo:
- za naprave razreda HID (naprava za človeški vmesnik), ki pošiljajo ukaze domu0;
- za odstranljive medije, preusmeritev nosilcev naprav na druge virtualne računalnike (razen dom0);
- neposredna preusmeritev naprave USB (z uporabo USBIP in orodij za integracijo).
V tej konfiguraciji lahko uspešen napad prek omrežnega sklada ali povezanih naprav ogrozi le delujoči servisni navidezni stroj, ne pa celotnega sistema. Po ponovnem zagonu servisnega navideznega stroja se bo ta zagnal v prvotnem stanju.
Orodja za integracijo virtualnih strojev
Obstaja več načinov za interakcijo z namizjem virtualnega stroja: namestitev aplikacij v gostujoči sistem ali emulacija videa z orodji za virtualizacijo. Gostujoče aplikacije so lahko različna univerzalna orodja za oddaljeni dostop (RDP, VNC, Spice itd.) ali orodja, prilagojena določenemu hipervizorju (takšna orodja se običajno imenujejo pripomočki za goste). Uporabi se lahko tudi mešani pristop, kjer hipervizor emulira V/I za gostujoči sistem in zunanje zagotavlja možnost uporabe protokola, ki združuje V/I, kot je Spice. V tem primeru orodja za oddaljeni dostop običajno optimizirajo prikaz, saj zahtevajo dostop do omrežja, kar negativno vpliva na kakovost slike.
Qubes ponuja izvorna orodja za integracijo navideznih strojev (VM). To vključuje predvsem grafični podsistem – okna iz različnih VM so prikazana na enem namizju z lastno barvno shemo. Orodja za integracijo temeljijo na zmogljivostih hipervizorja: skupni pomnilnik (tabela dodelitev Xen), orodja za obveščanje (kanal dogodkov Xen), skupno shranjevanje (xenstore) in komunikacijski protokol vchan. Ta orodja izvajajo ključne komponente qrexec in qubes-rpc ter aplikacijske storitve, kot so preusmeritev zvoka ali USB-ja, prenos datotek ali odložišča, izvajanje ukazov in zagon aplikacij. Pravilnike je mogoče nastaviti tako, da omejijo storitve, ki so na voljo na VM-ju. Spodnja slika prikazuje primer postopka inicializacije za dva VM-ja.

Na ta način se operacije virtualnih strojev izvajajo brez uporabe omrežja, kar omogoča polno uporabo samostojnih virtualnih strojev za preprečevanje uhajanja informacij. To na primer omogoča ločitev kriptografskih operacij (PGP/SSH), kjer se zasebni ključi uporabljajo znotraj izoliranih virtualnih strojev in ne potujejo zunaj njih.
Predloge, aplikacije in navidezni stroji za enkratno uporabo
Вся работа пользователя в Qubes производится в виртуальных машинах. Основная хостовая система используется для управления их работой и визуализации. ОС устанавливается вместе с базовым набором виртуальных машин на основе шаблонов (TemplateVM). Такой шаблон представляет собой Linux ВМ на основе дистрибутива Fedora или Debian, с установленными и настроенными средствами интеграции, выделенными системными и пользовательскими разделами. Установка и обновление программного обеспечения производится штатным менеджером пакетов (dnf или apt) из настроенных репозиториев с обязательной проверкой цифровой подписи (GnuPG). Назначение таких ВМ это обеспечение доверия к прикладным ВМ, запускаемым на их основе.
Aplikacijski VM (AppVM) ob zagonu uporabi posnetek sistemske particije ustrezne predloge VM in ob zaustavitvi izbriše ta posnetek, ne da bi shranil kakršne koli spremembe. Podatki, ki jih potrebuje uporabnik, so shranjeni v uporabniški particiji, ki je edinstvena za vsak aplikacijski VM in je nameščena v domačem imeniku.

Uporaba enkratnih navideznih strojev (VM-jev za enkratno uporabo) je lahko koristna z varnostnega vidika. Ti VM-ji so ustvarjeni na podlagi predloge ob zagonu in se zaženejo z enim samim namenom – izvajanjem ene same aplikacije, ki se po njenem zaprtju zaključi. VM-je za enkratno uporabo je mogoče uporabiti za odpiranje sumljivih datotek, katerih vsebina bi lahko privedla do izkoriščanja ranljivosti v določenih aplikacijah. Možnost zagona VM-jev za enkratno uporabo je integrirana v upravitelja datotek (Nautilus) in e-poštnega odjemalca (Thunderbird).
Windows ВМ также может быть использована для создания шаблона и одноразовой ВМ, для этого профиль пользователя переносится в отдельный раздел. В нашем варианте такой шаблон будет использоваться пользователем для задач администрирования и установки приложений. На основе шаблона будут созданы несколько прикладных ВМ — с ограниченным доступом к сети (штатные возможности sys-firewall) и без доступа к сети вообще (не создается виртуальное сетевое устройство). Для работы в этих ВМ будут доступны все изменения и приложения, устанавливаемые в шаблоне и даже в случае внедрения программ-закладок, им будет недоступен сетевой доступ для компрометации.
Борьба за Windows
Описанные выше возможности являются основой Qubes и работают вполне стабильно, сложности начинаются с Windows. Для интеграции Windows необходимо использовать набор гостевых инструментов Qubes Windows Tools (QWT), включающий в себя драйверы для работы с Xen, драйвер qvideo и набор утилит для информационного обмена (файловый прием-передача, буфер обмена). Процесс установки и настройки подробно документирован на сайте проекта, поэтому поделимся нашим опытом применения.
Основную сложность составляет по сути отсутствие поддержки разработанного инструментария. Ключевые разработчики (QWT), по всей видимости, недоступны и проект интеграции с Windows находится в ожидании ведущего разработчика. Поэтому в первую очередь необходимо было оценить работоспособность и составить понимание о возможности его поддержки при необходимости самостоятельно. Наиболее сложным для разработки и отладки является графический драйвер, который эмулирует видеоадаптер и дисплей для формирования изображения в разделяемой памяти, позволяя отображать весь рабочий стол или непосредственно окно приложения в окне хостовой системы. В ходе анализа работы драйвера мы адаптировали код для сборки в окружении Linux и отработали схему отладки между двумя гостевыми Windows системами. На этапе кроссбилда провели несколько упрощающих для нас изменений в основном в части "тихой" установки утилит, а также устранили назойливую деградацию производительности при длительной работе в ВМ. Результаты работы мы оформили в отдельном , torej za kratek čas Vodilni razvijalec Qubes.
Наиболее критичным этапом в плане стабильности гостевой системы является запуск Windows, здесь можно увидеть знакомый синий экран (или даже не увидеть). Для большинства выявленных ошибок находились различные варианты обхода — отказ от Xen драйверов блочных устройств, оключение балансировки памяти ВМ, фиксация сетевых настроек и минимизация количества ядер. Наша сборка гостевых средств устанавливается и работает на полностью обновленной Windows 7 in Windows 10 (за исключением qvideo).
При переходе из реальной среды в виртуальную возникает проблема с активацией Windows в случае использования предустановленных OEM версий. Такие системы используют активацию на основе лицензий, прописанных в UEFI устройства. Для корректной отработки активации необходимо транслировать в гостевую систему один из разделов ACPI хостовой системы целиком (SLIC table) и немного править другие, прописывая производителя. Xen позволяет настраивать содержимое ACPI дополнительных таблиц, но без модификации основных. С решением помог патч от похожего проекта OpenXT, который был адаптирован для Qubes. Исправления показались полезными не только нам и были транслированы в основной репозиторий Qubes и библиотеку Libvirt.
Очевидными недостатками средств интеграции Windows следует назвать отсутствие поддержки звука, USB-устройств и сложность работы с медиа, поскольку нет аппаратной поддержки GPU. Но перечисленное не мешает использованию ВМ для работы с офисными документами, не препятствует запуску специфичных корпоративных приложений.
Требование переключения в режим работы без сети или с ограниченной сетью после создания шаблона Windows ВМ выполнялось созданием соответствующих конфигураций прикладных ВМ, а возможность избирательного подключения съемных носителей также решалась штатными средствами ОС — при подключении они доступны в системной ВМ sys-usb, откуда могут быть "проброшены" к необходимой ВМ. Рабочий стол пользователя выглядит приблизительно так.

Končna različica sistema je bila s strani uporabnikov pozitivno sprejeta (kolikor to dopušča tako celovita rešitev), vgrajena orodja sistema pa so omogočila njegovo razširitev na uporabnikovo mobilno delovno postajo z VPN dostopom.
Namesto zaključka
Виртуализация в целом позволяет снижать риски использования Windows систем, оставленных без поддержки — не принуждает к обеспечению совместимости с новыми аппаратными средствами, позволяет исключать или контролировать доступ к системе по сети или посредством подключаемых устройств, позволяет реализовать среду для одноразового запуска.
Operacijski sistem Qubes, ki temelji na ideji izolacije z virtualizacijo, pomaga izkoristiti te in druge varnostne mehanizme. Čeprav mnogi Qubes vidijo predvsem kot sredstvo za anonimnost, je uporaben sistem tako za inženirje, ki pogosto žonglirajo s projekti, infrastrukturo in skrivnostmi dostopa, kot za varnostne raziskovalce. Ločevanje aplikacij in podatkov ter formalizacija njihovih interakcij sta prva koraka pri analizi groženj in načrtovanju varnostnih sistemov. Ta ločitev pomaga strukturirati informacije in zmanjšati verjetnost človeških napak, kot so naglica, utrujenost in tako naprej.
В настоящее время основной упор в разработке идет на расширение функциональности Linux сред. Готовится к релизу версия 4.1, которая будет основана на Fedora 31 и включать актуальные версии ключевых компонент Xen и Libvirt. Стоит отметить, что Qubes создается профессионалами в области информационной безопасности, которые всегда оперативно выпускают обновления в случае выявления новых угроз или ошибок.
spremna beseda
Ena od naših eksperimentalnih zmogljivosti omogoča ustvarjanje virtualnih strojev s podporo za dostop gostujočih grafičnih procesorjev na podlagi tehnologije Intel GVT-g, kar omogoča izkoriščanje zmogljivosti grafičnega adapterja in znatno širi uporabnost sistema. V času pisanja tega članka je ta funkcionalnost na voljo za testne različice Qubes 4.1 in je na voljo na .
Vir: www.habr.com
