Habras ei ole palju artikleid, mis käsitlevad Qubes operatsioonisüsteemi, ja need, mida olen näinud, kirjeldavad vähe rakenduse kasutamise kogemust. Allpool loodan selle asja parandada, tuues näiteid Qubes'i kasutamisest Windows keskkonna kaitsevahendina ning samal ajal hinnata venekeelsete kasutajate arvu.

Miks Qubes?
Windows 7 toe lõppemise ja kasutajate suureneva ärevuse tõttu tekkis vajadus korraldada selle operatsioonisüsteemi töö, arvestades järgmisi nõudmisi:
- tagada täieliku aktiveeritud Windows 7 kasutamine, andes kasutajale võimaluse installida uuendusi ja erinevaid rakendusi (sealhulgas Interneti kaudu);
- teostada täielik või valikuline võrguühenduste välistamine vastavalt tingimustele (autonoomne töörežiim ja liikluse filtreerimine);
- anda võimalus valikuliselt ühendada eemaldatavaid andmekandjaid ja seadmeid.
Selle piirangute komplekt nõuab selgelt ettevalmistatud kasutajat, kuna on lubatud iseseisev haldamine ning piirangud ei ole seotud tema võimalike tegevuste blokeerimisega, vaid võimalike vigade või programmi destruktiivse mõju välistamisega. Seega ei ole mudelis sisemist rikkujat.
Lahenduse otsimisel loobusime kiiresti ideest rakendada piiranguid Windows'i sisseehitatud või täiendavate vahenditega, kuna on äärmiselt keeruline tõhusalt piirata administraatori õigustega kasutajat, jättes talle rakenduste paigaldamise võimaluse.
Järgmine lahenduse variant oli isoleerimine virtualiseerimise kaudu. Laialdaselt tuntud tööriistad lauaarvuti virtualiseerimiseks (nt nagu virtualbox) ei sobi hästi turvalisuse ülesannete lahendamiseks ja loetletud piiranguid peab kasutaja pidevalt seadistama või võõrustava virtuaalmisina (edasi VMi) omadusi vahetades, mis suurendab vigade tekkimise riski.
Samas oli meil kogemus Qubes'i kasutamisest kasutaja lauaarvutis, kuid kahtlused Windowsi virtuaalmasinate stabiilsuse osas. Otsustati katsetada Qubes'i praegust versiooni, kuna kehtestatud piirangud sobivad väga hästi selle süsteemi paradigmasse, eriti virtuaalmasinate malli ja visuaalse integreerimise teostamine. Katsun järgmisena võimalikult lühidalt rääkida Qubes'i ideedest ja tööriistadest, kasutades selle ülesande lahendamise näidet.
Xeni virtualiseerimise tüübid
Qubes'i aluseks on hüperviisor Xen, mis minimeerib oma funktsioone protsessori, mälu ja virtuaalmasinate haldamisel. Kõik ülejäänud seadmeid puudutav töö toimub dom0-s, mis põhineb Linuxi tuumadel (Qubes'is kasutatakse dom0 jaoks Fedora distributsiooni).

Xen toetab mitmeid virtualiseerimistüüpe (toome näiteid Intel arhitektuuri kohta, kuigi Xen toetab ka teisi):
- paravirtualiseerimine (PV) — virtualiseerimise režiim, mis ei kasuta riistvaratuge, sarnaneb konteinerite virtualiseerimisega, võib kasutada süsteeme, millel on kohandatud tuum (dom0 funktsioneerib just sellises režiimis);
- täisvirtualiseerimine (HVM) — sellises režiimis kasutatakse protsessorite ressursside jaoks riistvaralist tuge, samas kui kogu muu varustus emuleeritakse QEMU vahenditega. See on kõige universaalsem viis erinevate operatsioonisüsteemide käivitamiseks;
- paravirtualiseeritud riistvara (PVH — ParaVirtualized Hardware) — virtualiseerimise režiim, mis kasutab riistvaralist tuge, kus külg-süsteemi tuum kasutab riistvaraga suhtlemiseks hüperviisoriga kohandatud draivereid (nt jagatud mäluga), vältides QEMU emulatsiooni vajadust ja suurendades sisendi-väljundi jõudlust. Linuxi tuum alates versioonist 4.11 võib sellises režiimis töötada.

Alates Qubes'i 4.0 versioonist loobutakse turvakaalutlustel paravirtualiseerimise režiimi kasutamisest (sealhulgas tuntud Intel arhitektuuri haavatavuste tõttu, mida osaliselt kõrvaldatakse täisvirtualiseerimise kasutamisega), vaikimisi kasutatakse režiimi PVH.
Emuleerimise kasutamisel (HVM-režiim) käivitub QEMU isoleeritud VM-is, mida nimetatakse stubdomainiks, vähendades seeläbi potentsiaalsete vigu rakenduses (QEMU projekt sisaldab suurt hulka koodi, sealhulgas ühilduvuse jaoks).
Seda režiimi tuleks meie puhul kasutada Windowsi jaoks.
Teenindavad virtuaalmasinad
Qubesi turvaarhitektuuris on hüperviisori üks peamisi omadusi PCI-seadmete edastamine külalisrežiimi. Riistvara erand võimaldab isoleerida süsteemi hostiosa väliste rünnakute eest. Xen toetab seda PV- ja HVM-režiimiz, kusjuures viimasel juhul on vajalik IOMMU (Intel VT-d) tugi – riistvaralise mälu halduse tugi virtualiseeritud seadmete jaoks.
Nii luuakse mitu süsteemset virtuaalmasinat:
- sys-net, kuhu edastatakse võrguseadmed ja mis toimib sildana teistele VM-idele, näiteks tulemüürifunktsioonide või VPN-klientide teostamiseks;
- sys-usb, kuhu edastatakse USB ja muud välisseadmete kontrollerid;
- sys-firewall, mis ei kasuta seadmeid, vaid toimib tulemüürina ühendatud VM-ide jaoks.
USB-seadmete haldamiseks kasutatakse proksiteenuseid, mis tagavad sealhulgas:
- HID (inimese suhtlemisseade) seadmeklassi jaoks käskude edastamise dom0-le;
- eemaldatavate andmekandjate jaoks seadmete mahtude suunamise teise VM-i (välja arvatud dom0);
- ootamatute USB-seadmete edastamise (kasutatakse USBIP ja integreerimistööriistu).
Sellise konfigureerimise korral võib edukas rünnak võrgu stegi või ühendatud seadmete kaudu viia ainult teenindava VM-i kompromiteerimiseni, mitte kogu süsteemi. Ja pärast teenindava VM-i taaskäivitamist laaditakse see algse olekuga.
VM-i integreerimistööriistad
Virtuaalmasina töölaudadega suhtlemiseks on mitmeid viise — rakenduste installimine külgseks süsteemiks või videoväljundi emuleerimine virtualiseerimise abil. Külgarakendustena võivad esineda erinevad universaalsed kaugjuhtimise vahendid (RDP, VNC, Spice jne) või konkreetse hyperviseeritud süsteemiga kohandatud tööriistad (selliseid vahendeid nimetatakse tavaliselt külgrakendusteks). Samuti võib kasutada ka segavõimalust, kus hypervisor emuleerib sisendi ja väljundi külgmakro jaoks, samas kui väljaspool pakutakse võimalust kasutada protokolli, mis ühendab sisendi ja väljundi, näiteks nagu Spice. Sellega kaasnevad kaugjuhtimise vahendid optimiseerivad tavaliselt ettekujutusi, kuna eeldavad töötamist üle võrgu, mis ei mõjuta tunduvalt pildi kvaliteeti.
Qubes pakub oma vahendeid VM-ide integreerimiseks. Peamine neist on graafiline alussüsteem — erinevate VM-ide aknad kuvatakse ühel töölaud, omades oma värvilist raami. Üldiselt põhineb integreerimisvahendid hyperviseuri võimalustel — jagatud mälul (Xen grant table), teavitamisvahenditel (Xen event channel), jagatud salvestusruumil xenstore ja suhtlusprotokollil vchan. Nende abil rakendatakse baaskomponente qrexec ja qubes-rpc, samuti rakendusteenuseid — heli või USB suunamine, failide või lõikepitsi sisu edastamine, käskude täitmine ja rakenduste käivitamine. Samuti on võimalik seada poliitikaid, mis piiravad VM-ide teenuste ligipääsu. Alloleval joonisel on näide kahe VM-interaktsiooni algatamise protseduurist.

Seega toimub töö VM-is ilma võrgu kasutamiseta, mis võimaldab täielikult kasutada iseseisvaid VM-e, et vältida teabe leket. Näiteks viiakse seesugune krüpotgraafiliste operatsioonide jagamine (PGP/SSH) ellu, kus privaatseid võtmeid kasutatakse isoleeritud VM-ides ja need ei välju nende piirest.
Mallid, rakendused ja ühekordsed VM-id
Kogu kasutaja töö Qubesis toimub virtuaalmasinates. Peamine host-operatsioonisüsteem используется nende töö haldamiseks ja visualiseerimiseks. Operatsioonisüsteem installitakse koos põhikomplekti virtuaalmasinatega, mis põhinevad mallidel (TemplateVM). Selline mall esindab Linuxi virtuaalmasinat, mis põhineb Fedora või Debian distributsioonil, koos installitud ja seadistatud integratsioonivahenditega, eraldatud süsteemi- ja kasutajaosadega. Tarkvara installimine ja värskendamine toimub ametliku paketihalduri (dnf või apt) kaudu konfigureeritud hoidlatest, järgides kohustuslikku digitaalallkirja kontrolli (GnuPG). Nende virtuaalmasinate eesmärk on tagada usaldusväärsus rakenduslikele virtuaalmasinatele, mis käivitatakse nende põhjal.
Rakenduslik virtuaalmasin (AppVM) käivitamisel kasutab vastava mallivirtuaalmasina süsteemiosa snapshots'i ning lõpetamisel kustutab selle snapshots'i ilma muudatuste salvestamiseta. Kasutaja vajalikud andmed salvestatakse iga rakendusliku virtuaalmasina jaoks unikaalses kasutajaosas, mis monteeritakse kodukatalooge.

Üheotsaga virtuaalmasinate (disposableVM) kasutamine võib olla turvalisuse seisukohalt kasulik. Selline virtuaalmasin luuakse mallist käivitamise ajal ning seda käivitatakse ainuüksi ühe rakenduse täitmiseks, lõpetades töö pärast selle sulgemist. Üheotsaga virtuaalmasine saab kasutada ka kahtlaste failide avamiseks, mille sisu võib põhjustada konkreetsete rakenduste haavatavuste ära kasutamist. Üheotsaga virtuaalmasina käivitamise võimalus on integreeritud failihaldurisse (Nautilus) ja meiliklienti (Thunderbird).
Windows virtuaalmasinat saab kasutada ka mallide ja üheotsaga virtuaalmasinate loomiseks, sel juhul kantakse kasutajaprofiil eraldi osasse. Meie variandi kohaselt kasutab selline mall kasutaja haldus- ja rakenduste installimise ülesannete jaoks. Malle põhjal luuakse mitu rakenduslikku virtuaalmasinat - piiratud internetiühendusega (sys-firewall'i vaikimisi omadused) ja ilma internetiühenduseta (virtuaalset võrku ei moodustata). Nendes virtuaalmasinates on kõik muudatused ja rakendused, mis on installitud mallile, kergesti ligipääsetavad ning isegi juhul, kui tarkvara paigaldatakse, ei ole neil internetiühendust nõrkuse ära kasutamiseks.
Mugavus Windowsi jaoks
Ülaltoodud võimalused on Qubesi aluseks ja toimivad üsna stabiilselt, kuid raskused tekivad Windowsi integreerimisel. Windowsi integreerimiseks on vaja kasutada Qubesi Windows Tools (QWT) külgprogrammi, mis sisaldab Xen'i tööks vajalikke draivereid, qvideo draiverit ja komplekti tööriistu teabevahetuseks (failide edastamine, lõikelaua jagamine). Installimise ja seadistamise protsess on projekti veebisaidil põhjalikult dokumenteeritud, seega jagame oma kogemusi selle rakendamisel.
Peamised raskused tulenevad põhimõtteliselt puuduvast toe olemasolevale tööriistade komplektile. Peamine arendusmeeskond (QWT) ei paista olevat kergesti kättesaadav ja Windowsi integreerimise projekt ootab peaarendaja tagasisidet. Seetõttu tuli esmalt hinnata töökindlust ja moodustada arusaam selle toetamise võimalustest, kui see peaks olema vajalik. Arendamise ja silumise kõige keerulisem osa on graafikujuhiks, mis simuleerib videoadapterit ja ekraani, et luua pilt jagatud mälus, võimaldades kuvada kogu töölaua või kindla rakenduse akna host-süsteemis. Draiveri töö analüüsi käigus kohandasime koodi Linuxi keskkonnas koostamiseks ja töötasime välja silumise skeemi kahe külgsüsteemi Windowsi vahel. Krosskogumise etapis tegime mõned meie jaoks lihtsustavad muudatused peamiselt "vaikse" tööriistade installimise osas ning kõrvaldasime tüütut jõudluse langust pikema kasutamise ajal VM-is. Töö tulemused vormistasime eraldi , andes sellega võimaluse lühiajaliselt Qubesi peaarendajat.
Küljekeskkonna stabiilsuse kõige kriitilisem etapp on Windowsi käivitamine, kus võib näha tuttavat sinist ekraani (või isegi mitte näha). Enamiku tuvastatud vigadega leidsime erinevad ringlahendused — Xen'i blokidraiverite loobumine, VM-i mälu tasakaalu eemaldamine, võrgu seadistuste fikseerimine ja tuumade arvu vähendamine. Meie külgprogrammi installatsioon töötab täielikult uuendatud Windows 7 ja Windows 10-s (välja arvatud qvideo).
Reaalsest keskkonnast virtuaalsesse liikudes ilmneb probleem Windowsi aktiveerimisega, kui kasutatakse eelinstallitud OEM versioone. Sellised süsteemid kasutavad aktiveerimist litsentside põhjal, mis on määratud seadme UEFI-s. Aktiveerimise korrektseks toimimiseks on vajalik edastada külgsüsteemi üks ACPI osa hostisüsteemist (SLIC tabel) ja natuke kohandada teisi, märkides tootja. Xen võimaldab ACPI täiendavate tabelite sisu seadistada, kuid peate põhjalikke muudatusi vältima. Lahendusele aitas kaasa sarnase projekti OpenXT patch, mis kohandati Qubes ale. Parandused osutusid kasulikeks mitte ainult meile ja need edastati Qubesi põhireposiitoriumi ja Libvirt raamatukogusse.
Windows integreerimise ilmsed puudused on helitoe, USB-seadmete toetuse puudumine ja keerukus meedia käsitlemisel, kuna GPU riistvara tuge pole. Siiski ei takista see VMide kasutamist kontoritöödokumentide töötlemiseks ega takista spetsiifiliste ettevõtte rakenduste käivitamist.
Nõue lülituda võrguühenduseta või piiratud võrgu režiimi pärast Windows VM-i šablooni loomist täideti vastavate rakendus-VM-ide konfiguratsioonide loomisega, samas kui valikuliste eemaldatavate seadmete ühendamise võimalus lahendati OS-i sisseehitatud tööriistade abil — kui need on ühendatud, on need kergesti kättesaadavad süsteemi VM-is sys-usb, kust need saab 'edastada' vajaliku VM-i. Kasutajaliides näeb välja umbes selline.

Lõplik süsteemi variant on kasutajate poolt positiivselt (kuni nii keerulise lahenduse võimalused lubavad) vastu võetud ja süsteemi sisseehitatud tööriistad võimaldasid laiendada kasutuselevõttu mobiilse töötamise kohani, ligipääsuga VPN-i kaudu.
Lõpetuseks
Virtuaaliseerimine aitab üldiselt vähendada Windowsi süsteemide kasutamise riske, mis on toeta jäänud — see ei sunni tagama ühilduvust uute riistvara elementidega, võimaldab vältida või kontrollida juurdepääsu süsteemile võrgu või ühendatavate seadmete kaudu ja loob keskkonna ühekordseks käivitamiseks.
Qubes OS, mis põhineb isolatsiooni ideel virtualiseerimise abil, aitab kasutada neid ja teisi mehhanisme turvalisuse tagamiseks. Paljude arvates on Qubes esmalt anonüümsuse saavutamise vahend, kuid see on kasulik süsteem nii inseneridele, kes sageli ühendavad projekte, infrastruktuuri ja nende juurde pääsemise saladusi, kui ka turvauuringute spetsialistidele. Rakenduste, andmete ja nendevahelise suhtluse eraldamine on esimesed sammud ohuanalüüsi ja kaitsesüsteemi projekteerimise protsessis. Selline eraldamine aitab struktureerida teavet ja vähendada inimfaktori tõttu tekkivate vigade tõenäosust — kiirus, väsimus jne.
Praegu keskendutakse arenduses peamiselt Linux keskkondade funktsionaalsuse laiendamisele. Valmimas on versioon 4.1, mis põhineb Fedora 31-l ja sisaldab aktuaalseid versioone peamistest komponentidest Xen ja Libvirt. Tuleb märkida, et Qubesit arendavad infotehnoloogia turvalisuse spetsialistid, kes saadavad uuendusi alati kiiresti, kui avastatakse uusi ohte või vigu.
Eessõna
Üks arendamisel olevaid eksperimentaalseid võimalusi võimaldab luua VM-e, mis toetavad külastajate ligipääsu GPU-le põhinedes Intel GVT-g tehnoloogial, mis võimaldab kasutada graafikakaardi võimalusi ja oluliselt laiendada süsteemi rakenduste valdkonda. Käesoleva artikli kirjutamise ajal töötab see funktsionaalsus Qubes 4.1 testversioonide jaoks ja on saadaval aadressil .
Allikas: habr.com
