Habrā nav daudz rakstu, kas veltīti operētājsistēmai Qubes, un tie, kurus esmu redzējis, maz apraksta pieredzi. Zemāk ceru to labot, izmantojot Qubes kā aizsardzības līdzekli pret Windows vidi un vienlaikus novērtējot krievvalodīgo lietotāju skaitu sistēmā.

Kāpēc Qubes?
Stāsts par Windows 7 tehniskās atbalsta beigām un lietotāju pieaugošais uztraukums noveda pie nepieciešamības organizēt šīs operētājsistēmas darbību, ievērojot šādus prasības:
- nodrošināt pilnībā aktivizētu Windows 7 lietošanu ar iespēju lietotājam instalēt atjauninājumus un dažādas lietojumprogrammas (tajā skaitā caur internetu);
- īstenot pilnīgu vai selektīvu tīkla mijiedarbību izslēgšanu pēc noteikuma (autonomā darba režīms un trafika filtrēšana);
- nodrošināt iespēju selektīvi pieslēgt ārējus datu nesējus un ierīces.
Šāds ierobežojumu kopums pieprasa īpaši sagatavotu lietotāju, jo tiek atļauta patstāvīga administrēšana, un ierobežojumi nav saistīti ar viņa potenciālo darbību bloķēšanu, bet gan ar iespēju samazināt iespējamās kļūdas vai programmatūras destruktīvo ietekmi. T.i., iekšējā iebrucēja modelī nav.
Meklējot risinājumu, mēs ātri atteicāmies no idejas īstenot ierobežojumus, izmantojot iebūvētas vai papildu Windows līdzekļus, jo ir diezgan sarežģīti efektīvi ierobežot administratora tiesības lietotājam, atstājot viņam iespēju instalēt lietojumprogrammas.
Nākamais risinājuma variants bija izolācija, izmantojot virtualizāciju. Plaši pazīstamie rīki darbvirsmas virtualizācijai (piemēram, tādi kā virtualbox) slikti piemēroti drošības problēmu risināšanai, un norādītie ierobežojumi lietotājam būs jāveic nepārtraukti pārslēdzot vai iestatot viesdatora virtuālās mašīnas (turpmāk - VM) īpašības, kas palielina kļūdu riskus.
Vienlaikus mums bija pieredze Qubes izmantošanā kā lietotāja galddatoru sistēmā, taču bija šaubas par stāvokli ar viesējo Windows. Tika nolemts pārbaudīt aktuālo Qubes versiju, jo noteiktās ierobežojumi ļoti labi iederas šīs sistēmas paradigmas ietvaros, īpaši virtuālās mašīnas šablona īstenošanā un vizuālajā integrācijā. Turpmāk mēģināšu, cik iespējams, īsi pastāstīt par idejām un instrumentiem, ko piedāvā Qubes, izmantojot izvirzītās uzdevuma risināšanas piemērus.
Xen virtualizācijas tipi
Qubes pamats ir hypervizors Xen, kas minimizē resursu pārvaldības funkcijas procesoram, atmiņai un virtuālajām mašīnām. Visi pārējie darbi ar ierīcēm ir koncentrēti dom0, kas balstīts uz Linux kodola (Qubes dom0 izmanto Fedora izplatījumu).

Xen atbalsta vairākus virtualizācijas tipus (es sniegšu piemērus Intel arhitektūrai, lai gan Xen atbalsta arī citus):
- pārvirtuālizācija (PV) — virtualizācijas režīms bez aparatūras atbalsta, kas atgādina konteinera virtualizāciju, var tikt izmantots sistēmām ar pielāgotu kodolu (šo režīmu izmanto dom0);
- pilna virtualizācija (HVM) — šajā režīmā aparatūras atbalsts tiek izmantots procesora resursiem, bet visa pārējā aparatūra tiek emulēta ar QEMU. Tas ir visuniversālākā metode dažādu operētājsistēmu palaišanai;
- pārvirtuālizācija aparatūrai (PVH — ParaVirtualized Hardware) — virtualizācijas režīms, kas izmanto aparatūras atbalstu, kad viesējo sistēmu kodols izmanto draiverus, kas pielāgoti hypervizora iespējām (piemēram, kopīgotai atmiņai), noņemot nepieciešamību pēc QEMU emulācijas un paaugstinot ievades-izvades veiktspēju. Linux kodols sākot ar 4.11 var darboties šādā režīmā.

Sākot ar Qubes versiju 4.0, drošības apsvērumu dēļ tiek atteikšanās no pārvirtuālizācijas režīma (tostarp saistībā ar zināmajām Intel arhitektūras ievainojamībām, kas daļēji tiek novērstas, izmantojot pilnu virtualizāciju), pēc noklusējuma tiek izmantots PVH režīms.
Izmantojot emulāciju (HVM režīms), QEMU palaišana notiek izolētā VM, ko sauc par stubdomain, tādējādi samazinot potenciālo kļūdu izmantošanas riskus (QEMU projekts satur daudz kodu, tostarp saderības nolūkiem).
Šādu režīmu mūsu gadījumā vajadzētu izmantot Windows.
Kalpojošas virtuālās mašīnas
Qubes drošības arhitektūrā vienas no hipervizora galvenajām funkcijām ir PCI ierīču nodošana viesējo vidē. Ērīču izslēgšana ļauj izolēt viesējo sistēmas daļu no ārējiem uzbrukumiem. Xen to atbalsta gan PV, gan HVM režīmos; otrajā gadījumā tam nepieciešama IOMMU (Intel VT-d) atbalsts — aparatūras atmiņas vadība virtualizējamām ierīcēm.
Tādējādi tiek izveidotas vairākas sistēmu virtuālās mašīnas:
- sys-net, kurai tiek nodoti tīkla ierīces un kas tiek izmantota kā tilts citām VM, piemēram, īstenojot ugunsmūra funkcijas vai VPN tīkla klientu;
- sys-usb, kurai tiek nodoti USB un citi perifērijas kontrolieri;
- sys-firewall, kas neizmanto ierīces, bet darbojas kā ugunsmūris pievienotajām VM.
Lai strādātu ar USB ierīcēm, tiek izmantoti proxy pakalpojumi, kas nodrošina, tostarp:
- HID (human interface device) ierīču klasei komandu nodošanu dom0;
- noņemamajiem datu nesējiem nodrošinot ierīču apjomu pāradresāciju citām VM (izņemot dom0);
- pāradresējot tieši USB ierīci (izmanto USBIP un integrācijas rīkus).
Šādā konfigurācijā veiksmīgs uzbrukums caur tīkla steku vai pievienojamām ierīcēm var novest pie kompromitācijas tikai uzsāktajā kalpojošajā VM, nevis visai sistēmai kopumā. Un pēc kalpojošās VM restartēšanas tā tiks ielādēta sākotnējā stāvoklī.
VM integrācijas rīki
Ir vairāki veidi, kā mijiedarboties ar virtuālās mašīnas darbvirsmu — instalējot lietotnes viesu sistēmā vai emulējot video, izmantojot virtualizācijas rīkus. Kā viesu lietotnes var darboties dažādi universāli attālinātā piekļuves rīki (RDP, VNC, Spice u.c.) vai rīki, kas pielāgoti konkrētam hipervizoram (šāda veida instrumentus parasti dēvē par viesu utilītēm). Var izmantot arī jauktu variantu, kad hipervizors emulē ievades-izvades operācijas viesu sistēmā, bet ārpus tā nodrošina iespēju izmantot protokolu, kas apvieno ievades-izvades, piemēram, kā tas ir ar Spice. Šajā procesā attālinātās piekļuves rīki parasti optimizē attēlu, jo pieņem, ka darbs notiek caur tīklu, kas negatīvi ietekmē attēla kvalitāti.
Qubes nodrošina savus līdzekļus VM integrācijai. Pirmkārt, tā ir grafiskā apakšsistēma — logi no dažādām VM tiek rādīti vienotā darbvirsmā ar savu krāsu apmali. Kopumā integrācijas rīki balstās uz hipervizora iespējām — dalīto atmiņu (Xen grant table), paziņošanas līdzekļiem (Xen event channel), dalīto glabātuvi xenstore un komunikācijas protokolu vchan. To palīdzību izmanto, lai īstenotu pamatelementus qrexec un qubes-rpc, kā arī lietojumprogrammu pakalpojumus — skaņas vai USB novirzīšanu, failu vai starpliktuves satura pārsūtīšanu, komandu izpildi un lietojumprogrammu palaišanu. Ir iespēja izveidot politiku, kas ierobežo pieejamos pakalpojumus VM. Zemāk redzams divu VM mijiedarbības inicializācijas piemērs.

Tādējādi darbs VM notiek bez tīkla izmantošanas, kas ļauj pilnvērtīgi izmantot autonomas VM, lai izvairītos no informācijas noplūdes. Piemēram, šādā veidā tiek īstenota kriptogrāfisko operāciju (PGP/SSH) dalīšana, kad slepenās atslēgas tiek izmantotas izolētās VM un nepārkāpj to robežas.
Veidnes, lietojumprogrammas un vienreizējās VM
Viss lietotāja darbs Qubes tiek veikts virtualizētajās mašīnās. Galvenā hosta sistēma tiek izmantota, lai pārvaldītu to darbību un vizualizāciju. Operētājsistēma tiek uzstādīta kopā ar pamatpakalpojumu komplektu virtualizētajām mašīnām, kuras veidotas uz veidņu pamata (TemplateVM). Šī veidne ir Linux VM, kas balstīta uz Fedora vai Debian izplatījumu, ar uzstādītām un konfigurētām integrācijas līdzekļiem, kā arī atsevišķām sistēmas un lietotāja apgabaliem. Programmatūras uzstādīšana un atjaunināšana notiek ar standarta pakotņu pārvaldnieku (dnf vai apt) no konfigurētajiem repozitorijiem, obligāti pārbaudot digitālo parakstu (GnuPG). Šo VM mērķis ir nodrošināt uzticību uz lietojumprogrammām, kas tiek palaistas uz to pamata.
Lietojumprogrammu VM (AppVM) palaišanas brīdī izmanto attiecīgā veidne VM sistēmas apgabala attēlu, un pēc tam, kad tas tiek noslēgts, tiek dzēsts šis attēls bez izmaiņu saglabāšanas. Nepieciešamie lietotāja dati tiek glabāti unikālā katras lietojumprogrammu VM lietotāja apgabala, kas tiek pievienots mājas katalogam.

Drošības ziņā noderīga var būt vienreizējās VM (disposable VM) izmantošana. Šāda VM tiek izveidota par pamatu veidnei palaišanas brīdī un tiek palaista ar vienu mērķi — izpildīt vienu lietojumprogrammu, beidzot darbu tās aizvēršanai. Vienreizējās VM var tikt izmantotas, lai atvērtu aizdomīgus failus, kuru saturs var novest pie konkrētu lietojumprogrammu ievainojamību izmantošanas. Iespēja palaist vienreizēju VM ir integrēta failu pārlūkā (Nautilus) un e-pasta klientā (Thunderbird).
Windows VM var tikt izmantota arī, lai izveidotu veidni un vienreizēju VM, tādēļ lietotāja profils tiek pārvietots atsevišķā apgabalā. Mūsu variantā šāda veidne tiks izmantota lietotāja administrēšanas uzdevumiem un lietojumprogrammu uzstādīšanai. Uz šīs veidnes tiks izveidotas vairākas lietojumprogrammu VM — ar ierobežotu piekļuvi tīklam (standarta sys-firewall iespējas) un bez piekļuves tīklam vispār (netiks izveidots virtuāls tīkla ierīce). Šajās VM būs pieejami visi uzlabojumi un lietojumprogrammas, kas tiek uzstādītas veidnē, un pat gadījumā, ja tiek ieviestas programmatūras aģenti, tām nebūs pieejas tīklam kompromisei.
Cīņa par Windows
Iepriekš minētās iespējas ir Qubes pamats un darbojas diezgan stabilitāti, bet sarežģījumi sākas ar Windows. Lai integrētu Windows, ir nepieciešams izmantot Qubes Windows Tools (QWT) viesu rīku kopumu, kas ietver draiverus darbam ar Xen, qvideo draiveri un utilītu komplektu informācijas apmaiņai (failu pārsūtīšana, starpliktuve). Instalācijas un iestatīšanas process ir sīkāk dokumentēts projekta mājaslapā, tādēļ dalīsimies mūsu pieredzē.
Galvenā problēma būtībā ir izstrādātā rīka atbalsta trūkums. Izskatās, ka galvenie izstrādātāji (QWT) nav pieejami, un projekta integrācija ar Windows ir gaidīšanas režīmā, gaidot galveno izstrādātāju. Tāpēc vispirms bija jānovērtē darbspējas un jāizveido izpratne par iespēju to pats atbalstīt, ja nepieciešams. Visgrūtāk izstrādāt un labot ir grafiskais draiveris, kas imitē video adapteri un displeju, lai veidotu attēlu kopīgā atmiņā, ļaujot attēlot visu darbvirsmu vai tieši lietojumprogrammas logu hosta sistēmā. Analizējot draivera darbību, mēs pielāgojām kodu, lai to veidotu Linux vidē un izstrādājām labojumu shēmu starp divām viesu Windows sistēmām. Krosbūves posmā mēs veicām vairākus vienkāršojošus uzlabojumus, galvenokārt „klusās” utilītu uzstādīšanas daļā, kā arī novēršam kaitinošo veiktspējas pasliktināšanos, ilgi strādājot VM. Mūsu darba rezultātus mēs noformējām atsevišķi. , tādējādi īslaicīgi galveno Qubes izstrādātāju.
Viskritiskākais posms viesu sistēmas stabilitātes ziņā ir Windows palaišana; šeit var redzēt pazīstamo zilo ekrānu (vai pat neredzēt to). Lielākajai daļai atklāto kļūdu tika atrasti dažādi apietšanas varianti — atteikšanās no Xen draiveriem bloķētām ierīcēm, atslēgšana no VM atmiņas līdzsvarošanas, tīkla iestatījumu fiksācija un kodolu skaita minimizācija. Mūsu viesu līdzekļu komplekts tiek uzstādīts un darbojas pilnībā atjaunotā Windows 7 un Windows 10 (izņemot qvideo).
Pārejot no reālas vides uz virtuālo, rodas problēma ar Windows aktivāciju, ja tiek izmantotas iepriekš instalētas OEM versijas. Šādas sistēmas izmanto aktivāciju, kas balstīta uz licencēm, kas ierakstītas ierīces UEFI. Lai aktivācija darbotos pareizi, nepieciešams pārsūtīt viesosistēmā vienu no ACPI sadaļām no hosta sistēmas, pilnīgi (SLIC table) un nedaudz mainīt citas, norādot ražotāju. Xen ļauj konfigurēt papildu ACPI tabulu saturu, bet ne bez galveno modificēšanas. Ar risinājumu palīdzēja plāksteris no līdzīga projekta OpenXT, kas tika pielāgots Qubes. Labojumi izrādījās noderīgi ne tikai mums un tika nodoti galvenajam Qubes repozitorijam un Libvirt bibliotēkai.
Acīmredzamajiem trūkumiem Windows integrācijas līdzekļos ir jāmin skaņas, USB ierīču atbalsta trūkums un grūtības ar multividi, jo nav aparatūras GPU atbalsta. Tomēr minētās problēmas netraucē VM izmantošanu biroja dokumentu apstrādē un neapgrūtina specifisku korporatīvo lietojumprogrammu palaišanu.
Prasības pārslēgties uz darba režīmu bez tīkla vai ar ierobežotu tīklu pēc Windows VM veidņu izveides tika izpildītas, izveidojot atbilstošas lietošanas VM konfigurācijas, un iespēja selektīvi pieslēgtē pagaidu nesējus tika risināta ar OS iebūvētajiem līdzekļiem — pievienojot, tie ir pieejami sistēmas VM sys-usb, no kuras var tikt "pārsūtīti" pienācīgajā VM. Lietotāja darbvirsma izskatās aptuveni šādi.

Sistēmas galīgā versija tika pozitīvi (cik komplekss risinājums to atļāva) pieņemta lietotāju vidū, un sistēmas iebūvētie līdzekļi ļāva paplašināt lietošanu līdz mobilajai darbam vietai ar piekļuvi caur VPN.
Noslēgumā
Virtualizācija kopumā ļauj samazināt riskus, kas saistīti ar Windows sistēmu izmantošanu, kuras palikušas bez atbalsta — tā nepiespiež nodrošināt saderību ar jauniem aparatūras līdzekļiem, ļauj izslēgt vai kontrolēt piekļuvi sistēmai caur tīklu vai pieslēdzamām ierīcēm un ļauj izveidot vidi vienreizējai izmantošanai.
Qubes OS, kas balstās uz izolācijas ideju, izmantojot virtualizāciju, palīdz izmantot šos un citus mehānismus, lai nodrošinātu drošību. No ārpuses daudzi redz Qubes vispirms kā tieksmi uz anonimitāti, taču tā ir noderīga sistēma gan inženieriem, kuri bieži apvieno projektus, infrastruktūru un piekļuves noslēpumus, gan arī drošības pētniekiem. Lietojumprogrammu, datu un to mijiedarbības formāla dalīšana ir sākuma soļi draudu analīzei un aizsardzības sistēmas projektēšanai. Šāda dalīšana palīdz strukturēt informāciju un samazināt cilvēka faktora kļūdu iespēju — skrējiena, noguruma utt.
Šobrīd galvenā uzmanība izstrādē tiek pievērsta Linux vidēs funkcionalitātes paplašināšanai. Tiek gatavota versija 4.1, kas būs balstīta uz Fedora 31 un iekļaus aktuālas versijas galvenajiem komponentiem Xen un Libvirt. Jāatzīmē, ka Qubes izstrādā profesionāļi informācijas drošības jomā, kuri vienmēr ātri izlaidīs atjauninājumus, ja tiks atklāti jauni draudi vai kļūdas.
Pēcvārds
Viena no mūsu attīstītajām eksperimentālajām iespējām ļauj izveidot VM ar atbalstu viesu piekļuvei GPU balstoties uz Intel GVT-g tehnoloģiju, kas ļauj izmantot grafiskā adaptora iespējas un būtiski paplašināt sistēmas pielietojuma jomu. Raksta rakstīšanas brīdī šī funkcionalitāte darbojas Qubes 4.1 testa izlaidumiem un ir pieejama uz .
Avots: habr.com
