Na Habré nie je veľa článkov venovaných operačnému systému Qubes, a tie, ktoré som videl, málo popisujú skúsenosti s jeho aplikáciou. Dúfam, že to napravím na príklade použitia Qubes ako prostriedku ochrany prostredia Windows a zároveň zhodnotím počet rusky hovoriacich používateľov systému.

Prečo Qubes?
Príbeh s koncom technickej podpory Windows 7 a narastajúca nervozita používateľov viedli k potrebe zorganizovať prácu tejto OS s ohľadom na nasledujúce požiadavky:
- zabezpečiť použitie plne aktivovanej Windows 7 s možnosťou inštalácie aktualizácií a rôznych aplikácií používateľom (vrátane cez Internet);
- realizovať úplné alebo selektívne vylúčenie sieťových interakcií za podmienok (režimy offline a filtrácie prevádzky);
- poskytnúť možnosť selektívneho pripojenia externých nosičov a zariadení.
Takáto sústava obmedzení predpokladá explicitne pripraveného používateľa, pretože je povolené samostatné administratívne zásahovanie, a obmedzenia sú spojené nie s blokovaním jeho potenciálnych akcií, ale s vylúčením možných chýb alebo deštruktívneho programového vplyvu. T.j. vnútornej porušovateľ v modeli nie je.
Pri hľadaní riešenia sme rýchlo upustili od myšlienky realizovať obmedzenia vstavanými alebo dodatočnými prostriedkami Windows, pretože je dosť ťažké efektívne obmedziť používateľa s administrátorskými právami, pričom mu ponecháme možnosť inštalovať aplikácie.
Ďalším variantom riešenia bola izolácia pomocou virtualizácie. Široko známe nástroje na desktopovú virtualizáciu (napr. také ako virtualbox) nie sú dobre prispôsobené na riešenie úloh bezpečnosti a uvedené obmedzenia bude musieť používateľ neustále manuálne prepínať alebo konfigurovať vlastnosti hosťujúcej virtuálnej mašiny (ďalej VM), čo zvyšuje riziko chýb.
Na druhej strane sme mali skúsenosti s použitím Qubes ako užívateľského stolného systému, ale existovali pochybnosti o stabilite práce s hostiteľským Windows. Bolo rozhodnuté overiť aktuálnu verziu Qubes, pretože nastavené obmedzenia veľmi dobre zapadajú do paradigmatu tohto systému, najmä implementácia šablón virtuálnych strojov a vizuálna integrácia. Ďalej sa pokúsim čo najstručnejšie rozprávať o ideách a nástrojoch Qubes na príklade riešenia zadanej úlohy.
Typy virtualizácie Xen
Qubes je postavený na hypervízore Xen, ktorý minimalizuje funkcie správy prostriedkov CPU, pamäti a virtuálnych strojov. Všetka ostatná práca s zariadeniami je sústredená v dom0 na báze Linuxového jadra (v Qubes sa pre dom0 používa distribúcia Fedora).

Xen podporuje niekoľko typov virtualizácie (budem uvádzať príklady pre architektúru Intel, aj keď Xen podporuje aj iné):
- paravirtualizácia (PV) — režim virtualizácie bez použitia hardvérovej podpory, podobá sa na kontajnerovú virtualizáciu, môže sa používať pre systémy s prispôsobeným jadrom (v takomto režime funguje dom0);
- plná virtualizácia (HVM) — v tomto režime sa na zdroje CPU používa hardvérová podpora, a všetko ostatné zariadenie je emulované prostriedkami QEMU. Je to najuniverzálnejší spôsob spúšťania rôznych OS;
- paravirtualizácia hardvéru (PVH — ParaVirtualized Hardware) — režim virtualizácie s použitím hardvérovej podpory, keď pre prácu so zariadeniami používajú ovládače jadra hostiteľského systému, ktoré sú prispôsobené možnostiam hypervízora (napríklad zdieľanej pamäti), čím sa eliminuje potreba emulácie QEMU a zvyšuje sa výkon vstupu a výstupu. Jadro Linuxu od verzie 4.11 môže pracovať v takom režime.

Od verzie Qubes 4.0 z dôvodu bezpečnosti prechádzajú na odmietanie používania režimu paravirtualizácie (vrátane známych zraniteľností architektúry Intel, ktoré sú čiastočne odstránené použitím plnej virtualizácie), režim PVH sa používa predvolene.
Pri použití emulácie (režim HVM) sa spúšťanie QEMU vykonáva v izolovanej VM nazvanej stubdomain, čím sa znižujú riziká zneužitia potenciálnych chýb v implementácii (projekt QEMU obsahuje mnoho kódu vrátane kompatibility).
Takýto režim je v našom prípade vhodný pre Windows.
Služobné virtuálne stroje
V architektúre bezpečnosti Qubes je jednou z kľúčových schopností hypervízora prenášanie PCI zariadení do hosťovského prostredia. Vylúčenie zariadení umožňuje izolovať hostiteľskú časť systému od vonkajších útokov. Xen to podporuje pre režimy PV a HVM, v druhom prípade je potrebná podpora IOMMU (Intel VT-d) — hardvérové riadenie pamäte pre virtualizované zariadenia.
Týmto spôsobom sa vytvára niekoľko systémových virtuálnych strojov:
- sys-net, ktorý preberá sieťové zariadenia a ktorý sa používa ako most pre ďalšie VM, napríklad implementujúce funkcie firewallu alebo klienta sieť VPN;
- sys-usb, ktorý preberá USB a iné ovládače periférnych zariadení;
- sys-firewall, ktorý nepoužíva zariadenia, ale funguje ako firewall pre pripojené VM.
Na prácu s USB zariadeniami sa používajú proxy služby, ktoré zabezpečujú najmä:
- pre triedu zariadení HID (human interface device) prenos príkazov do dom0;
- pre prenosné nosiče preposielanie objemov zariadení do iných VM (s výnimkou dom0);
- preposielanie priamo USB zariadenia (používa sa USBIP a prostriedky integrácie).
V takejto konfigurácii úspešný útok cez sieťový zásobník alebo pripojené zariadenia môže viesť k kompromitácii iba spustenej služobnej VM, a nie celej systému. Po reštarte služobnej VM sa načíta do pôvodného stavu.
Nástroje integrácie VM
Existuje niekoľko spôsobov, ako interagovať s pracovnou plochou virtuálneho stroja – inštalácia aplikácií do hosťovského systému alebo emulácia videa prostriedkami virtualizácie. Medzi hosťovské aplikácie môžu patriť rôzne univerzálne prostriedky vzdialeného prístupu (RDP, VNC, Spice a podobne) alebo prispôsobené konkrétnemu hypervízoru (takéto nástroje sa zvyčajne nazývajú hosťovské utilitky). Môže sa použiť aj zmiešaná varianta, keď hypervízor emuluje vstup-výstup pre hosťovský systém, zatiaľ čo zvonka poskytuje možnosť používať protokol kombinujúci vstup-výstup, napríklad ako u Spice. V tomto prípade prostriedky vzdialeného prístupu zvyčajne optimalizujú obraz, pretože predpokladajú prácu cez sieť, čo negatívne ovplyvňuje kvalitu obrazu.
Qubes poskytuje vlastné prostriedky na integráciu VMs. Predovšetkým ide o grafický subsystém – okná z rôznych VMs sa zobrazujú na jednej pracovnej ploche s vlastným farebným orámovaním. Celkovo sú prostriedky integrácie založené na možnostiach hypervízora – zdieľanej pamäte (Xen grant table), prostriedkoch notifikácie (Xen event channel), zdieľanom úložisku xenstore a protokole komunikácie vchan. S ich pomocou sú implementované základné komponenty qrexec a qubes-rpc a aplikačné služby – presmerovanie zvuku alebo USB, prenos súborov alebo obsahu schránky, vykonávanie príkazov a spúšťanie aplikácií. Existuje možnosť nastaviť politiky, ktoré obmedzujú dostupné služby na VM. Na obrázku nižšie je príklad postupu inicializácie interakcie dvoch VMs.

Takže práca vo VM sa vykonáva bez použitia siete, čo umožňuje plne využiť autonómne VMs a vyhnúť sa úniku informácií. Napríklad takto sa realizuje rozdelenie kryptografických operácií (PGP/SSH), keď sa súkromné kľúče používajú v izolovaných VMs a neopúšťajú ich hranice.
Šablóny, aplikačné a jednorazové VMs
Celá práca používateľa v Qubes prebieha vo virtuálnych strojoch. Hlavný hostiteľský systém sa používa na správu ich činnosti a vizualizáciu. OS sa inštaluje spolu so základnou sadou virtuálnych strojov na základe šablón (TemplateVM). Takáto šablóna predstavuje Linux VM na základe distribúcie Fedora alebo Debian, s nainštalovanými a nakonfigurovanými prostriedkami integrácie, vyhradenými systémovými a užívateľskými oddielmi. Inštalácia a aktualizácia softvéru sa vykonáva cez predvoleného správcu balíkov (dnf alebo apt) z nakonfigurovaných repozitárov s povinnou kontrolou digitálneho podpisu (GnuPG). Účelom takýchto VM je zabezpečiť dôveru voči aplikačným VM, ktoré na nich bežia.
Aplikačná VM (AppVM) pri štarte využíva snímku systémového oddielu príslušnej šablóny VM a po skončení odstráni túto snímku bez uloženia zmien. Potrebné dáta používateľa sú uložené v jedinečnom pre každú aplikačnú VM užívateľskom oddiele, ktorý je pripojený do domovského adresára.

Užitočné z pohľadu bezpečnosti môže byť použitie jednorazových VM (disposableVM). Takáto VM sa vytvára na základe šablóny v momente štartu a spúšťa sa s jediným cieľom — vykonaním jednej aplikácie, pričom po jej uzavretí končí svoju činnosť. Jednorazové VM môžu byť použité na otvorenie podozrivých súborov, ktorých obsah môže viesť k zneužitiu zraniteľností konkrétnych aplikácií. Možnosť spustenia jednorazovej VM je integrovaná do správcu súborov (Nautilus) a e-mailového klienta (Thunderbird).
Windows VM môže byť tiež použitá na vytvorenie šablóny a jednorazovej VM, na to sa profil používateľa prenáša do samostatného oddielu. V našom prípade sa táto šablóna bude používať používateľom na administratívne úlohy a inštaláciu aplikácií. Na základe šablóny sa vytvorí niekoľko aplikačných VM — s obmedzeným prístupom do siete (štandardné možnosti sys-firewall) a bez prístupu do siete vôbec (virtuálne sieťové zariadenie sa nevytvára). Pre prácu v týchto VM budú dostupné všetky zmeny a aplikácie, ktoré sú inštalované v šablóne, a aj v prípade vniknutia programov s nástrahami, im nebude dostupný sieťový prístup na kompromitáciu.
Boj proti Windows
Popísané možnosti sú základom Qubes a fungujú celkom stabilne, problémy začínajú pri Windows. Pre integráciu Windows je potrebné použiť súbor hosťovacích nástrojov Qubes Windows Tools (QWT), ktorý obsahuje ovládače na prácu s Xen, ovládač qvideo a sadu nástrojov na výmenu informácií (prenos súborov, clipboard). Proces inštalácie a nastavenia je podrobne zdokumentovaný na stránke projektu, takže sa s vami podelíme o naše skúsenosti s používaním.
Hlavnou výzvou je v podstate nedostatok podpory vyvinutého nástroja. Kľúčoví vývojári (QWT) sú zjavne nedostupní a projekt integrácie s Windows čaká na hlavného vývojára. Preto bolo potrebné najprv zhodnotiť funkčnosť a získať predstavu o možnosti jej podpory pri nutnosti samostatne. Najnáročnejším na vývoj a ladenie je grafický ovládač, ktorý emuluje grafickú kartu a displej na formovanie obrazu v zdieľanej pamäti, čo umožňuje zobrazenie celého pracovného prostredia alebo priamo okna aplikácie v okne hosťovacieho systému. Počas analýzy funkčnosti ovládača sme prispôsobili kód na zostavenie v prostredí Linux a vyskúšali sme schému ladenia medzi dvoma hosťovacími Windows systémami. Na etape cross-build sme vykonali niekoľko zjednodušujúcich zmien, predovšetkým v oblasti "tichej" inštalácie nástrojov, a tiež sme odstránili otravné zníženie výkonu pri dlhodobej práci v VM. Výsledky našej práce sme spracovali do samostatného , čím sme na chvíľu hlavného vývojára Qubes.
Najkritickejšou fázou z hľadiska stability hosťovacieho systému je spustenie Windows, tu môžete vidieť známy modrý displej (alebo ho dokonca ani neuvidíte). Pre väčšinu zistených chýb existovali rôzne obchádzky — zrieknutie sa Xen ovládačov blokových zariadení, deaktivácia vyrovnávania pamäte VM, fixácia sieťových nastavení a minimalizácia počtu jadier. Naša zostava hosťovských nástrojov sa inštaluje a funguje na plne aktualizovanej Windows 7 a Windows 10 (okrem qvideo).
Pri prechode z fyzického prostredia do virtuálneho vzniká problém s aktiváciou systému Windows v prípade použitia predinštalovaných OEM verzií. Takéto systémy používajú aktiváciu na základe licencií zaregistrovaných v UEFI zariadenia. Pre správne fungovanie aktivácie je potrebné preniesť do hosťovského systému jeden z oddielov ACPI hlavného systému v celku (SLIC table) a mierne upraviť iné, pričom sa špecifikuje výrobca. Xen umožňuje prispôsobovať obsah ACPI ďalších tabuliek, ale bez modifikácie hlavných. S riešením pomohol patch z podobného projektu OpenXT, ktorý bol prispôsobený pre Qubes. Opravy sa ukázali ako užitočné nielen pre nás a boli prenesené do hlavného repozitára Qubes a knižnice Libvirt.
Zjavnými nedostatkami prostriedkov integrácie Windows sú absencia podpory zvuku, USB zariadení a zložitosti pri práci s médiami, keďže nie je hardvérová podpora GPU. Napriek tomu však uvedené nebráni používaniu virtuálnych strojov na prácu s kancelárskymi dokumentmi a neprekáža spusteniu špecifických firemných aplikácií.
Požiadavku na prechod do režimu bez siete alebo s obmedzenou sieťou po vytvorení šablóny Windows virtuálneho stroja bolo možné splniť vytvorením príslušných konfigurácií aplikačných virtuálnych strojov, a možnosť selektívneho pripojenia prenosných médií sa tiež riešila pomocou natívnych prostriedkov operačného systému — po pripojení sú dostupné v systémovom virtuálnom stroji sys-usb, odkiaľ môžu byť „prenesené“ do potrebného virtuálneho stroja. Pracovná plocha používateľa vyzerá približne takto.

Konečná verzia systému bola používateľmi pozitívne prijatá (pokiaľ to komplexné riešenie umožnilo) a natívne prostriedky systému umožnili rozšíriť jeho použitie na mobilné pracovné miesto používateľa s prístupom cez VPN.
Na záver
Virtualizácia vo všeobecnosti umožňuje znižovať riziká používania systémov Windows, ktoré sú ponechané bez podpory — nenúti k zabezpečeniu kompatibility s novými hardvérovými prostriedkami, umožňuje vylúčiť alebo kontrolovať prístup k systému cez sieť alebo prostredníctvom pripojených zariadení a umožňuje vytvoriť prostredie pre jednorazové spustenie.
Operačný systém Qubes, založený na myšlienke izolácie pomocou virtualizácie, pomáha využívať tieto a ďalšie mechanizmy na zabezpečenie. Mnohí to vidia najmä ako snahu o anonymitu, ale je to užitočný systém nielen pre inžinierov, ktorí často kombinujú projekty, infraštruktúry a tajomstvá prístupu k nim, ale aj pre odborníkov na bezpečnosť. Rozdelenie aplikácií, údajov a formalizácia ich interakcie sú počiatočné kroky analýzy hrozieb a projektovania ochranného systému. Takéto rozdelenie pomáha štruktúrovať informácie a znižovať pravdepodobnosť chyby spôsobenej ľudským faktorom — ponáhľaním, únavou a podobne.
V súčasnosti sa hlavný dôraz pri vývoji kladie na rozšírenie funkčnosti prostredí Linux. Pripravuje sa verzia 4.1, ktorá bude založená na Fedora 31 a bude zahŕňať aktuálne verzie kľúčových komponentov Xen a Libvirt. Je potrebné poznamenať, že Qubes vyvíjajú odborníci v oblasti informačnej bezpečnosti, ktorí vždy promptne vydávajú aktualizácie v prípade zistenia nových hrozieb alebo chýb.
Pósledok
Jedna z našich vyvíjaných experimentálnych funkcií umožňuje vytvárať VM s podporou hosťujúceho prístupu k GPU na základe technológie Intel GVT-g, čo umožňuje využiť možnosti grafického adaptéra a významne rozšíriť oblasť použitia systému. K okamihu písania tohto článku táto funkcia funguje pre testovacie zostavy Qubes 4.1 a je dostupná na .
Zdroj: habr.com
