Pe Habr, nu există atât de multe articole dedicate sistemului de operare Qubes, iar cele pe care le-am văzut abordează puțin experiența aplicării. Sper să corectez acest lucru prin exemplificarea utilizării Qubes ca instrument de protecție a mediului Windows și, totodată, să evaluăm numărul utilizatorilor vorbitori de limbă română ai sistemului.

De ce Qubes?
Povestea cu încheierea suportului tehnic pentru Windows 7 și creșterea anxietății utilizatorilor a dus la necesitatea de a organiza utilizarea acestui sistem de operare, având în vedere următoarele cerințe:
- să asigure utilizarea unei Windows 7 complet activate, cu posibilitatea de a instala actualizări și diverse aplicații de către utilizator (inclusiv prin Internet);
- să implementeze excluziuni complete sau selective ale interacțiunilor rețelei în funcție de condiții (moduri offline și filtrarea traficului);
- să ofere posibilitatea de conectare selectivă a suporturilor și dispozitivelor externe.
Această setare de restricții presupune un utilizator clar pregătit, deoarece se permite auto-administrarea, iar restricțiile nu sunt legate de blocarea acțiunilor sale potențiale, ci de eliminarea posibilelor erori sau a impactului destructiv al programelor. Adică, nu există un infractor intern în model.
În căutarea unei soluții, am renunțat rapid la ideea de a implementa restricții prin intermediul instrumentelor integrate sau suplimentare ale Windows, deoarece este destul de dificil să limitezi eficient un utilizator cu privilegii de administrator, lăsându-i posibilitatea de a instala aplicații.
Următoarea variantă de soluție a fost izolarea prin virtualizare. Instrumentele bine cunoscute de virtualizare desktop (de exemplu, cum ar fi virtualbox) sunt slab adaptate pentru a rezolva probleme de securitate și restricțiile enumerate vor trebui făcute de utilizator prin comutarea sau configurarea constantă a proprietăților mașinii virtuale gazdă (VM), ceea ce crește riscurile de eroare.
În același timp, am avut experiență în utilizarea Qubes ca sistem de operare pentru birou, dar au fost îndoieli cu privire la stabilitatea funcționării cu Windows ca sistem gazdă. A fost decis să verificăm versiunea actuală a Qubes, deoarece limitările impuse se potrivesc foarte bine în paradigma acestui sistem, mai ales în ceea ce privește implementarea șabloanelor de mașini virtuale și integrarea vizuală. Mai departe, voi încerca să povestesc pe scurt despre ideile și instrumentele Qubes, folosind exemplul soluționării sarcinii propuse.
Tipuri de virtualizare Xen
La baza Qubes se află hipervizorul Xen, care minimizează funcțiile de gestionare a resurselor procesorului, memoriei și mașinilor virtuale. Toată activitatea cu dispozitivele este concentrată în dom0, bazată pe nucleul Linux (în Qubes, dom0 folosește distribuția Fedora).

Xen suportă mai multe tipuri de virtualizare (voi oferi exemple pentru arhitectura Intel, deși Xen suportă și altele):
- paravirtualizare (PV) — modul de virtualizare fără utilizarea suportului hardware, asemănător cu virtualizarea containerelor, poate fi folosit pentru sisteme cu nucleu adaptat (în acest mod funcționează dom0);
- virtualizare completă (HVM) — în acest mod, resursele procesorului utilizate beneficiază de suport hardware, iar toate celelalte echipamente sunt emulate cu ajutorul QEMU. Aceasta este cea mai versatilă metodă de lansare a diferitelor sisteme de operare;
- paravirtualizarea echipamentelor (PVH — ParaVirtualized Hardware) — modul de virtualizare care folosește suport hardware, în care nucleul sistemului gazdă folosește drivere adaptate la capacitățile hipervizorului (de exemplu, memorie partajată), eliminând necesitatea emulării QEMU și îmbunătățind performanța input-output. Nucleul Linux începând cu versiunea 4.11 poate funcționa în acest mod.

Începând cu versiunea Qubes 4.0, din motive de securitate, se renunță la utilizarea modului de paravirtualizare (inclusiv în legătură cu vulnerabilitățile cunoscute ale arhitecturii Intel, care sunt parțial compensate prin utilizarea virtualizării complete), modul PVH este utilizat în mod implicit.
În utilizarea emulării (modul HVM), lansarea QEMU se efectuează într-o VM izolată numită stubdomain, reducând astfel riscurile exploatării erorilor potențiale din implementare (proiectul QEMU conține mult cod, inclusiv pentru compatibilitate).
Acest mod ar trebui utilizat în cazul nostru pentru Windows.
Mașini virtuale de serviciu
În arhitectura de securitate Qubes, una dintre caracteristicile cheie ale hipervizorului este transmiterea dispozitivelor PCI în mediu gazdă. Excluderea echipamentului permite izolarea aspectului gazdă al sistemului de atacuri externe. Xen suportă acest lucru pentru modurile PV și HVM; în cazul celui de-al doilea, este necesară suportarea IOMMU (Intel VT-d) — gestionare hardware a memoriei pentru dispozitivele virtualizate.
Astfel, se creează mai multe mașini virtuale de sistem:
- sys-net, căreia îi sunt atribuite dispozitivele de rețea și care este utilizată ca pod pentru alte VM-uri, de exemplu, pentru a implementa funcții de firewall sau client VPN;
- sys-usb, căreia îi sunt atribuite controller-e USB și alte controlere de dispozitive periferice;
- sys-firewall, care nu utilizează dispozitive, ci funcționează ca un firewall pentru VM-urile conectate.
Pentru a lucra cu dispozitive USB, se utilizează servicii proxy, care asigură, printre altele:
- pentru clasa de dispozitive HID (dispozitive de interfață umană) transmiterea comenzilor în dom0;
- pentru medii de stocare externe, redirecționarea volumelor dispozitivelor către alte VM-uri (cu excepția dom0);
- redirecționarea dispozitivului USB direct (se utilizează USBIP și instrumente de integrare).
Într-o astfel de configurație, un atac reușit prin stiva de rețea sau prin dispozitivele conectate poate duce la compromiterea doar a VM-ului de serviciu activ, nu a întregului sistem. Apoi, după repornirea VM-ului de serviciu, acesta va fi încărcat în starea sa inițială.
Instrumente de integrare VM
Există mai multe moduri de a interacționa cu desktopul unei mașini virtuale - instalarea aplicațiilor în sistemul gazdă sau emularea video prin mijloacele de virtualizare. Aplicațiile gazdă pot fi diverse instrumente universale de acces de la distanță (RDP, VNC, Spice etc.) sau adaptate pentru un anumit hypervisor (aceste instrumente sunt de obicei denumite utilitare gazdă). O variantă mixtă poate fi utilizată, în care hypervisorul emulează I/O pentru sistemul gazdă, iar din exterior oferă posibilitatea de a utiliza un protocol care combină I/O, cum ar fi Spice. În acest context, instrumentele de acces de la distanță optimizază de obicei imaginile, deoarece presupun operarea prin rețea, ceea ce afectează negativ calitatea imaginii.
Qubes oferă propriile instrumente pentru integrarea VM-urilor. În primul rând, aceasta este subsistemul grafic - feroneri din diferite VM-uri sunt afișate pe un singur desktop cu o ramă colorată proprie. În general, instrumentele de integrare se bazează pe capacitățile hypervisorului - memorie partajată (Xen grant table), instrumente de notificare (Xen event channel), stocare partajată xenstore și protocol de comunicare vchan. Cu ajutorul lor sunt implementate componentele de bază qrexec și qubes-rpc, precum și servicii aplicație - redirecționarea sunetului sau USB, transferul de fișiere sau conținutul clipboard-ului, executarea comenzilor și lansarea aplicațiilor. Există opțiunea de a stabili politici care să limiteze serviciile disponibile pe VM. În figura de mai jos este un exemplu de procedură de inițializare a interacțiunii între două VM-uri.

Astfel, activitatea în VM se desfășoară fără utilizarea rețelei, ceea ce permite utilizarea pe deplin a VM-urilor autonome pentru a evita scurgerile de informații. De exemplu, separarea operațiunilor criptografice (PGP/SSH) este implementată astfel, când cheile private sunt utilizate în VM-uri izolate și nu ies din limitele lor.
Șabloane, aplicative și VM-uri temporare
Toată activitatea utilizatorului în Qubes se desfășoară în mașini virtuale. Sistemul de gazdă principal este utilizat pentru a gestiona funcționarea acestora și pentru a le vizualiza. Sistemul de operare este instalat împreună cu un set de baze de mașini virtuale bazate pe șabloane (TemplateVM). Un astfel de șablon reprezintă o mașină virtuală Linux bazată pe distribuția Fedora sau Debian, cu instrumentele de integrare instalate și configurate, precum și cu partajări de sistem și utilizator dedicate. Instalarea și actualizarea software-ului se face prin managerul de pachete standard (dnf sau apt) din repositoare configurate, cu verificarea necesară a semnăturii digitale (GnuPG). Scopul acestor mașini virtuale este de a asigura încrederea în mașinile virtuale de aplicații care sunt lansate pe baza lor.
Mașina virtuală de aplicații (AppVM) la pornire folosește o captură a partajării de sistem corespunzătoare șablonului de mașină virtuală, iar după finalizare, șterge această captură fără a salva modificările. Datele necesare utilizatorului sunt stocate într-un partaj dedicat pentru fiecare mașină virtuală de aplicație, care este montat în directorul personal.

Utilizarea mașinilor virtuale de unică folosință (disposableVM) poate fi utilă din punct de vedere al securității. O astfel de mașină virtuală este creată pe baza unui șablon în momentul pornirii și este lansată cu un singur scop — de a rula o aplicație, încheind activitatea după închiderea acesteia. Mașinile virtuale de unică folosință pot fi folosite pentru a deschide fișiere suspecte, al căror conținut ar putea duce la exploatarea vulnerabilităților anumitor aplicații. Posibilitatea de a lansa o mașină virtuală de unică folosință este integrată în managerul de fișiere (Nautilus) și în clientul de email (Thunderbird).
Mașina virtuală Windows poate fi folosită și pentru a crea un șablon și o mașină virtuală de unică folosință, pentru aceasta profilul utilizatorului fiind transferat într-un partaj separat. În varianta noastră, acest șablon va fi utilizat de utilizator pentru sarcini de administrare și instalare de aplicații. Pe baza șablonului se vor crea mai multe mașini virtuale de aplicație — cu acces restricționat la rețea (prin intermediul funcționalităților standard sys-firewall) și fără acces la rețea deloc (nefiind creat un dispozitiv de rețea virtual). Pentru a lucra în aceste mașini virtuale vor fi disponibile toate modificările și aplicațiile instalate în șablon și chiar în cazul introducerii de software malign, acestea nu vor avea acces la rețea pentru compromitere.
Lupta pentru Windows
Funcționalitățile descrise mai sus constituie baza Qubes și funcționează destul de stabil, dificultățile încep cu Windows. Pentru integrarea Windows, este necesar să se utilizeze setul de instrumente pentru gazde Qubes Windows Tools (QWT), care include drivere pentru funcționarea cu Xen, driverul qvideo și un set de utilitare pentru schimbul de informații (transfer fișiere, clipboard). Procesul de instalare și configurare este detaliat în documentația de pe site-ul proiectului, așa că vom împărtăși experiența noastră de utilizare.
Dificultatea principală constă de fapt în absența suportului pentru instrumentele dezvoltate. Cheia dezvoltatorilor (QWT) pare a fi indisponibilă și proiectul de integrare cu Windows așteaptă un dezvoltator principal. Prin urmare, a fost esențial să evaluăm funcționalitatea și să ne formăm o înțelegere asupra posibilității de suport în mod autonom, dacă va fi necesar. Cea mai complicată parte a dezvoltării și depanării este driverul grafic, care emulează adaptorul video și monitorul pentru a forma imaginea în memorie partajată, permițând vizualizarea întregului birou sau fereastra aplicației în fereastra sistemului gazdă. În timpul analizei funcționării driverului, am adaptat codul pentru a funcționa în mediu Linux și am lucrat la schema de depanare între două sisteme Windows gazdă. În etapa de cross-build, am realizat câteva modificări care ne-au simplificat procesul, în principal prin "instalarea silențioasă" a utilitarelor, și am eliminat degradarea deranjantă a performanței în timpul utilizării îndelungate în VM. Rezultatele muncii noastre le-am organizat într-un depozit separat. , astfel inspirând Cel mai critic pas în ceea ce privește stabilitatea sistemului de operare guest este pornirea Windows, unde se poate observa ecranul albastru familiar (sau chiar deloc). Pentru majoritatea erorilor identificate, au fost găsite diverse variante de ocolire — abandonarea driverelor Xen pentru dispozitivele blocante, dezactivarea echilibrării memoriei VM, fixarea setărilor rețelei și minimizarea numărului de nuclee. Pachetul nostru de instrumente pentru gazde se instalează și funcționează pe Windows 7 și Windows 10 complet actualizate (cu excepția qvideo).
Cea mai critică etapă în ceea ce privește stabilitatea sistemului de găzduire este pornirea Windows-ului, aici putem vedea cunoscutul ecran albastru (sau poate chiar nu-l vedem). Pentru majoritatea erorilor identificate au fost găsite diverse variante de soluționare — abandonarea driverelor Xen pentru dispozitivele bloc, dezactivarea echilibrării memoriei VM, fixarea setărilor de rețea și minimizarea numărului de nuclee. Construcția noastră de instrumente de găzduire se instalează și funcționează pe Windows 7 și Windows 10 complet actualizate (cu excepția qvideo).
Atunci când se trece de la un mediu fizic la unul virtual, apare problema activării Windows în cazul utilizării versiunilor OEM preinstalate. Aceste sisteme utilizează activarea pe baza licențelor specificate în UEFI-ul dispozitivului. Pentru o activare corectă, este necesar să se transpună în sistemul găzduit una dintre secțiunile ACPI ale sistemului gazdă (tabela SLIC) și să se modifice puțin altele, specificând producătorul. Xen permite configurarea conținutului tabelilor ACPI adiționale, dar fără modificarea celor principale. Soluția a fost oferită de un patch de la un proiect similar, OpenXT, care a fost adaptat pentru Qubes. Corecțiile s-au dovedit utile nu doar pentru noi și au fost integrate în repozitoriul principal Qubes și în biblioteca Libvirt.
Printre dezavantajele evidente ale instrumentelor de integrare Windows se numără lipsa suportului pentru sunet, dispozitive USB și dificultatea de a lucra cu media, deoarece nu există suport hardware pentru GPU. Cu toate acestea, aceste aspecte nu împiedică utilizarea VM-urilor pentru lucrul cu documente de birou și nu constituie un obstacol în rularea aplicațiilor corporative specifice.
Cererea de a comuta în modul de funcționare fără rețea sau cu rețea limitată după crearea unui șablon de VM Windows a fost îndeplinită prin crearea unor configurații corespunzătoare pentru VM-uri aplicaționale, iar posibilitatea de conectare selectivă a suporturilor externe a fost, de asemenea, rezolvată prin instrumentele standard ale sistemului de operare — la conectare, acestea sunt disponibile în VM-ul sistemic sys-usb, de unde pot fi "transmise" către VM-ul necesar. Desktop-ul utilizatorului arată aproximativ astfel.

Versiunea finală a sistemului a fost primită pozitiv (în măsura în care o astfel de soluție complexă permite) de către utilizatori, iar instrumentele standard ale sistemului au permis extinderea utilizării până la un loc de muncă mobil pentru utilizator cu acces prin VPN.
În concluzie
Virtualizarea, în general, permite reducerea riscurilor asociate cu utilizarea sistemelor Windows lăsate fără suport — nu obligă la asigurarea compatibilității cu noi hardware-uri, permite excluderea sau controlul accesului la sistem prin rețea sau prin dispozitive conectate și permite implementarea unui mediu pentru execuția unică.
Sistemul Qubes, bazat pe ideea de izolare prin virtualizare, ajută la utilizarea acestor și altor mecanisme pentru a asigura securitatea. Din exterior, mulți văd în Qubes mai întâi o aspirație către anonimat, dar este un sistem util pentru ingineri, care adesea combină proiecte, infrastructuri și secrete de acces la acestea, precum și pentru cercetători în securitate. Separarea aplicațiilor, datelor și formalizarea interacțiunilor acestora sunt pași de început în analiza amenințărilor și proiectarea unui sistem de protecție. Această separare ajută la structurarea informațiilor și reduce probabilitatea erorilor cauzate de factorul uman - grabă, oboseală etc.
În prezent, accentul principal în dezvoltare se pune pe extinderea funcționalității mediilor Linux. Se pregătește pentru lansare versiunea 4.1, care va fi bazată pe Fedora 31 și va include versiunile actuale ale componentelor cheie Xen și Libvirt. Este important de menționat că Qubes este dezvoltat de profesioniști în domeniul securității informațiilor, care lansează rapid actualizări în cazul identificării de noi amenințări sau erori.
Cuvânt înainte
Una dintre funcțiile experimentale pe care le dezvoltăm permite crearea de VM-uri cu suport pentru accesul GPU al oaspeților, bazat pe tehnologia Intel GVT-g, ceea ce permite utilizarea capacităților adaptorului grafic și extinderea semnificativă a domeniului de aplicare al sistemului. La momentul redactării acestui articol, această funcționalitate funcționează pentru versiunile de testare ale Qubes 4.1 și este disponibilă pe .
Sursa: habr.com
