Det finnes ikke mange artikler om operativsystemet Qubes pÄ Habr, og de som jeg har sett, beskriver lite om erfaringene med bruken. Under vil jeg prÞve Ä rette opp i dette ved Ä bruke Qubes som et sikkerhetsverktÞy for Windows-miljÞet, samtidig som jeg vurderer antall russisktalende brukere av systemet.

Hvorfor Qubes?
Historien med avslutningen av stÞtte for Windows 7 og den Þkende bekymringen blant brukere har fÞrt til behovet for Ä organisere bruken av dette operativsystemet, med tanke pÄ fÞlgende krav:
- Ă„ sikre bruk av en fullverdig aktivert Windows 7 med mulighet for brukeren Ă„ installere oppdateringer og ulike applikasjoner (inkludert via internett);
- Ă„ implementere fullstendig eller selektiv ekskludering av nettverksinteraksjoner etter behov (autonom-modus og trafikkfiltrering);
- Ă„ gi mulighet for selektiv tilkobling av eksterne lagringsenheter og enheter.
Et slikt sett med begrensninger forutsetter en klart forberedt bruker, siden selvadministrasjon er tillatt, og begrensningene er ikke knyttet til blokkering av brukerens potensielle handlinger, men til Ä unngÄ mulige feil eller programvaremessig destruktiv innvirkning. Det vil si, det er ingen intern trussel i modellen.
I jakten pÄ en lÞsning raskt ga vi opp idéen om Ä implementere begrensninger med innebygde eller ekstra midler i Windows, siden det er ganske vanskelig Ä effektivt begrense en bruker med administratorrettigheter, samtidig som man gir dem mulighet til Ä installere applikasjoner.
Neste alternativ for lÞsning var isolasjon gjennom virtualisering. Kjent programvare for desktop-virtualisering (slik som virtualbox) er dÄrlig tilpasset for Ä mÞte sikkerhetsoppgaver, og de nevnte begrensningene mÄ brukeren sette opp konstant ved Ä bytte eller justere innstillingene for den gjesteverden virtuelle maskinen (heretter VM), noe som Þker risikoen for feil.
Samtidig hadde vi erfaring med Ä bruke Qubes som et brukergrensesnitt, men det var tvil om stabiliteten ved bruk av gjesteversjonen av Windows. Det ble besluttet Ä teste den nyeste versjonen av Qubes, siden de etablerte begrensningene passer godt inn i paradigmet til dette systemet, spesielt implementeringen av maler for virtuelle maskiner og visuell integrasjon. Jeg vil derfor prÞve Ä kort fortelle om ideene og verktÞyene i Qubes, basert pÄ eksemplet med oppgavens lÞsning.
Typer av virtualisering med Xen
Qubes er basert pÄ hypervisoren Xen, som minimerer funksjoner for administrasjon av prosessorressurser, minne og virtuelle maskiner. Alt annet arbeid med enhetene er konsentrert i dom0, basert pÄ en Linux-kjerne (i Qubes brukes Fedora-distribusjonen for dom0).

Xen stÞtter flere typer virtualisering (jeg vil gi eksempler for Intel-arkitekturen, selv om Xen ogsÄ stÞtter andre):
- paravisualisering (PV) â en virtualiseringsmodus uten bruk av maskinvarestĂžtte, som ligner pĂ„ beholder-virtualisering, kan brukes for systemer med tilpasset kjerne (dom0 fungerer i denne modusen);
- full virtualisering (HVM) â i denne modusen brukes maskinvarestĂžtte for prosessorressurser, mens alt annet utstyr emuleres med QEMU. Dette er den mest allsidige mĂ„ten Ă„ kjĂžre forskjellige operativsystemer pĂ„;
- paravisualisering av maskinvare (PVH â ParaVirtualized Hardware) â en virtualiseringsmodus som bruker maskinvarestĂžtte, nĂ„r kjernen til gjestesystemet bruker drivere tilpasset hypervisorens muligheter (f.eks. delt minne), noe som fjerner behovet for QEMU-emulering og Ăžker inn-/utgangsytelsen. Linux-kjernen har stĂžttet denne modusen siden versjon 4.11.

Fra og med versjon Qubes 4.0 har det av sikkerhetsmessige Ärsaker vÊrt et avslag pÄ bruken av paravisualiseringsmodus (blant annet pÄ grunn av kjente sÄrbarheter i Intel-arkitekturen, som delvis lÞses med bruk av full virtualisering), og som standard brukes PVH-modus.
NÄr du bruker emulering (HVM-modus), startes QEMU i en isolert VM som kalles stubdomain, noe som reduserer risikoen for utnyttelse av potensielle feil i implementeringen (QEMU-prosjektet inneholder mye kode, inkludert for kompatibilitet).
Denne modusen bÞr brukes for Windows i vÄrt tilfelle.
Tjenestevirtuelle maskiner
I sikkerhetsarkitekturen til Qubes er en av hovedmulighetene til hypervisoren Ă„ overfĂžre PCI-enheter til gjesteomgivelser. Utelukkelse av maskinvare gjĂžr det mulig Ă„ isolere vertsdelen av systemet fra eksterne angrep. Xen stĂžtter dette for bĂ„de PV- og HVM-modus, i det andre tilfellet kreves det stĂžtte for IOMMU (Intel VT-d) â maskinvare hĂ„ndtering av minne for virtualiserte enheter.
PÄ denne mÄten opprettes flere systemvirtuelle maskiner:
- sys-net, som fÄr tildelt nettverksenheter og brukes som bro for andre VMer, for eksempel som implementerer funksjoner som brannmur eller VPN-klient;
- sys-usb, som fÄr tildelt USB og andre kontroller for perifere enheter;
- sys-firewall, som ikke bruker enheter, men fungerer som en brannmur for tilkoblede VMer.
For Ă„ arbeide med USB-enheter brukes proxy-tjenester, som sĂžrger for blant annet:
- for HID-enheter (human interface device) Ă„ sende kommandoer til dom0;
- for flyttbare medier omdirigere enhetsvolumene til andre VMer (unntatt dom0);
- omdirigere selve USB-enheten (bruker USBIP og integrasjonsverktĂžy).
I en slik konfigurasjon kan en vellykket angrep gjennom nettverksstakken eller tilkoblede enheter fĂžre til kompromittering av bare den kjĂžrende tjeneste-VM-en, ikke hele systemet. Og etter omstart av tjeneste-VM-en vil den bli lastet inn i sin opprinnelige tilstand.
IntegrasjonsverktĂžy for VM
Det finnes flere mĂ„ter Ă„ samhandle med skrivebordet til en virtuell maskin â installasjon av applikasjoner i gjestesystemet eller emulering av video ved hjelp av virtualiseringsmidler. Universelle fjernstyringsverktĂžy (RDP, VNC, Spice osv.) eller tilpassede verktĂžy til spesifikke hypervisorer (slike verktĂžy kalles vanligvis gjesteverktĂžy). Det kan ogsĂ„ brukes en blanding der hypervisoren emulerer I/O for gjestesystemet, mens den eksternt gir mulighet til Ă„ bruke et protokoll som kombinerer I/O, for eksempel som med Spice. FjernstyringsverktĂžyene optimaliserer vanligvis bildet, siden de er ment Ă„ fungere over nettverket, noe som pĂ„virker bildekvaliteten negativt.
Qubes tilbyr sine egne verktĂžy for integrasjon av VM. FĂžrst og fremst er dette grafisk subsystem â vinduer fra forskjellige VM vises pĂ„ et enkelt skrivebord med sin egen fargeinnramming. Generelt er integrasjonsmidlene basert pĂ„ mulighetene til hypervisoren â delt minne (Xen grant table), varslingssystemer (Xen event channel), delt lagring xenstore og kommunikasjonsprotokollen vchan. Disse brukes til Ă„ implementere grunnleggende komponenter som qrexec og qubes-rpc, samt applikasjonstjenester â omdirigering av lyd eller USB, filoverfĂžring eller innholdet i utklippstavlen, utfĂžring av kommandoer og start av applikasjoner. Det er mulig Ă„ sette opp retningslinjer for Ă„ begrense tilgjengelige tjenester i VM.

Slik oppnÄs arbeid i VM uten bruk av nettverk, noe som gjÞr det mulig Ä fullt ut bruke autonome VM for Ä unngÄ informasjonslekkasje. For eksempel implementeres dette ved Ä dele kryptografiske operasjoner (PGP/SSH), der private nÞkler brukes i isolerte VM og ikke forlater deres grenser.
Mal, applikasjoner og engangs VM
All user work in Qubes is conducted in virtual machines. The main host system is used to manage their operation and visualization. The OS is installed along with a basic set of virtual machines based on templates (TemplateVM). This template is a Linux VM based on the Fedora or Debian distribution, with integrated tools installed and configured, as well as dedicated system and user partitions. Software installation and updates are performed via the standard package manager (dnf or apt) from configured repositories, with mandatory digital signature verification (GnuPG). The purpose of such VMs is to ensure trust for application VMs launched based on them.
An application VM (AppVM) at startup uses a snapshot of the system partition of the corresponding VM template, and upon completion, deletes this snapshot without saving changes. User data is stored in a unique user partition for each application VM, which is mounted in the home directory.

From a security perspective, it can be useful to utilize disposable VMs (disposibleVM). Such a VM is created from a template at startup and is launched for one purpose â executing a single application, terminating its operation upon its closure. Disposable VMs can be used to open suspicious files, the contents of which may lead to exploitation of specific application vulnerabilities. The ability to launch a disposable VM is integrated into the file manager (Nautilus) and the email client (Thunderbird).
A Windows VM can also be used to create a template and disposable VM; for this purpose, the user profile is transferred to a separate partition. In our case, such a template will be used by the user for administrative tasks and application installation. Several application VMs will be created based on this template â with limited network access (the standard capabilities of sys-firewall) and with no network access at all (no virtual network device is created). All changes and applications installed in the template will be available for operation in these VMs, and even in case of malware introduction, they will not have network access to compromise.
Struggle for Windows
De nevnte funksjonene er kjernen i Qubes og fungerer ganske stabilt, men utfordringene begynner med Windows. For Ä integrere Windows mÄ man bruke Qubes Windows Tools (QWT), som inkluderer drivere for Ä fungere med Xen, qvideo-drivere og et sett med verktÞy for informasjonsutveksling (filoverfÞring, utklippstavle). Installeringen og konfigurasjonsprosessen er grundig dokumentert pÄ prosjektets nettside, sÄ vi vil dele vÄr erfaring med bruken.
Den stĂžrste utfordringen er i bunn og grunn mangelen pĂ„ stĂžtte for det utviklede verktĂžyet. NĂžkkelutviklerne (QWT) er etter alt Ă„ dĂžmme utilgjengelige, og prosjektet for Ă„ integrere med Windows stĂ„r og venter pĂ„ den ledende utvikleren. Derfor var det fĂžrst nĂždvendig Ă„ vurdere funksjonaliteten og danne en forstĂ„else av muligheten for Ă„ stĂžtte det selv om nĂždvendig. Det mest utfordrende for utvikling og feilsĂžking er grafikkdriveren, som emulerer en videoadapter og skjerm for Ă„ danne et bilde i delt minne, og lar deg vise hele skrivebordet eller direkte et applikvindu i vertssystemet. Under analysen av driverens drift tilpasset vi koden for bygging i et Linux-miljĂž, og vi testet feilsĂžking mellom to gjestedatamaskiner med Windows. I lĂžpet av kryssbyggingen gjorde vi flere forenklinger for oss selv, hovedsakelig nĂ„r det gjelder "stille" installasjon av verktĂžyene, samt eliminerte den plagsomme ytelsesdegraderingen ved lengre bruk i VM. Resultatene av arbeidet vĂ„rt ble samlet i et eget , dermed inspirerte vi kortvarig Det mest kritiske stadiet for stabiliteten til gjestessystemet er oppstart av Windows, her kan man se den velkjente blĂ„ skjermen (eller til og med ikke se den). For de fleste identifiserte feilene finnes det forskjellige alternativer for Ă„ omgĂ„ dem â avvisning av Xen-diskdriverne, deaktivering av minnebalansering i VM, fiksering av nettverksinnstillinger og minimisering av antall kjerner. VĂ„r samling av gjesteverktĂžy installeres og fungerer pĂ„ fullt oppdatert Windows 7 og Windows 10 (unntatt qvideo).
Det mest kritiske trinnet for stabiliteten til verts- systemet er oppstart av Windows, hvor man kan se en kjent blĂ„ skjerm (eller til og med ikke se den). For de fleste identifiserte feilene fantes det ulike omveier â avvisning av Xen-drivere for blokkerte enheter, deaktivering av minnebalansering for VM, fastsettelse av nettverksinnstillinger og minimalisering av antall kjerner. VĂ„r samling av vertsmidler installeres og fungerer pĂ„ fullt oppdatert Windows 7 og Windows 10 (unntatt qvideo).
NÄr man gÄr fra et reelt miljÞ til et virtuelt, opstÄr der et problem med aktivering af Windows i tilfÊlde af brug af forudinstallerede OEM-versioner. SÄdanne systemer benytter aktivering baseret pÄ licenser, der er indsat i UEFI-enheden. For at aktivere korrekt, er det nÞdvendigt at overfÞre en af ACPI-partitioner fra vÊrtsystemet til gÊstesystemet i sin helhed (SLIC-tabel) samt foretage nogle justeringer af andre for at specificere producenten. Xen tillader konfiguration af indholdet i ACPI-tilfÞjelsestabeller, men uden at Êndre pÄ de primÊre. LÞsningen kom fra et patch fra et lignende projekt, OpenXT, som blev tilpasset til Qubes. Rettelserne viste sig at vÊre nyttige ikke kun for os og blev derfor overfÞrt til det primÊre Qubes-repository og Libvirt-biblioteket.
à benlyse ulemper ved midler til integration af Windows omfatter mangel pÄ understÞttelse af lyd, USB-enheder og kompleksiteten ved mediearbejde, da der ikke er hardware-support til GPU. Men dette hindrer ikke brug af VM til arbejde med kontordokumenter og forhindrer heller ikke start af specifikke virksomhedsapplikationer.
Kravet om at skifte til offline- eller begrĂŠnset netvĂŠrksmode efter oprettelse af Windows VM-skabelonen blev opfyldt ved at oprette de relevante konfigurationer for applikations-VM'er, og muligheden for selektiv tilslutning af flytbare medier blev ogsĂ„ lĂžst med de indbyggede midler i OS â nĂ„r de tilsluttes, er de tilgĂŠngelige i systemets VM sys-usb, hvorfra de kan "passeres" videre til den nĂždvendige VM. Brugerens skrivebord ser cirka sĂ„dan ud.

Den endelige version af systemet er blevet positivt modtaget af brugerne (i det omfang et sÄ komplekst system tillader det), og systemets indbyggede vÊrktÞjer har gjort det muligt at udvide anvendelsen til en mobil arbejdsplads med adgang via VPN.
In conclusion
Virtualisering i det hele taget reducerer risiciene ved at bruge Windows-systemer, der ikke lĂŠngere er understĂžttet - det tvinger ikke til at sikre kompatibilitet med nye hardware, det muliggĂžr udelukkelse eller kontrol af adgang til systemet via netvĂŠrk eller tilsluttede enheder, og det muliggĂžr implementering af et miljĂž til engangsbrug.
Qubes OS, basert pĂ„ ideen om isolasjon gjennom virtualisering, hjelper til med Ă„ bruke disse og andre mekanismer for Ă„ sikre sikkerhet. Utenfra ser mange Qubes primĂŠrt som et middel for anonymitet, men det er et nyttig system bĂ„de for ingeniĂžrer som ofte kombinerer prosjekter, infrastruktur og tilgangshemmeligheter, og for sikkerhetsforskere. Deling av applikasjoner, data og formalisering av deres interaksjon er de fĂžrste trinnene i trusselanalysen og designet av beskyttelsessystemer. Slik deling bidrar til Ă„ strukturere informasjon og redusere sannsynligheten for feil pĂ„ grunn av menneskelig faktor â hastverk, tretthet osv.
For tiden er hovedfokuset i utviklingen rettet mot Ä utvide funksjonaliteten til Linux-miljÞer. Versjon 4.1 er planlagt for utgivelse, som vil vÊre basert pÄ Fedora 31 og inkludere oppdaterte versjoner av de viktigste komponentene Xen og Libvirt. Det er verdt Ä merke seg at Qubes utvikles av profesjonelle innen informasjonssikkerhet, som alltid raskt utgir oppdateringer ved oppdagelse av nye trusler eller feil.
Etterord
En av de eksperimentelle funksjonene vi utvikler, gjÞr det mulig Ä opprette VM med stÞtte for vertstilgang til GPU basert pÄ Intel GVT-g-teknologi, som gjÞr det mulig Ä utnytte grafikkadapterens muligheter og betydelig utvide bruksomrÄdet til systemet. PÄ tidspunktet for denne artikkelen fungerer denne funksjonaliteten for testversjoner av Qubes 4.1, og er tilgjengelig pÄ .
Kilde: habr.com
