Folosind QubesOS pentru a lucra cu Windows 7

Nu există multe articole despre Habré dedicate sistemului de operare Qubes, iar cele pe care le-am văzut nu descriu prea mult din experiența utilizării acestuia. Sub tăietură, sper să corectez acest lucru folosind exemplul utilizării Qubes ca mijloc de protecție (împotriva) mediului Windows și, în același timp, să estimez numărul de utilizatori vorbitori de limbă rusă ai sistemului.

Folosind QubesOS pentru a lucra cu Windows 7

De ce Qubes?

Povestea sfârșitului suportului tehnic pentru Windows 7 și anxietatea tot mai mare a utilizatorilor a dus la necesitatea organizării muncii acestui sistem de operare, ținând cont de următoarele cerințe:

  • asigurați utilizarea Windows 7 complet activat, cu posibilitatea utilizatorului de a instala actualizări și diverse aplicații (inclusiv prin Internet);
  • implementați excluderea completă sau selectivă a interacțiunilor rețelei în funcție de condiții (funcționare autonomă și moduri de filtrare a traficului);
  • oferă posibilitatea de a conecta selectiv medii și dispozitive amovibile.

Acest set de restricții presupune un utilizator clar pregătit, întrucât este permisă administrarea independentă, iar restricțiile nu sunt legate de blocarea acțiunilor sale potențiale, ci de excluderea eventualelor erori sau efecte distructive ale software-ului. Acestea. Nu există niciun infractor intern în model.

În căutarea unei soluții, am abandonat rapid ideea de a implementa restricții folosind instrumente Windows încorporate sau suplimentare, deoarece este destul de dificil să restricționezi eficient un utilizator cu drepturi de administrator, lăsându-i posibilitatea de a instala aplicații.

Următoarea soluție a fost izolarea folosind virtualizarea. Instrumentele binecunoscute pentru virtualizarea desktopului (de exemplu, cum ar fi virtualbox) sunt prost potrivite pentru rezolvarea problemelor de securitate, iar restricțiile enumerate vor trebui să fie făcute de utilizator prin comutarea sau ajustarea constantă a proprietăților mașinii virtuale invitate (denumită în continuare ca VM), ceea ce crește riscul de erori.

În același timp, am avut experiență în utilizarea Qubes ca sistem desktop al utilizatorului, dar aveam îndoieli cu privire la stabilitatea lucrului cu Windows invitat. S-a decis să se verifice versiunea actuală a Qubes, deoarece limitările declarate se încadrează foarte bine în paradigma acestui sistem, în special implementarea șabloanelor de mașini virtuale și integrarea vizuală. În continuare, voi încerca să vorbesc pe scurt despre ideile și instrumentele Qubes, folosind exemplul de rezolvare a problemei.

Tipuri de virtualizare Xen

Qubes se bazează pe hypervisorul Xen, care minimizează funcțiile de gestionare a resurselor procesorului, memoriei și mașinilor virtuale. Toate celelalte lucrări cu dispozitive sunt concentrate în dom0 bazat pe nucleul Linux (Qubes pentru dom0 utilizează distribuția Fedora).

Folosind QubesOS pentru a lucra cu Windows 7

Xen acceptă mai multe tipuri de virtualizare (voi da exemple pentru arhitectura Intel, deși Xen acceptă altele):

  • paravirtualization (PV) - un mod de virtualizare fără utilizarea suportului hardware, care amintește de virtualizarea containerului, poate fi utilizat pentru sistemele cu un nucleu adaptat (dom0 funcționează în acest mod);
  • virtualizare completă (HVM) - în acest mod, suportul hardware este utilizat pentru resursele procesorului și toate celelalte echipamente sunt emulate folosind QEMU. Acesta este cel mai universal mod de a rula diverse sisteme de operare;
  • paravirtualizarea hardware-ului (PVH - ParaVirtualized Hardware) - un mod de virtualizare care utilizează suport hardware atunci când, pentru a lucra cu hardware, nucleul sistemului oaspete utilizează drivere adaptate capacităților hipervizorului (de exemplu, memorie partajată), eliminând necesitatea emulării QEMU și creșterea performanței I/O. Nucleul Linux începând de la 4.11 poate funcționa în acest mod.

Folosind QubesOS pentru a lucra cu Windows 7

Începând cu Qubes 4.0, din motive de securitate, utilizarea modului de paravirtualizare este abandonată (inclusiv din cauza vulnerabilităților cunoscute din arhitectura Intel, care sunt parțial atenuate de utilizarea virtualizării complete); modul PVH este utilizat implicit.

Când se utilizează emularea (modul HVM), QEMU este lansat într-o VM izolată numită stubdomain, reducând astfel riscurile de exploatare a potențialelor erori în implementare (proiectul QEMU conține mult cod, inclusiv pentru compatibilitate).
În cazul nostru, acest mod ar trebui utilizat pentru Windows.

Service mașini virtuale

În arhitectura de securitate Qubes, una dintre capacitățile cheie ale hypervisorului este transferul dispozitivelor PCI în mediul oaspeților. Excluderea hardware vă permite să izolați partea gazdă a sistemului de atacurile externe. Xen acceptă acest lucru pentru modurile PV și HVM, în al doilea caz necesită suport pentru IOMMU (Intel VT-d) - managementul memoriei hardware pentru dispozitive virtualizate.

Acest lucru creează mai multe mașini virtuale de sistem:

  • sys-net, către care sunt transferate dispozitivele de rețea și care este folosit ca punte pentru alte VM-uri, de exemplu, cele care implementează funcțiile unui firewall sau unui client VPN;
  • sys-usb, către care sunt transferate controlere USB și alte dispozitive periferice;
  • sys-firewall, care nu folosește dispozitive, dar funcționează ca un firewall pentru mașinile virtuale conectate.

Pentru a lucra cu dispozitive USB, se folosesc servicii proxy, care oferă, printre altele:

  • pentru clasa de dispozitiv HID (dispozitiv de interfață umană), trimițând comenzi către dom0;
  • pentru mediile amovibile, redirecționarea volumelor dispozitivului către alte VM (cu excepția dom0);
  • redirecționarea directă către un dispozitiv USB (folosind USBIP și instrumente de integrare).

Într-o astfel de configurație, un atac reușit prin stiva de rețea sau dispozitivele conectate poate duce la compromisul numai a VM-ului serviciului care rulează, și nu a întregului sistem în ansamblu. Și după repornirea serviciului VM, acesta va fi încărcat în starea sa inițială.

Instrumente de integrare VM

Există mai multe modalități de a interacționa cu desktopul unei mașini virtuale - instalarea aplicațiilor în sistemul oaspete sau emularea video folosind instrumente de virtualizare. Aplicațiile guest pot fi diverse instrumente universale de acces la distanță (RDP, VNC, Spice etc.) sau adaptate unui anumit hypervisor (astfel de instrumente sunt de obicei numite utilități pentru invitați). O opțiune mixtă poate fi, de asemenea, utilizată, atunci când hypervisorul emulează I/O pentru sistemul oaspete și oferă extern posibilitatea de a utiliza un protocol care combină I/O, de exemplu, cum ar fi Spice. În același timp, instrumentele de acces la distanță optimizează de obicei imaginea, deoarece implică lucrul prin intermediul unei rețele, ceea ce nu are un efect pozitiv asupra calității imaginii.

Qubes oferă propriile instrumente pentru integrarea VM. În primul rând, acesta este un subsistem grafic - ferestrele de la diferite VM-uri sunt afișate pe un singur desktop cu propriul cadru de culoare. În general, instrumentele de integrare se bazează pe capacitățile hypervisorului - memorie partajată (tabelul de acordare Xen), instrumente de notificare (canal de evenimente Xen), stocare partajată xenstore și protocolul de comunicare vchan. Cu ajutorul lor sunt implementate componentele de bază qrexec și qubes-rpc, precum și serviciile de aplicații - redirecționare audio sau USB, transfer de fișiere sau conținut clipboard, executarea comenzilor și lansarea aplicațiilor. Este posibil să setați politici care vă permit să limitați serviciile disponibile pe o VM. Figura de mai jos este un exemplu de procedură de inițializare a interacțiunii a două VM.

Folosind QubesOS pentru a lucra cu Windows 7

Astfel, lucrul în VM se desfășoară fără utilizarea unei rețele, ceea ce permite utilizarea deplină a VM-urilor autonome pentru a evita scurgerea de informații. De exemplu, așa este implementată separarea operațiunilor criptografice (PGP/SSH), când cheile private sunt folosite în VM izolate și nu depășesc ele.

Șabloane, aplicații și VM-uri unice

Toată munca utilizatorului în Qubes este efectuată în mașini virtuale. Sistemul gazdă principal este utilizat pentru a le controla și vizualiza. Sistemul de operare este instalat împreună cu un set de bază de mașini virtuale bazate pe șabloane (TemplateVM). Acest șablon este o mașină virtuală Linux bazată pe distribuția Fedora sau Debian, cu instrumente de integrare instalate și configurate și partiții dedicate de sistem și utilizator. Instalarea și actualizarea software-ului se realizează de către un manager de pachete standard (dnf sau apt) din depozitele configurate cu verificarea obligatorie a semnăturii digitale (GnuPG). Scopul acestor VM-uri este de a asigura încrederea în VM-urile de aplicație lansate pe baza lor.

La pornire, o aplicație VM (AppVM) folosește un instantaneu al partiției de sistem a șablonului VM corespunzător și, la finalizare, șterge acest instantaneu fără a salva modificările. Datele solicitate de utilizator sunt stocate într-o partiție de utilizator unică pentru fiecare VM de aplicație, care este montată în directorul principal.

Folosind QubesOS pentru a lucra cu Windows 7

Utilizarea VM-urilor de unică folosință (disposableVM) poate fi utilă din punct de vedere al securității. O astfel de VM este creată pe baza unui șablon în momentul pornirii și este lansată cu un singur scop - pentru a executa o aplicație, completând munca după ce aceasta este închisă. VM-urile de unică folosință pot fi folosite pentru a deschide fișiere suspecte al căror conținut ar putea duce la exploatarea unor vulnerabilități specifice aplicației. Capacitatea de a rula un VM unic este integrată în managerul de fișiere (Nautilus) și clientul de e-mail (Thunderbird).

Windows VM poate fi folosit și pentru a crea un șablon și un VM unic prin mutarea profilului de utilizator într-o secțiune separată. În versiunea noastră, un astfel de șablon va fi folosit de utilizator pentru sarcinile de administrare și instalarea aplicației. Pe baza șablonului, vor fi create mai multe VM-uri de aplicație - cu acces limitat la rețea (capacități standard de firewall sys) și fără acces la rețea deloc (nu este creat un dispozitiv de rețea virtuală). Toate modificările și aplicațiile instalate în șablon vor fi disponibile pentru a funcționa în aceste mașini virtuale și, chiar dacă sunt introduse programe de marcare, acestea nu vor avea acces la rețea pentru compromis.

Luptă pentru Windows

Caracteristicile descrise mai sus stau la baza Qubes și funcționează destul de stabil; dificultățile încep cu Windows. Pentru a integra Windows, trebuie să utilizați un set de instrumente pentru invitați Qubes Windows Tools (QWT), care include drivere pentru lucrul cu Xen, un driver qvideo și un set de utilitare pentru schimbul de informații (transfer de fișiere, clipboard). Procesul de instalare și configurare este documentat în detaliu pe site-ul web al proiectului, așa că ne vom împărtăși experiența aplicației.

Principala dificultate este, în esență, lipsa suportului pentru instrumentele dezvoltate. Key Developers (QWT) pare a fi indisponibil, iar proiectul de integrare Windows așteaptă un dezvoltator principal. Prin urmare, în primul rând, a fost necesar să se evalueze performanța acestuia și să se facă o înțelegere a posibilității de a o susține independent, dacă este necesar. Cel mai dificil de dezvoltat și de depanat este driverul grafic, care emulează adaptorul video și afișajul pentru a genera o imagine în memoria partajată, permițându-vă să afișați întregul desktop sau fereastra aplicației direct în fereastra sistemului gazdă. În timpul analizei funcționării driverului, am adaptat codul pentru asamblare într-un mediu Linux și am elaborat o schemă de depanare între două sisteme guest Windows. În etapa de crossbuild, am făcut mai multe modificări care ne-au simplificat lucrurile, în principal în ceea ce privește instalarea „silențioasă” a utilităților și, de asemenea, am eliminat degradarea enervantă a performanței atunci când lucram într-o VM pentru o perioadă lungă de timp. Rezultatele lucrării le-am prezentat separat depozite, deci nu pentru mult timp inspirator Dezvoltator principal Qubes.

Cea mai critică etapă în ceea ce privește stabilitatea sistemului guest este pornirea Windows, aici puteți vedea familiarul ecran albastru (sau nici măcar nu îl vedeți). Pentru majoritatea erorilor identificate, au existat diverse soluții - eliminarea driverelor de dispozitiv Xen block, dezactivarea echilibrării memoriei VM, remedierea setărilor de rețea și minimizarea numărului de nuclee. Instrumentele noastre pentru invitați creează instalări și rulează pe Windows 7 și Windows 10 complet actualizate (cu excepția qvideo).

Când treceți dintr-un mediu real într-unul virtual, apare o problemă cu activarea Windows dacă sunt utilizate versiuni OEM preinstalate. Astfel de sisteme folosesc activarea pe baza licențelor specificate în UEFI-ul dispozitivului. Pentru a procesa corect activarea, este necesar să traduceți una dintre secțiunile ACPI întregi ale sistemului gazdă (tabelul SLIC) în sistemul oaspete și să editați ușor celelalte, înregistrând producătorul. Xen vă permite să personalizați conținutul ACPI al tabelelor suplimentare, dar fără a le modifica pe cele principale. Un patch dintr-un proiect similar OpenXT, care a fost adaptat pentru Qubes, a ajutat cu soluția. Corecțiile ni s-au părut utile nu numai nouă și au fost traduse în depozitul principal Qubes și în biblioteca Libvirt.

Dezavantajele evidente ale instrumentelor de integrare Windows includ lipsa suportului pentru dispozitive audio, USB și complexitatea lucrului cu media, deoarece nu există suport hardware pentru GPU. Dar cele de mai sus nu împiedică utilizarea VM-ului pentru lucrul cu documente de birou și nici nu împiedică lansarea unor aplicații corporative specifice.

Cerința de a comuta în modul de operare fără o rețea sau cu o rețea limitată după crearea unui șablon de VM Windows a fost îndeplinită prin crearea configurațiilor adecvate ale VM-urilor aplicației, iar posibilitatea de a conecta selectiv medii amovibile a fost rezolvată și de instrumentele standard ale sistemului de operare - atunci când sunt conectate , sunt disponibile în sistemul VM sys-usb, de unde pot fi „redirecționate” către VM-ul necesar. Desktopul utilizatorului arată cam așa.

Folosind QubesOS pentru a lucra cu Windows 7

Versiunea finală a sistemului a fost acceptată pozitiv (în măsura în care o astfel de soluție cuprinzătoare permite) de către utilizatori, iar instrumentele standard ale sistemului au făcut posibilă extinderea aplicației la stația de lucru mobilă a utilizatorului cu acces prin VPN.

În loc de concluzie

Virtualizarea în general vă permite să reduceți riscurile utilizării sistemelor Windows rămase fără suport - nu forțează compatibilitatea cu noul hardware, vă permite să excludeți sau să controlați accesul la sistem prin intermediul rețelei sau prin intermediul dispozitivelor conectate și vă permite să implementați un mediu de lansare unică.

Pe baza ideii de izolare prin virtualizare, Qubes OS vă ajută să utilizați aceste și alte mecanisme pentru securitate. Din exterior, mulți oameni văd Qubes în primul rând ca pe o dorință de anonimat, dar este un sistem util atât pentru ingineri, care jongla adesea cu proiecte, infrastructuri și secrete pentru a le accesa, cât și pentru cercetătorii de securitate. Separarea aplicațiilor, a datelor și formalizarea interacțiunii lor sunt etapele inițiale ale analizei amenințărilor și proiectării sistemului de securitate. Această separare ajută la structurarea informațiilor și la reducerea probabilității de erori din cauza factorului uman - graba, oboseală etc.

În prezent, accentul principal în dezvoltare este pe extinderea funcționalității mediilor Linux. Versiunea 4.1 este în curs de pregătire pentru lansare, care se va baza pe Fedora 31 și include versiunile actuale ale componentelor cheie Xen și Libvirt. Este de remarcat faptul că Qubes este creat de profesioniști în securitatea informațiilor care lansează întotdeauna cu promptitudine actualizări dacă sunt identificate noi amenințări sau erori.

postfață

Una dintre capacitățile experimentale pe care le dezvoltăm ne permite să creăm VM-uri cu suport pentru accesul invitaților la GPU bazat pe tehnologia Intel GVT-g, ceea ce ne permite să folosim capacitățile adaptorului grafic și să extindem semnificativ domeniul de aplicare al sistemului. La momentul scrierii, această funcționalitate funcționează pentru versiunile de testare ale Qubes 4.1 și este disponibilă pe github.

Sursa: www.habr.com

Adauga un comentariu