Auf Habr gibt es nicht viele Artikel ĂŒber das Betriebssystem Qubes, und die wenigen, die ich gesehen habe, beschreiben kaum die Anwendungserfahrungen. Ich hoffe, dies im Folgenden anhand der Nutzung von Qubes als SchutzmaĂnahme fĂŒr Windows-Umgebungen zu verbessern und dabei die Anzahl der russischsprachigen Nutzer dieses Systems zu bewerten.

Warum Qubes?
Die Einstellung des Supports fĂŒr Windows 7 und die wachsende Besorgnis der Nutzer haben die Notwendigkeit zur Organisation der Nutzung dieses OS ausgelöst, wobei folgende Anforderungen berĂŒcksichtigt werden mussten:
- vollstĂ€ndig aktivierte Windows 7 bereitzustellen, die es dem Nutzer ermöglicht, Updates und verschiedene Anwendungen (einschlieĂlich ĂŒber das Internet) zu installieren;
- vollstÀndigen oder selektiven Ausschluss von Netzwerkverbindungen nach bestimmten Bedingungen (Offline-Modus und Traffic-Filtration);
- die Möglichkeit zu bieten, Wechselmedien und GerĂ€te selektiv anzuschlieĂen.
Dieses Set von EinschrĂ€nkungen setzt einen klar vorbereiteten Benutzer voraus, da eine eigenstĂ€ndige Verwaltung erlaubt ist und die EinschrĂ€nkungen nicht mit der Blockierung potenzieller Aktionen verbunden sind, sondern darauf abzielen, mögliche Fehler oder destruktive Softwareeinwirkungen zu vermeiden. Das heiĂt, es gibt keinen internen Angreifer in diesem Modell.
Auf der Suche nach einer Lösung haben wir schnell die Idee verworfen, EinschrÀnkungen mit integrierten oder zusÀtzlichen Mitteln von Windows umzusetzen, da es ziemlich schwierig ist, einen Benutzer mit Administratorrechten effektiv einzuschrÀnken, wÀhrend ihm gleichzeitig die Möglichkeit gegeben wird, Anwendungen zu installieren.
Die nĂ€chste Lösung bestand in der Isolation durch Virtualisierung. Bekannteste Tools fĂŒr Desktop-Virtualisierung (wie z.B. VirtualBox) sind jedoch schlecht geeignet fĂŒr Sicherheitslösungen, und die genannten EinschrĂ€nkungen mĂŒssen vom Benutzer stĂ€ndig durch Umschalten oder Anpassen der Eigenschaften der GĂ€stemaschine (VM) vorgenommen werden, was die FehleranfĂ€lligkeit erhöht.
Gleichzeitig haben wir Erfahrung mit der Nutzung von Qubes als Desktop-System gesammelt, jedoch gab es Bedenken hinsichtlich der StabilitĂ€t bei der Arbeit mit dem Gast-Windows. Daher wurde beschlossen, die aktuelle Version von Qubes zu testen, da die gegebenen EinschrĂ€nkungen sehr gut in die Paradigmen dieses Systems passen, insbesondere die Implementierung von Vorlagen fĂŒr virtuelle Maschinen und die visuelle Integration. Im Folgenden werde ich versuchen, die Ideen und Werkzeuge von Qubes anhand der Lösung dieser Aufgabenstellung kurz darzustellen.
Arten der Virtualisierung von Xen
Im Kern von Qubes befindet sich der Hypervisor Xen, der die Funktionen fĂŒr das Ressourcenmanagement von CPU, Speicher und virtuellen Maschinen minimiert. Alle weiteren Arbeiten mit GerĂ€ten konzentrieren sich auf dom0, das auf einem Linux-Kernel basiert (fĂŒr dom0 wird in Qubes eine Fedora-Distribution verwendet).

Xen unterstĂŒtzt mehrere Arten der Virtualisierung (ich werde Beispiele fĂŒr die Intel-Architektur anfĂŒhren, obwohl Xen auch andere unterstĂŒtzt):
- Paravirtualisierung (PV) â ein Virtualisierungsmodus ohne HardwareunterstĂŒtzung, Ă€hnlich der Container-Virtualisierung, kann fĂŒr Systeme mit einem angepassten Kernel verwendet werden (in diesem Modus funktioniert dom0).
- VollstĂ€ndige Virtualisierung (HVM) â in diesem Modus wird die HardwareunterstĂŒtzung fĂŒr die CPU-Ressourcen verwendet, wĂ€hrend die gesamte andere Hardware durch QEMU emuliert wird. Dies ist die vielseitigste Methode, um verschiedene Betriebssysteme zu starten;
- Paravirtualisierung der Hardware (PVH â ParaVirtualized Hardware) â ein Virtualisierungsmodus mit HardwareunterstĂŒtzung, bei dem der Kernel des Gastbetriebssystems angepasste Treiber verwendet, um mit der Hardware zu interagieren (z. B. Shared Memory), wodurch die Notwendigkeit der QEMU-Emulation entfĂ€llt und die I/O-Leistung gesteigert wird. Der Linux-Kernel ab Version 4.11 kann in diesem Modus betrieben werden.

Seit der Version Qubes 4.0 wird aus SicherheitsgrĂŒnden auf den Paravirtualisierungsmodus verzichtet (unter anderem aufgrund bekannter Schwachstellen in der Intel-Architektur, die teilweise durch vollstĂ€ndige Virtualisierung behoben werden), standardmĂ€Ăig wird der PVH-Modus verwendet.
Bei der Verwendung der Emulation (HVM-Modus) wird QEMU in einer isolierten VM namens stubdomain gestartet, wodurch Risiken durch potenzielle Implementierungsfehler verringert werden. Das QEMU-Projekt enthĂ€lt eine Vielzahl von Code, einschlieĂlich KompatibilitĂ€tsfunktionen.
FĂŒr unseren Fall sollte dieser Modus fĂŒr Windows verwendet werden.
Dienst-Virtual-Maschinen
In der Sicherheitsarchitektur von Qubes ist eine der wesentlichen Funktionen des Hypervisors die Möglichkeit, PCI-GerĂ€te an die Gastumgebung weiterzuleiten. Das Herausnehmen von Hardware ermöglicht es, den Host-Teil des Systems vor externen Angriffen zu isolieren. Xen unterstĂŒtzt dies fĂŒr PV- und HVM-Modi; im zweiten Fall ist die UnterstĂŒtzung von IOMMU (Intel VT-d) erforderlich â eine Hardwareverwaltung des Speichers fĂŒr virtualisierte GerĂ€te.
Auf diese Weise werden mehrere System-Virtual-Maschinen erstellt:
- sys-net, dem NetzwerkgerĂ€te zugewiesen werden und das als BrĂŒcke fĂŒr andere VMs dient, z. B. fĂŒr Firewalleinstellungen oder als VPN-Client;
- sys-usb, dem USB- und andere Controller fĂŒr PeripheriegerĂ€te zugewiesen werden;
- sys-firewall, die keine physikalischen GerĂ€te verwendet, sondern als Firewall fĂŒr angeschlossene VMs fungiert.
FĂŒr die Arbeit mit USB-GerĂ€ten werden Proxy-Dienste eingesetzt, die unter anderem Folgendes ermöglichen:
- fĂŒr die Klasse der HID-GerĂ€te (Human Interface Device) die Ăbertragung von Befehlen an dom0;
- fĂŒr wechselbare Speichermedien die Umleitung von GerĂ€tetoken an andere VMs (auĂer dom0);
- direkte Umleitung des USB-GerÀts (unter Verwendung von USBIP und Integrationswerkzeugen).
In einer solchen Konfiguration kann ein erfolgreicher Angriff ĂŒber den Netzwerk-Stack oder angeschlossene GerĂ€te nur die aktive Dienst-VM kompromittieren, nicht das gesamte System. Nach einem Neustart der Dienst-VM wird sie im ursprĂŒnglichen Zustand geladen.
Integrationswerkzeuge fĂŒr VMs
Es gibt mehrere Möglichkeiten, mit dem Desktop der virtuellen Maschine zu interagieren: Anwendungen können im Gastbetriebssystem installiert oder die Videoausgabe durch Virtualisierung emuliert werden. Als Gastanwendungen können verschiedene universelle Remote-Access-Tools (RDP, VNC, Spice usw.) oder speziell fĂŒr einen bestimmten Hypervisor angepasste Tools verwendet werden (solche Instrumente werden oft als Gastwerkzeuge bezeichnet). Es kann auch eine hybride Lösung eingesetzt werden, bei der der Hypervisor die Ein- und Ausgabe fĂŒr das Gastbetriebssystem emuliert und extern die Möglichkeit bietet, ein Protokoll zu verwenden, das Ein- und Ausgabe kombiniert, wie es bei Spice der Fall ist. Dabei optimieren Remote-Access-Tools normalerweise die Anzeige, da sie fĂŒr den Betrieb ĂŒber das Netzwerk konzipiert sind, was jedoch die BildqualitĂ€t beeintrĂ€chtigen kann.
Qubes bietet eigene Mittel zur Integration von VMs an. Im Vordergrund steht dabei das grafische System â Fenster aus verschiedenen VMs werden auf einem einheitlichen Desktop mit individuellen farblichen Rahmen angezeigt. Die Integrationsmittel basieren insgesamt auf den Möglichkeiten des Hypervisors â geteiltem Speicher (Xen Grant Table), Benachrichtigungssystemen (Xen Event Channel), gemeinsam genutztem Speicher xenstore und dem Kommunikationsprotokoll vchan. Damit werden die grundlegenden Komponenten qrexec und qubes-rpc sowie Anwendungsdienste wie Audio- oder USB-Weiterleitung, Dateitransfer oder Clipboard-Inhalt, AusfĂŒhrung von Befehlen und Starten von Anwendungen realisiert. Es besteht die Möglichkeit, Richtlinien festzulegen, die den Zugriff auf verfĂŒgbare Dienste in der VM einschrĂ€nken. Im Bild unten ist ein Beispiel fĂŒr die Initialisierung der Interaktion zwischen zwei VMs dargestellt.

So erfolgt die Arbeit in der VM ohne Nutzung des Netzwerks, was die vollstĂ€ndige Nutzung von autonomen VMs ermöglicht, um Datenlecks zu vermeiden. Dies wird beispielsweise durch die Trennung kryptografischer Operationen (PGP/SSH) erreicht, bei der private SchlĂŒssel in isolierten VMs verwendet werden und deren Grenzen nicht ĂŒberschreiten.
Vorlagen, Anwendung und Einmal-VMs
Alle BenutzeraktivitĂ€ten in Qubes erfolgen in virtuellen Maschinen. Das Hauptbetriebssystem wird verwendet, um deren Betrieb zu steuern und zu visualisieren. Das Betriebssystem wird zusammen mit einem grundlegenden Satz an auf Vorlagen (TemplateVM) basierenden virtuellen Maschinen installiert. Eine solche Vorlage ist eine Linux-VM, die auf einer Fedora- oder Debian-Distribution basiert und ĂŒber installierte und konfigurierte Integrationswerkzeuge sowie separate System- und Benutzerdatenpartitionen verfĂŒgt. Die Installation und Aktualisierung von Software erfolgt ĂŒber den integrierten Paketmanager (dnf oder apt) aus den konfigurierten Repositories mit obligatorischer ĂberprĂŒfung der digitalen Signatur (GnuPG). Der Zweck dieser VMs besteht darin, Vertrauen in die darauf basierenden Anwendungs-VMs zu gewĂ€hrleisten.
Die Anwendungs-VM (AppVM) verwendet beim Start einen Snapshot des Systembereichs der entsprechenden VM-Vorlage und entfernt diesen Snapshot nach dem Abschluss ohne Ănderungen zu speichern. Die benötigten Benutzerdaten werden in einem fĂŒr jede Anwendungs-VM einzigartigen Benutzerdatenbereich gespeichert, der im Home-Verzeichnis eingebunden wird.

Eine nĂŒtzliche SicherheitsmaĂnahme kann die Verwendung von Einmal-VMs (disposibleVM) sein. Diese VM wird beim Start auf Basis einer Vorlage erstellt und verfolgt das einzige Ziel â die AusfĂŒhrung einer Anwendung, die nach deren Beendigung sofort wieder heruntergefahren wird. Einmal-VMs können verwendet werden, um verdĂ€chtige Dateien zu öffnen, deren Inhalte möglicherweise spezifische AnwendungsanfĂ€lligkeiten ausnutzen. Die Möglichkeit, eine Einmal-VM zu starten, ist in den Dateimanager (Nautilus) und den E-Mail-Client (Thunderbird) integriert.
Windows-VMs können auch zur Erstellung von Vorlagen und temporĂ€ren VMs verwendet werden, wobei das Benutzerprofil in einen separaten Bereich ĂŒbertragen wird. In unserem Beispiel wird diese Vorlage vom Benutzer fĂŒr Verwaltungsaufgaben und die Installation von Anwendungen genutzt. Auf Basis der Vorlage werden mehrere Anwendungs-VMs erstellt â mit eingeschrĂ€nktem Netzwerkzugang (Standardmöglichkeiten von sys-firewall) und ohne Netzwerkzugang ĂŒberhaupt (es wird kein virtuelles NetzwerkgerĂ€t erstellt). In diesen VMs stehen alle Ănderungen und Anwendungen, die in der Vorlage installiert werden, zur VerfĂŒgung, und selbst im Falle von HintertĂŒren ist kein Netzwerkzugang fĂŒr eine Kompromittierung möglich.
Der Wettkampf um Windows
Die oben beschriebenen Funktionen bilden die Grundlage von Qubes und funktionieren sehr stabil, aber die Komplikationen beginnen mit Windows. FĂŒr die Integration von Windows muss das Set der Qubes Windows Tools (QWT) verwendet werden, das Treiber fĂŒr die Arbeit mit Xen, den qvideo-Treiber sowie eine Reihe von Dienstprogrammen fĂŒr den Informationsaustausch (DateiĂŒbertragung, Zwischenablage) enthĂ€lt. Der Installations- und Konfigurationsprozess ist auf der Projektwebseite ausfĂŒhrlich dokumentiert, daher teilen wir unsere Erfahrungen aus der Anwendung.
Die Hauptschwierigkeit besteht im Wesentlichen im Fehlen von UnterstĂŒtzung fĂŒr die entwickelte Toolchain. Die Hauptentwickler (QWT) scheinen nicht verfĂŒgbar zu sein, und das Integrationsprojekt mit Windows wartet auf einen leitenden Entwickler. Daher war es zunĂ€chst notwendig, die FunktionalitĂ€t zu bewerten und ein VerstĂ€ndnis fĂŒr die Möglichkeit der eigenstĂ€ndigen UnterstĂŒtzung zu entwickeln, falls nötig. Am schwierigsten zu entwickeln und zu debuggen ist der grafische Treiber, der den Videoadapter und das Display emuliert, um ein Bild im gemeinsamen Speicher zu erzeugen, was es ermöglicht, entweder den gesamten Desktop oder direkt das Anwendungsfenster im Fenster des Hostsystems anzuzeigen. Im Verlauf der Analyse der Treiberfunktion haben wir den Code fĂŒr den Build in einer Linux-Umgebung angepasst und das Debugging-Schema zwischen zwei Gast-Windows-Systemen getestet. In der Cross-Build-Phase haben wir einige vereinfachende Ănderungen vorgenommen, hauptsĂ€chlich im Hinblick auf die "stille" Installation von Utilities, und auch die lĂ€stige LeistungseinbuĂen bei langfristiger Arbeit in der VM beseitigt. Die Ergebnisse haben wir in einem separaten , wodurch wir kurzzeitig den leitenden Entwickler von Qubes.
Der kritischste Schritt fĂŒr die StabilitĂ€t des Gastsystems ist der Start von Windows. Hier kann man den vertrauten blauen Bildschirm sehen (oder auch nicht). FĂŒr die meisten identifizierten Fehler gab es verschiedene Umgehungsmöglichkeiten â die Ablehnung von Xen-Treibern fĂŒr BlockgerĂ€te, das Deaktivieren der Speicherbalance der VM, die Fixierung der Netzwerkeinstellungen und die Minimierung der Anzahl der Kerne. Unser Gastsystem wird auf vollstĂ€ndig aktualisiertem Windows 7 und Windows 10 installiert und betrieben (auĂer qvideo).
Beim Wechsel von einer physischen Umgebung in eine virtuelle Umgebung kann es zu Problemen mit der Aktivierung von Windows kommen, insbesondere wenn vorinstallierte OEM-Versionen verwendet werden. Diese Systeme nutzen eine Aktivierung, die auf Lizenzen basiert, die im UEFI des GerĂ€ts hinterlegt sind. FĂŒr eine ordnungsgemĂ€Ăe Aktivierung ist es notwendig, einen der ACPI-Bereiche des Host-Systems vollstĂ€ndig in das Gastsystem zu ĂŒbertragen (SLIC-Tabelle) und einige weitere zu modifizieren, indem der Hersteller eingetragen wird. Xen ermöglicht die Anpassung des Inhalts zusĂ€tzlicher ACPI-Tabellen, jedoch nicht der grundlegenden. Ein Patch eines Ă€hnlichen Projekts, OpenXT, der fĂŒr Qubes angepasst wurde, bot eine hilfreiche Lösung. Diese Korrekturen waren nicht nur fĂŒr uns nĂŒtzlich und wurden in das Hauptrepository von Qubes sowie in die Libvirt-Bibliothek ĂŒbertragen.
Eindeutige MĂ€ngel der Integrationsmittel von Windows sind das Fehlen von Audio-UnterstĂŒtzung, USB-GerĂ€ten und die Schwierigkeiten bei der Medienverarbeitung, da es keine Hardware-UnterstĂŒtzung fĂŒr GPUs gibt. Dennoch steht der Nutzung von VMs fĂŒr die Arbeit mit Office-Dokumenten nichts im Weg, und es hindert nicht an der AusfĂŒhrung spezifischer Unternehmensanwendungen.
Die Anforderung, in den Offline-Modus oder den eingeschrĂ€nkten Netzwerkmodus nach der Erstellung einer Windows-VM-Vorlage zu wechseln, wurde durch die Erstellung entsprechender Konfigurationen fĂŒr Anwendungs-VMs umgesetzt. Die selektive Verbindung von externen Medien wurde ebenfalls mit den integrierten Mitteln des Betriebssystems gelöst â bei der Verbindung sind sie in der System-VM sys-usb verfĂŒgbar, von wo sie an die erforderliche VM âdurchgereichtâ werden können. Der Desktop des Benutzers sieht ungefĂ€hr so aus.

Die finale Version des Systems wurde von den Nutzern positiv angenommen (wie es bei einer so komplexen Lösung möglich ist), und die integrierten Mittel des Systems ermöglichten eine Erweiterung der Nutzung auf mobile ArbeitsplĂ€tze mit Zugriff ĂŒber VPN.
AbschlieĂend
Die Virtualisierung insgesamt verringert die Risiken bei der Verwendung von nicht unterstĂŒtzten Windows-Systemen â sie zwingt nicht zur Sicherstellung der KompatibilitĂ€t mit neuer Hardware, ermöglicht den Ausschluss oder die Kontrolle des Zugriffs auf das System ĂŒber Netzwerke oder durch angeschlossene GerĂ€te und schafft eine Umgebung fĂŒr den einmaligen Einsatz.
Das Betriebssystem Qubes basiert auf dem Konzept der Isolation durch Virtualisierung und nutzt diese sowie andere Mechanismen zur GewĂ€hrleistung der Sicherheit. Viele sehen in Qubes in erster Linie den Wunsch nach AnonymitĂ€t, doch es ist ein hilfreiches System sowohl fĂŒr Ingenieure, die oft Projekte, Infrastrukturen und Zugriffsgeheimnisse kombinieren, als auch fĂŒr Sicherheitsforscher. Die Trennung von Anwendungen, Daten und die Formalisierung ihrer Interaktion sind grundlegende Schritte zur Bedrohungsanalyse und zum Entwurf von Schutzsystemen. Diese Trennung hilft, Informationen zu strukturieren und das Risiko menschlicher Fehler â durch Eile, MĂŒdigkeit usw. â zu minimieren.
Derzeit liegt der Schwerpunkt in der Entwicklung auf der Erweiterung der FunktionalitĂ€t von Linux-Umgebungen. Die Version 4.1, die bald veröffentlicht wird, basiert auf Fedora 31 und wird die aktuellen Versionen der SchlĂŒsselkomponenten Xen und Libvirt enthalten. Es ist erwĂ€hnenswert, dass Qubes von Fachleuten im Bereich der Informationssicherheit entwickelt wird, die stets schnell Updates bereitstellen, sobald neue Bedrohungen oder Fehler auftauchen.
Nachwort
Eine unserer entwickelten experimentellen Funktionen ermöglicht die Erstellung von VMs mit Gastzugang zur GPU basierend auf der Intel GVT-g Technologie. Dies eröffnet die Möglichkeit, die FĂ€higkeiten der Grafikkarte zu nutzen und den Anwendungsbereich des Systems erheblich zu erweitern. Zum Zeitpunkt der Erstellung dieses Artikels funktioniert diese FunktionalitĂ€t fĂŒr Testversionen von Qubes 4.1 und ist verfĂŒgbar auf .
Quelle: habr.com
