AnvÀndning av QubesOS för arbete med Windows 7

Det finns inte sÄ mÄnga artiklar pÄ Habré som handlar om operativsystemet Qubes, och de jag har sett beskriver lite om anvÀndarupplevelsen. Jag hoppas kunna ÄtgÀrda detta under kattsidan genom att visa hur Qubes anvÀnds som ett skydd för Windows-miljön och samtidigt bedöma antalet svensktalande anvÀndare av systemet.

AnvÀndning av QubesOS för arbete med Windows 7

Varför Qubes?

Historien om slutet av stöd för Windows 7 och den ökande oron hos anvÀndarna har lett till behovet av att organisera arbetet i detta operativsystem med hÀnsyn till följande krav:

  • att sĂ€kerstĂ€lla anvĂ€ndning av en fullt aktiverad Windows 7 med möjlighet för anvĂ€ndaren att installera uppdateringar och olika applikationer (Ă€ven via Internet);
  • att genomföra fullstĂ€ndig eller selektiv uteslutning av nĂ€tverksinteraktioner enligt villkor (offline-lĂ€ge och trafikfiltrering);
  • att erbjuda möjlighet till selektiv anslutning av externa lagringsenheter och enheter.

En sÄdan uppsÀttning begrÀnsningar förutsÀtter en tydligt förberedd anvÀndare, eftersom sjÀlvstÀndig administration Àr tillÄten, och begrÀnsningarna Àr inte kopplade till blockering av potentiella ÄtgÀrder utan till uteslutning av möjliga misstag eller programvaruskapande destruktiv pÄverkan. Det finns alltsÄ ingen intern förövare i modellen.

I vÄr jakt pÄ en lösning snabbt avvisade vi idén att införa begrÀnsningar med hjÀlp av inbyggda eller extra medel frÄn Windows, eftersom det Àr ganska svÄrt att effektivt begrÀnsa en anvÀndare med administratörsrÀttigheter, medan man lÄter denne installera applikationer.

NÀsta möjliga lösning var isolering genom virtualisering. VÀlkÀnda verktyg för desktop-virtualisering (t.ex. som VirtualBox) Àr dÄligt anpassade för sÀkerhetslösningar och de upprÀknade begrÀnsningarna mÄste stÀndigt hanteras av anvÀndaren genom att vÀxla eller stÀlla in egenskaperna för den gÀstande virtuella maskinen (hÀrefter VM), vilket ökar risken för misstag.

Samtidigt hade vi erfarenhet av att anvÀnda Qubes som en desktop-anvÀndarsystem, men det fanns tvivel om stabiliteten nÀr man arbetade med gÀstversionen av Windows. Det beslutades att kontrollera den aktuella versionen av Qubes, eftersom de stÀllda begrÀnsningarna passar mycket vÀl in i denna systems paradigm, sÀrskilt implementeringen av virtuella maskinmallar och visuell integration. Jag ska försöka kortfattat berÀtta om idéerna och verktygen i Qubes, med exempel pÄ lösningen av det uppstÀllda problemet.

Typer av virtualisering av Xen

KÀrnan i Qubes bygger pÄ hypervisorn Xen, som minimerar funktionerna för hantering av CPU-resurser, minne och virtuella maskiner. All annan hantering av enheter Àr koncentrerad i dom0 baserad pÄ Linux-kÀrnan (i Qubes anvÀnder dom0 en Fedora-distribution).

AnvÀndning av QubesOS för arbete med Windows 7

Xen stödjer flera typer av virtualisering (jag kommer att ge exempel för Intel-arkitekturen, Àven om Xen ocksÄ stödjer andra):

  • paravirtualisering (PV) – en virtualiseringslĂ€ge utan anvĂ€ndning av hĂ„rdvarustöd, liknar container-virtualisering, kan anvĂ€ndas för system med anpassade kĂ€rnor (dom0 fungerar i detta lĂ€ge);
  • fullstĂ€ndig virtualisering (HVM) – i detta lĂ€ge anvĂ€nds hĂ„rdvarustöd för CPU-resurser, medan all annan utrustning emuleras av QEMU. Detta Ă€r det mest mĂ„ngsidiga sĂ€ttet att köra olika operativsystem;
  • paravirtualisering av hĂ„rdvara (PVH – ParaVirtualized Hardware) – en virtualiseringslĂ€ge som anvĂ€nder hĂ„rdvarustöd dĂ€r kĂ€rnan i gĂ€stsystemet anvĂ€nder drivrutiner anpassade för hypervisorns möjligheter (t.ex. delad minne), vilket eliminerar behovet av QEMU-emulering och ökar I/O-prestandan. Linux-kĂ€rnan frĂ„n version 4.11 kan arbeta i detta lĂ€ge.

AnvÀndning av QubesOS för arbete med Windows 7

FrÄn och med version 4.0 av Qubes, av sÀkerhetsskÀl, har man avstÄtt frÄn att anvÀnda paravirtualiseringslÀge (bland annat pÄ grund av kÀnda sÄrbarheter i Intel-arkitekturen, som delvis ÄtgÀrdas genom att anvÀnda fullstÀndig virtualisering), och mode PVH anvÀnds som standard.

Vid anvÀndning av emulering (HVM-lÀge) startas QEMU i en isolerad VM kallad stubdomain, vilket minskar riskerna för exploatering av potentiella fel i genomförandet (QEMU-projektet innehÄller mycket kod, inklusive för kompatibilitet).
Ett sÄdant lÀge bör i vÄrt fall anvÀndas för Windows.

TjÀnstevirtualiserade maskiner

I sĂ€kerhetsarkitekturen för Qubes Ă€r en av hypervisorens nyckelmöjligheter att överföra PCI-enheter till gĂ€stmiljön. Uteslutning av hĂ„rdvara gör det möjligt att isolera vĂ€rddelen av systemet frĂ„n externa attacker. Xen stöder detta för PV- och HVM-lĂ€gen, dĂ€r det för det andra krĂ€vs stöd för IOMMU (Intel VT-d) — hĂ„rdvarustyrning av minnet för virtualiserade enheter.

PÄ sÄ sÀtt skapas flera systemvirtualiserade maskiner:

  • sys-net, som fĂ„r nĂ€tverksenheter och anvĂ€nds som bro för andra VMer, till exempel som implementerar funktioner för brandvĂ€gg eller VPN-klient;
  • sys-usb, som fĂ„r USB- och andra kontroller för perifera enheter;
  • sys-firewall, som inte anvĂ€nder enheter, utan fungerar som en brandvĂ€gg för anslutna VMer.

För att arbeta med USB-enheter anvÀnds proxytjÀnster som sÀkerstÀller bland annat:

  • för HID-enheter (human interface device) överföring av kommandon till dom0;
  • för avtagbara lagringsenheter omdirigering av enhetstorlekar till andra VMer (med undantag för dom0);
  • omdirigering av sjĂ€lva USB-enheten (anvĂ€nder USBIP och integrationsmedel).

I en sÄdan konfiguration kan en lyckad attack genom nÀtverksstacken eller anslutna enheter endast leda till kompromettering av den körande tjÀnste-VM:n, istÀllet för hela systemet. Efter omstart av tjÀnste-VM:n kommer den att laddas i sitt ursprungliga tillstÄnd.

Integrationsverktyg för VMer

Det finns flera sĂ€tt att interagera med skrivbordet pĂ„ en virtuell maskin – genom att installera program i gĂ€stsystemet eller emulera video genom virtualisering. GĂ€stapplikationer kan vara olika universella fjĂ€rrĂ„tkomstlösningar (RDP, VNC, Spice osv.) eller anpassade för en specifik hypervisor (denna typ av verktyg kallas vanligtvis gĂ€stverktyg). En blandad variant kan anvĂ€ndas dĂ€r hypervisorn emulerar in- och utdata för gĂ€stsystemet, medan den utanför erbjuder möjligheten att anvĂ€nda ett protokoll som kombinerar in- och utdata, till exempel som med Spice. FjĂ€rrĂ„tkomstverktyg optimerar vanligtvis bilden, eftersom de förutsĂ€tter arbete över ett nĂ€tverk, vilket pĂ„verkar bildkvaliteten negativt.

Qubes tillhandahĂ„ller egna verktyg för integration av VM. Först och frĂ€mst Ă€r detta grafiksystemet – fönster frĂ„n olika VM visas pĂ„ en gemensam skrivbord med egen fĂ€rgkant. Generellt baseras integrationsverktygen pĂ„ hypervisorens funktioner – delat minne (Xen grant table), notifieringsverktyg (Xen event channel), delad lagring xenstore och kommunikationsprotokoll vchan. Med deras hjĂ€lp genomförs grundlĂ€ggande komponenter som qrexec och qubes-rpc, samt applikationstjĂ€nster – ljud- eller USB-omdirigering, filöverföring eller innehĂ„ll överföring till urklipp, utförande av kommandon och starta applikationer. Det finns möjlighet att stĂ€lla in policyer som begrĂ€nsar de tjĂ€nster som Ă€r tillgĂ€ngliga pĂ„ VM. Nedan Ă€r ett exempel pĂ„ proceduren för att initiera interaktionen mellan tvĂ„ VM.

AnvÀndning av QubesOS för arbete med Windows 7

SÄledes arbetar man i VM utan att anvÀnda nÀtverket, vilket gör det möjligt att fullt ut utnyttja autonomiska VM för att undvika informationslÀckage. Till exempel genomförs separation av kryptografiska operationer (PGP/SSH), nÀr privata nycklar anvÀnds i isolerade VM och inte lÀmnar deras grÀnser.

Mallar, applikations- och engÄngs-VM

All user work in Qubes is carried out in virtual machines. The primary 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). Such a template represents a Linux VM based on the Fedora or Debian distribution, with integration tools installed and configured, along with dedicated system and user partitions. Software installation and updates are performed using the standard package manager (dnf or apt) from configured repositories, with mandatory digital signature verification (GnuPG). The purpose of these VMs is to ensure trust in the application VMs that run on their basis.

An application VM (AppVM) uses a snapshot of the system partition from the corresponding VM template at startup and deletes this snapshot upon completion without saving changes. Necessary user data is stored in a unique user partition for each application VM, which is mounted in the home directory.

AnvÀndning av QubesOS för arbete med Windows 7

Using disposable VMs can be beneficial from a security perspective. Such a VM is created from a template at startup and is launched with one purpose — to run a single application, terminating after it is closed. Disposable VMs can be used to open suspicious files whose contents may exploit vulnerabilities in specific applications. 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 a disposable VM; for this, 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 the template — with limited network access (using sys-firewall) and without any network access at all (no virtual network device is created). All modifications and applications installed in the template will be available in these VMs, and even in the case of the introduction of trojans, they will lack network access for compromise.

The Struggle for Windows

De funktioner som beskrivs ovan Àr grunden för Qubes och fungerar faktiskt ganska stabilt; svÄrigheterna börjar med Windows. För att integrera Windows krÀvs en uppsÀttning gÀsteredskap som kallas Qubes Windows Tools (QWT), som inkluderar drivrutiner för att arbeta med Xen, qvideo-drivrutin och en uppsÀttning verktyg för informationsutbyte (filöverföring, gemensamt urklipp). Installations- och konfigurationsprocessen Àr noggrant dokumenterad pÄ projektets webbplats, sÄ vi delar med oss av vÄr erfarenhet av tillÀmpningen.

Den största svÄrigheten ligger i sjÀlva avsaknaden av stöd för det utvecklade verktyget. De nyckelutvecklare (QWT) verkar vara otillgÀngliga, och projektet för integration med Windows vÀntar pÄ en ledande utvecklare. DÀrför var det först och frÀmst nödvÀndigt att bedöma funktionaliteten och fÄ en förstÄelse för möjligheten att stödja det vid behov sjÀlva. Den mest utmanande delen av utvecklingen och felsökningen Àr grafiska drivrutinen, som emulerar grafikkort och skÀrm för att skapa en bild i delat minne, vilket gör att hela skrivbordet eller ett specifikt programfönster kan visas i vÀrdsystemets fönster. Under analysen av drivrutinen anpassade vi koden för att bygga i en Linux-miljö och arbetade med felsökningsschemat mellan tvÄ Windows-gÀster. Vid krossbyggnadssteget genomförde vi flera förenklade Àndringar, mestadels avseende "tyst" installation av verktyg, och eliminerade den irriterande prestandadegradering som uppstÄr vid lÄngvarig drift i VM. Resultaten av vÄrt arbete dokumenterade vi separat. förrÄdet, vilket dÀrmed kortvarigt inspirerade den ledande utvecklaren av Qubes.

Det mest kritiska steget för stabiliteten i gÀstsystemet Àr start av Windows, hÀr kan man se den bekanta blÄ skÀrmen (eller till och med inte se den). För de flesta upptÀckta fel fanns olika workaround-lösningar - avvisande av Xen-drivrutiner för blockenheter, avaktivering av minnesbalansering i VM, faststÀllande av nÀtverksinstÀllningar och minimering av antalet kÀrnor. VÄr samling av gÀsteredskap installeras och fungerar pÄ fullt uppdaterat Windows 7 och Windows 10 (förutom qvideo).

NÀr man övergÄr frÄn en verklig miljö till en virtuell uppstÄr ett problem med aktiveringen av Windows nÀr man anvÀnder förinstallerade OEM-versioner. SÄdana system anvÀnder aktivering baserad pÄ licenser lagrade i UEFI-enheten. För korrekt aktivering mÄste en av ACPI-sektionerna frÄn vÀrdsystemet överföras helt till gÀstsystemet (SLIC-tabell) och andra behöver justeras nÄgot för att ange tillverkaren. Xen möjliggör anpassning av innehÄllet i ACPI:s ytterligare tabeller, men utan att modifiera de grundlÀggande. En patch frÄn ett liknande projekt, OpenXT, hjÀlpte till att lösa problemet och anpassades för Qubes. Dessa korrigeringar visade sig vara anvÀndbara inte bara för oss utan har ocksÄ överförts till huvudförrÄdet Qubes och Libvirt-biblioteket.

De uppenbara bristerna med Windows integrationsverktyg Àr bristen pÄ ljudsupport, USB-enheter och svÄrigheten att hantera media, eftersom det inte finns nÄgon hÄrdvarustöd för GPU. Men dessa faktorer hindrar inte anvÀndning av VM för att arbeta med kontorsdokument och hindrar inte körning av specifika företagsapplikationer.

Kravet att vĂ€xla till offline-lĂ€ge eller med begrĂ€nsad nĂ€tverksĂ„tkomst efter skapandet av Windows VM-mallen uppfylldes genom att skapa lĂ€mpliga konfigurationer av applicerade VM, och möjligheten till selektiv anslutning av externa lagringsenheter löses ocksĂ„ med operativsystemets standardverktyg — vid anslutning Ă€r dessa tillgĂ€ngliga i system-VM sys-usb, frĂ„n vilket de kan "slĂ€ppas igenom" till den nödvĂ€ndiga VM:n. AnvĂ€ndarens skrivbord ser ungefĂ€r ut sĂ„ hĂ€r.

AnvÀndning av QubesOS för arbete med Windows 7

Den slutgiltiga versionen av systemet har mottagits positivt (sÄ mycket som en sÄ komplex lösning medger) av anvÀndarna, och operativsystemets standardverktyg har möjliggjort att utöka anvÀndningen till en mobil arbetsplats med tillgÄng via VPN.

Avslutande

Virtualisering i allmĂ€nhet gör det möjligt att minska riskerna med att anvĂ€nda Windows-system som inte lĂ€ngre stöds — det tvingar inte till att sĂ€kerstĂ€lla kompatibilitet med nya hĂ„rdvaror, möjliggör att utesluta eller kontrollera Ă„tkomst till systemet över nĂ€tverk eller via anslutna enheter, och möjliggör att skapa en miljö för engĂ„ngsstart.

Qubes OS, som Àr baserat pÄ idén om isolering genom virtualisering, hjÀlper till att anvÀnda dessa och andra mekanismer för att sÀkerstÀlla sÀkerheten. MÄnga ser Qubes frÀmst som en strÀvan efter anonymitet, men det Àr ett anvÀndbart system för bÄde ingenjörer som ofta samordnar projekt, infrastrukturer och hemligheter kopplade till dem samt för sÀkerhetsexperter. Att separera applikationer, data och formalisera deras interaktioner Àr de första stegen i hotanalys och design av skyddssystem. Denna separation hjÀlper till att strukturera information och minskar risken för misstag pÄ grund av mÀnskliga faktorer - som stress, trötthet etc.

För nÀrvarande fokuserar utvecklingen pÄ att utöka funktionaliteten i Linux-miljöer. En version 4.1, som baseras pÄ Fedora 31 och kommer att inkludera aktuella versioner av nyckelkomponenterna Xen och Libvirt, förbereds för release. Det Àr vÀrt att notera att Qubes utvecklas av yrkesverksamma inom informationssÀkerhet som alltid snabbt slÀpper uppdateringar vid upptÀckten av nya hot eller fel.

Epilog

En av de experimentella funktionerna vi utvecklar möjliggör skapandet av VM med stöd för gÀstÄtkomst till GPU baserat pÄ teknologin Intel GVT-g, vilket gör att man kan dra nytta av grafikprocessorns kapabiliteter och betydligt utöka systemets anvÀndningsomrÄde. Vid tidpunkten för artikelskrivningen fungerar den hÀr funktionen för testversioner av Qubes 4.1 och finns tillgÀnglig pÄ github.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster