Na Habu ni tako malo člankov, posvećenih operativnemu sistemu Qubes, in ti, ki sem jih videl, slabo opisujejo izkušnje z njegovo uporabo. Upam, da bom to spodaj popravil na primeru uporabe Qubes kot sredstva zaščite okolja Windows in hkrati ocenil število ruskogovornih uporabnikov sistema.

Zakaj Qubes?
Zgodba o prenehanju podpore Windows 7 in naraščajoča skrb uporabnikov je vodila do potrebe po organizaciji dela tega operativnega sistema, ob upoštevanju naslednjih zahtev:
- zagotoviti uporabo popolnoma aktivirane Windows 7 z možnostjo samoiniciativne namestitve posodobitev in različnih aplikacij (tudi preko interneta);
- izvesti popolno ali selektivno izključitev omrežnih interakcij po pogoju (načini dela brez povezave in filtriranja prometa);
- omogočiti selektivno povezovanje prenosnih medijev in naprav.
Tak komplet omejitev predvideva jasno pripravljene uporabnike, saj je dovoljena samostojna administracija, omejitve pa niso povezane z blokiranjem njihovih potencialnih dejanj, ampak z izključitvijo možnih napak ali destruktivnega vpliva programske opreme. To pomeni, da notranjega kršilca v modelu ni.
V iskanju rešitve smo hitro opustili idejo o izvajanju omejitev z vgrajenimi ali dodatnimi sredstvi Windows, saj je dovolj zapleteno učinkovito omejiti uporabnika s skrbniškimi pravicami, medtem ko mu omogočamo namestitev aplikacij.
Naslednja možnost rešitve je bila izolacija z uporabo virtualizacije. Široko znana orodja za namizno virtualizacijo (na primer virtualbox) so slabo prilagojena reševanju varnostnih težav in navedene omejitve bo morali uporabnik stalno izvajati s preklapljanjem ali nastavitvijo lastnosti gostujoče virtualne mašine (v nadaljevanju VM), kar povečuje tveganje za napake.
Hkrati smo imeli izkušnje z uporabo Qubes kot namiznega sistema za uporabnike, vendar so bili dvomi o stabilnosti delovanja z gostujočim Windows. Odločeno je bilo preveriti aktualno različico Qubes, saj se postavljene omejitve zelo dobro prilegajo paradigmi tega sistema, zlasti realizacija predlog virtualnih strojev in vizualna integracija. V nadaljevanju bom poskušal čim bolj na kratko predstaviti ideje in orodja Qubes, na primeru rešitve postavljene naloge.
Tipi virtualizacije Xen
Osnova Qubes je hipervizor Xen, ki minimalizira svoj upravljalski funkcionalnosti za procesor, pomnilnik in virtualne naprave. Vse ostale funkcije dela z napravami so osredotočene v dom0, ki temelji na jedru Linux (v Qubes za dom0 se uporablja distribucija Fedora).

Xen podpira več tipov virtualizacije (pripravljen imam primere za Intel arhitekturo, čeprav Xen podpira tudi druge):
- paravirtualizacija (PV) – način virtualizacije brez uporabe strojne podpore, spominja na kontejnersko virtualizacijo, lahko se uporablja za sisteme s prilagojenim jedrom (v tem načinu deluje dom0);
- polna virtualizacija (HVM) – v tem načinu se za sredstva procesorja uporablja strojna podpora, preostala oprema pa se emulira z orodji QEMU. To je najbolj univerzalen način za zagon različnih operacijskih sistemov;
- paravirtualizacija opreme (PVH – ParaVirtualized Hardware) – način virtualizacije z uporabo strojne podpore, ko jedro gostujočega sistema za delo z opremo uporablja gonilnike, prilagojene zmogljivostim hipervizorja (na primer, skupna pomnilnika), s čimer se odpravi potreba po emulaciji QEMU in poveča zmogljivost vhodno-izhodnih operacij. Jedro Linux od različice 4.11 lahko deluje v tem načinu.

Od različice Qubes 4.0 iz varnostnih razlogov prenehajo uporabljati način paravirtualizacije (tudi zaradi znanih ranljivosti arhitekture Intel, ki se delno odpravljajo z uporabo polne virtualizacije), privzeto se uporablja način PVH.
Pri uporabi emulacije (HVM način) se QEMU zažene v izolirani VM, imenovani stubdomain, s čimer se zmanjšajo tveganja izkoriščanja morebitnih napak v implementaciji (projekt QEMU vsebuje veliko kode, vključno za združljivost).
Tak način moramo uporabiti v našem primeru za Windows.
Servisne virtualne naprave
V arhitekturi varnosti Qubes je ena ključnih funkcij hipervizorja prenos PCI naprav v gostujoče okolje. Izključitev strojne opreme omogoča izolacijo gostiteljske komponente sistema pred zunanjimi napadi. Xen to podpira za PV in HVM načine, v drugem primeru pa je potrebna podpora IOMMU (Intel VT-d) — strojno upravljanje pomnilnika za virtualizirane naprave.
Tako nastajajo več sistemskih virtualnih naprav:
- sys-net, kateri so dodeljene omrežne naprave in se uporablja kot most za druge VM, na primer, ki izvajajo funkcije požarnega zidu ali VPN odjemalca;
- sys-usb, kateri so dodeljeni USB in drugi kontrolerji periferne opreme;
- sys-firewall, ki ne uporablja naprav, temveč deluje kot požarni zid za povezane VM.
Za delo z USB napravami se uporabljajo proxy storitve, ki zagotavljajo med drugim:
- za razred naprav HID (human interface device) prenos ukazov v dom0;
- za prenosne naprave preusmeritev volumnov naprav v druge VM (razen dom0);
- preusmeritev neposredno USB naprave (se uporablja USBIP in integracijska orodja).
V taki konfiguraciji lahko uspešen napad preko omrežnega steka ali priključenih naprav privede do kompromitacije samo zagnane servisne VM, ne pa celotnega sistema. Po ponovnem zagonu servisne VM se bo ta naložila v prvotno stanje.
Orodja za integracijo VM
Obstajajo različni načini za interakcijo z namizjem virtualnega stroja – namestitev aplikacij v gostiteljskem sistemu ali emulacija videa z uporabo virtualizacijskih sredstev. Kot gostiteljske aplikacije lahko delujejo različna univerzalna orodja za oddaljen dostop (RDP, VNC, Spice itd.) ali orodja, prilagojena določenemu hipervizorju (takšna orodja običajno imenujemo gostiteljske utilite). Uporabiti se lahko tudi kombiniran pristop, kjer hipervizor emulira vhod-izhod za gostiteljski sistem, zunaj pa omogoča uporabo protokola, ki združuje vhod-izhod, na primer, kot pri Spice. Pri tem orodja za oddaljen dostop običajno optimizirajo sliko, saj predvidevajo delo preko omrežja, kar negativno vpliva na kakovost slike.
Qubes nudi lastna orodja za integracijo VM. Najprej to je grafični sistem — okna iz različnih VM so prikazana na enotnem namizju z lastnim barvnim okvirjem. Na splošno so integracijska orodja zasnovana na zmožnostih hipervizorja — skupni pomnilnik (Xen grant table), orodja za obveščanje (Xen event channel), skupno shranjevanje xenstore in komunikacijski protokol vchan. S pomočjo teh se izvajajo osnovne komponente qrexec in qubes-rpc ter aplikativne storitve — preusmeritev zvoka ali USB, prenos datotek ali vsebine iz odložišča, izvajanje ukazov in zagon aplikacij. Možno je določiti politike, ki omejujejo dostopne storitve na VM. Na spodnji sliki je primer postopka inicializacije interakcije dveh VM.

Tako se delo v VM izvaja brez uporabe omrežja, kar omogoča popolno uporabo avtonomnih VM za izogibanje uhajanju informacij. Na primer, tako se izvaja delitev kriptografskih operacij (PGP/SSH), ko se zasebni ključi uporabljajo v izoliranih VM in ne zapustijo njihovih meja.
Predloge, aplikativne in enkratne VM
Vsa uporabniška dela v Qubes potekajo v virtualnih strojih. Glavni gostiteljski sistem se uporablja za upravljanje njihovega delovanja in vizualizacijo. Operacijski sistem se namesti skupaj z osnovnim nizom virtualnih strojev na podlagi predlog (TemplateVM). Takšen predlog je Linux VM, ki temelji na distribuciji Fedora ali Debian, z nameščenimi in nastavljenimi orodji za integracijo, ločenimi sistemskimi in uporabniškimi partitioni. Namestitev in posodabljanje programske opreme poteka s pomočjo standardnega upravitelja paketov (dnf ali apt) iz nastavljenih repozitorijev, pri čemer je obvezna preverba digitalnega podpisa (GnuPG). Namen takšnih VM je zagotavljanje zaupanja v aplikativne VM, ki se izvajajo na njihovi osnovi.
Aplikativna VM (AppVM) ob zagonu uporablja posnetek sistemskega razdelka ustreznega predloga VM, po zaključku pa ta posnetek izbriše brez shranjevanja sprememb. Potrebni podatki za uporabnika se hranijo v edinstvenem uporabniškem razdelku za vsako aplikativno VM, ki se montira v domačo mapo.

Z vidika varnosti je lahko koristna uporaba enokratnih VM (disposibleVM). Takšna VM se ustvari na podlagi predloga ob zagonu in se zažene z enim samim namenom — izvedbo ene aplikacije, pri čemer se po njenem zaprtju konča. Enkratne VM se lahko uporabljajo za odpiranje sumljivih datotek, katerih vsebina lahko privede do izkoriščanja ranljivosti določenih aplikacij. Možnost zagona enkratne VM je integrirana v upravitelja datotek (Nautilus) in e-poštnega odjemalca (Thunderbird).
Windows VM se lahko prav tako uporablja za ustvarjanje predloge in enkratne VM; za to se uporabniški profil prenese v ločen razdelek. V našem primeru se bo takšna predloga uporabljala za naloge administracije in namestitve aplikacij. Na podlagi predloge bodo ustvarjene več aplikativnih VM — z omejenim dostopom do omrežja (privzete možnosti sys-firewall) in brez dostopa do omrežja sploh (virtualna omrežna naprava ne bo ustvarjena). V teh VM bodo na voljo vse spremembe in aplikacije, nameščene v predlogi, in celo v primeru vnosov programov-trojancev ne bodo imele dostopa do omrežja za kompromitacijo.
Boj za Windows
Opisane zgoraj možnosti so osnova Qubes in delujejo povsem stabilno, težave se začnejo z Windows. Za integracijo Windows je potrebno uporabiti nabor gostinskih orodij Qubes Windows Tools (QWT), ki vključuje gonilnike za delo z Xen, gonilnik qvideo in nabor pripomočkov za izmenjavo podatkov (prenos datotek, odložišče). Postopek namestitve in nastavitev je podrobno dokumentiran na spletni strani projekta, zato bomo delili naše izkušnje z uporabo.
Glavna težava je v bistvu pomanjkanje podpore razvitega orodja. Ključni razvijalci (QWT) očitno niso na voljo in projekt integracije z Windows čaka na vodilnega razvijalca. Zato je najprej potrebno oceniti delovanje in razumeti možnost njegove podpore, če bo potrebno, neodvisno. Najbolj zapleten za razvoj in odpravljanje napak je grafični gonilnik, ki emulira video adapter in zaslon za oblikovanje slike v skupni pomnilnik, kar omogoča prikaz celotnega namizja ali neposredno okno aplikacije v oknu gostiteljske sisteme. Med analizo delovanja gonilnika smo kodo prilagodili za gradnjo v okolju Linux in preizkusili shemo odpravljanja napak med dvema gostinskima Windows sistemoma. Na stopnji križnega gradiva smo izvedli nekaj poenostavitev, predvsem v delu "tihe" namestitve pripomočkov ter odpravili nadležno degradacijo zmogljivosti pri dolgotrajni uporabi v VM. Rezultate dela smo oblikovali v ločeno , s tem pa smo za kratek čas vodilnega razvijalca Qubes.
Najbolj kritična faza glede stabilnosti gostinske naprave je zagon Windows, tukaj lahko vidite znan modri zaslon (ali ga celo ne vidite). Za večino odkritih napak smo našli različne možnosti obvoda — opustitev Xen gonilnikov blokovnih naprav, izklop uravnoteženja pomnilnika VM, fiksiranje omrežnih nastavitev in minimizacija števila jeder. Naša zbirka gostinskih orodij se namesti in deluje na popolnoma posodobljenem Windows 7 in Windows 10 (z izjemo qvideo).
Pri prehodu iz fizičnega okolja v virtualno se pojavi težava z aktivacijo sistema Windows v primeru uporabe tovarniško nameščenih OEM različic. Takšni sistemi uporabljajo aktivacijo na podlagi licenc, zapisanih v UEFI naprav. Za pravilno delovanje aktivacije je potrebno prenesti v gostiteljski sistem enega od razdelkov ACPI gostiteljskega sistema v celoti (SLIC tabela) in nekoliko prilagoditi druge, tako da se vnese proizvajalec. Xen omogoča prilagajanje vsebine dodatnih ACPI tabel, vendar brez spremembe osnovnih. Z rešitvijo je pomagal popravek iz podobnega projekta OpenXT, ki je bil prilagojen za Qubes. Popravki so se izkazali za koristne ne le za nas, temveč so bili preneseni tudi v glavni repozitorij Qubes in knjižnico Libvirt.
Očitne pomanjkljivosti orodij za integracijo Windows vključujejo odsotnost podpore za zvok, USB naprave ter kompleksnost dela z mediji, saj ni strojne podpore GPU. Vendar to našteto ne ovira uporabe VM za delo z dokumenti ter ne preprečuje zagon specifičnih korporativnih aplikacij.
Zahteva po preklopu v način brez omrežja ali z omejenim omrežjem po ustvarjanju predloge Windows VM je bila izpolnjena z ustvarjanjem ustreznih konfiguracij aplikativnih VM, prav tako pa je možnost selektivne povezave prenosnih medijev bila rešena z vgrajenimi sredstvi operacijskega sistema — ob povezavi so dostopni v sistemski VM sys-usb, od koder jih lahko "preusmerimo" k ustrezni VM. Namizje uporabnika izgleda približno tako.

Končna različica sistema je bila pozitivno sprejeta s strani uporabnikov (kolikor to dovoljuje tako kompleksna rešitev), sredstva sistema pa so omogočila širšo uporabo do mobilnega delovnega mesta uporabnika z dostopom prek VPN.
Namesto zaključka
Virtualizacija na splošno omogoča zmanjševanje tveganj uporabe sistemov Windows, ki so ostali brez podpore — ne sili v zagotavljanje združljivosti z novimi strojno opremo, omogoča izključitev ali nadzor dostopa do sistema prek omrežja ali preko priključenih naprav ter omogoča uresničitev okolja za enkratno zagon.
Qubes OS, основанная на идее изоляции через виртуализацию, помогает использовать эти и другие механизмы для обеспечения безопасности. Со стороны многие видят в Qubes в первую очередь стремление к анонимности, но это полезная система как для инженеров, часто совмещающих проекты, инфраструктуры и секреты доступа к ним, так и для исследователей безопасности. Разделение приложений, данных и формализация их взаимодействия — это начальные шаги анализа угроз и проектирования системы защиты. Такое разделение помогает структурировать информацию и снизить вероятность ошибки из-за человеческого фактора — спешки, усталости и т.п.
В настоящее время основной упор в разработке идет на расширение функциональности Linux-сред. Готовится к релизу версия 4.1, которая будет основана на Fedora 31 и включать актуальные версии ключевых компонентов Xen и Libvirt. Стоит отметить, что Qubes создается профессионалами в области информационной безопасности, которые всегда оперативно выпускают обновления в случае выявления новых угроз или ошибок.
Zadnja misel
Одна из развиваемых нами экспериментальных возможностей позволяет создавать ВМ с поддержкой гостевого доступа к GPU на основе технологии Intel GVT-g, что позволяет использовать возможности графического адаптера и значительно расширить область применения системы. На момент написания статьи этот функционал работает для тестовых сборок Qubes 4.1 и доступен на .
Izvor: habr.com
