Verwendung von QubesOS zum Arbeiten mit Windows 7

Es gibt nicht viele Artikel auf Habré, die sich mit dem Qubes-Betriebssystem befassen, und die, die ich gesehen habe, beschreiben nicht viel von der Erfahrung bei der Verwendung. Im Folgenden möchte ich dies anhand des Beispiels der Verwendung von Qubes als Schutzmittel (vor) der Windows-Umgebung korrigieren und gleichzeitig die Anzahl der russischsprachigen Benutzer des Systems abschätzen.

Verwendung von QubesOS zum Arbeiten mit Windows 7

Warum Qubes?

Die Geschichte des Endes des technischen Supports für Windows 7 und die zunehmende Besorgnis der Benutzer führten dazu, dass die Arbeit dieses Betriebssystems unter Berücksichtigung der folgenden Anforderungen organisiert werden musste:

  • Gewährleistung der Verwendung von vollständig aktiviertem Windows 7 mit der Möglichkeit für den Benutzer, Updates und verschiedene Anwendungen (auch über das Internet) zu installieren;
  • Implementierung eines vollständigen oder selektiven Ausschlusses von Netzwerkinteraktionen basierend auf Bedingungen (autonomer Betrieb und Verkehrsfilterungsmodi);
  • bieten die Möglichkeit, Wechselmedien und Geräte selektiv anzuschließen.

Diese Restriktionen setzen einen klar vorbereiteten Benutzer voraus, da eine selbstständige Administration erlaubt ist und sich die Restriktionen nicht auf die Blockierung seiner möglichen Aktionen beziehen, sondern auf den Ausschluss möglicher Fehler oder zerstörerischer Auswirkungen auf die Software. Diese. Es gibt keinen internen Täter im Modell.

Auf der Suche nach einer Lösung haben wir uns schnell von der Idee verabschiedet, Einschränkungen über integrierte oder zusätzliche Windows-Tools zu implementieren, da es ziemlich schwierig ist, einen Benutzer mit Administratorrechten effektiv einzuschränken und ihm die Möglichkeit zu geben, Anwendungen zu installieren.

Die nächste Lösung war die Isolierung mittels Virtualisierung. Bekannte Tools zur Desktop-Virtualisierung (z. B. Virtualbox) sind zur Lösung von Sicherheitsproblemen schlecht geeignet und die aufgeführten Einschränkungen müssen vom Benutzer durch ständiges Wechseln oder Anpassen der Eigenschaften der virtuellen Gastmaschine (im Folgenden bezeichnet) vorgenommen werden als VM), was das Fehlerrisiko erhöht.

Gleichzeitig hatten wir Erfahrung mit der Verwendung von Qubes als Desktop-System eines Benutzers, hatten jedoch Zweifel an der Stabilität der Arbeit mit Gast-Windows. Es wurde beschlossen, die aktuelle Version von Qubes zu überprüfen, da die genannten Einschränkungen sehr gut in das Paradigma dieses Systems passen, insbesondere die Implementierung von Vorlagen für virtuelle Maschinen und die visuelle Integration. Als nächstes werde ich versuchen, am Beispiel der Problemlösung kurz auf die Ideen und Werkzeuge von Qubes einzugehen.

Arten der Xen-Virtualisierung

Qubes basiert auf dem Xen-Hypervisor, der die Funktionen zur Verwaltung von Prozessorressourcen, Speicher und virtuellen Maschinen minimiert. Alle anderen Arbeiten mit Geräten konzentrieren sich auf dom0 basierend auf dem Linux-Kernel (Qubes für dom0 verwendet die Fedora-Distribution).

Verwendung von QubesOS zum Arbeiten mit Windows 7

Xen unterstützt mehrere Arten der Virtualisierung (ich werde Beispiele für die Intel-Architektur geben, obwohl Xen andere unterstützt):

  • Paravirtualisierung (PV) – ein Virtualisierungsmodus ohne Hardwareunterstützung, der an Containervirtualisierung erinnert, kann für Systeme mit angepasstem Kernel verwendet werden (dom0 arbeitet in diesem Modus);
  • Vollständige Virtualisierung (HVM) – in diesem Modus wird die Hardwareunterstützung für Prozessorressourcen genutzt und alle anderen Geräte werden mit QEMU emuliert. Dies ist die universellste Möglichkeit, verschiedene Betriebssysteme auszuführen;
  • Paravirtualisierung von Hardware (PVH – ParaVirtualized Hardware) – ein Virtualisierungsmodus mit Hardwareunterstützung, bei dem der Kernel des Gastsystems für die Arbeit mit Hardware Treiber verwendet, die an die Fähigkeiten des Hypervisors angepasst sind (z. B. gemeinsam genutzter Speicher), wodurch die Notwendigkeit einer QEMU-Emulation entfällt und Erhöhung der I/O-Leistung. Der Linux-Kernel ab 4.11 kann in diesem Modus arbeiten.

Verwendung von QubesOS zum Arbeiten mit Windows 7

Ab Qubes 4.0 wird aus Sicherheitsgründen auf die Verwendung des Paravirtualisierungsmodus verzichtet (unter anderem aufgrund bekannter Schwachstellen in der Intel-Architektur, die durch die Verwendung vollständiger Virtualisierung teilweise gemildert werden); standardmäßig wird der PVH-Modus verwendet.

Bei Verwendung der Emulation (HVM-Modus) wird QEMU in einer isolierten VM namens Stubdomain gestartet, wodurch das Risiko der Ausnutzung potenzieller Fehler bei der Implementierung verringert wird (das QEMU-Projekt enthält viel Code, auch aus Kompatibilitätsgründen).
In unserem Fall sollte dieser Modus für Windows verwendet werden.

Virtuelle Maschinen bedienen

In der Qubes-Sicherheitsarchitektur ist eine der Schlüsselfunktionen des Hypervisors die Übertragung von PCI-Geräten in die Gastumgebung. Mit dem Hardware-Ausschluss können Sie den Host-Teil des Systems vor externen Angriffen isolieren. Xen unterstützt dies für PV- und HVM-Modi, im zweiten Fall erfordert es Unterstützung für IOMMU (Intel VT-d) – Hardware-Speicherverwaltung für virtualisierte Geräte.

Dadurch werden mehrere virtuelle Systemmaschinen erstellt:

  • sys-net, an das Netzwerkgeräte übertragen werden und das als Brücke für andere VMs dient, beispielsweise solche, die die Funktionen einer Firewall oder eines VPN-Clients implementieren;
  • sys-usb, auf das USB- und andere Peripheriegeräte-Controller übertragen werden;
  • sys-firewall, die keine Geräte verwendet, sondern als Firewall für verbundene VMs fungiert.

Für die Arbeit mit USB-Geräten werden Proxy-Dienste verwendet, die unter anderem Folgendes bereitstellen:

  • für die Geräteklasse HID (Human Interface Device): Senden von Befehlen an dom0;
  • für Wechselmedien Umleitung von Geräte-Volumes auf andere VMs (außer dom0);
  • Direkte Umleitung auf ein USB-Gerät (mithilfe von USBIP und Integrationstools).

In einer solchen Konfiguration kann ein erfolgreicher Angriff über den Netzwerkstapel oder angeschlossene Geräte dazu führen, dass nur die laufende Dienst-VM und nicht das gesamte System als Ganzes gefährdet wird. Und nach dem Neustart der Dienst-VM wird diese im Originalzustand geladen.

VM-Integrationstools

Es gibt mehrere Möglichkeiten, mit dem Desktop einer virtuellen Maschine zu interagieren – Anwendungen im Gastsystem zu installieren oder Videos mithilfe von Virtualisierungstools zu emulieren. Gastanwendungen können verschiedene universelle Fernzugriffstools (RDP, VNC, Spice usw.) sein oder an einen bestimmten Hypervisor angepasst sein (solche Tools werden normalerweise als Gastdienstprogramme bezeichnet). Eine gemischte Option kann auch verwendet werden, wenn der Hypervisor I/O für das Gastsystem emuliert und extern die Möglichkeit bietet, ein Protokoll zu verwenden, das I/O kombiniert, beispielsweise wie Spice. Gleichzeitig optimieren Fernzugriffstools in der Regel das Bild, da sie über ein Netzwerk arbeiten, was sich nicht positiv auf die Bildqualität auswirkt.

Qubes stellt eigene Tools für die VM-Integration bereit. Erstens handelt es sich dabei um ein Grafiksubsystem – Fenster verschiedener VMs werden auf einem einzigen Desktop mit einem eigenen Farbrahmen angezeigt. Im Allgemeinen basieren Integrationstools auf den Fähigkeiten des Hypervisors – Shared Memory (Xen Grant Table), Benachrichtigungstools (Xen Event Channel), Shared Storage Xenstore und das Vchan-Kommunikationsprotokoll. Mit ihrer Hilfe werden die Grundkomponenten qrexec und qubes-rpc sowie Anwendungsdienste implementiert – Audio- oder USB-Umleitung, Übertragung von Dateien oder Inhalten der Zwischenablage, Ausführung von Befehlen und Starten von Anwendungen. Es ist möglich, Richtlinien festzulegen, mit denen Sie die auf einer VM verfügbaren Dienste einschränken können. Die folgende Abbildung zeigt beispielhaft die Vorgehensweise zur Initialisierung der Interaktion zweier VMs.

Verwendung von QubesOS zum Arbeiten mit Windows 7

Somit wird die Arbeit in der VM ohne Verwendung eines Netzwerks ausgeführt, was die vollständige Nutzung autonomer VMs ermöglicht, um Informationslecks zu vermeiden. So wird beispielsweise die Trennung kryptografischer Operationen (PGP/SSH) umgesetzt, wenn private Schlüssel in isolierten VMs verwendet werden und nicht darüber hinausgehen.

Vorlagen, Anwendungen und einmalige VMs

Die gesamte Benutzerarbeit in Qubes erfolgt in virtuellen Maschinen. Zur Steuerung und Visualisierung wird das Haupthostsystem genutzt. Das Betriebssystem wird zusammen mit einem Basissatz vorlagenbasierter virtueller Maschinen (TemplateVM) installiert. Bei dieser Vorlage handelt es sich um eine Linux-VM, die auf der Fedora- oder Debian-Distribution basiert, mit installierten und konfigurierten Integrationstools sowie dedizierten System- und Benutzerpartitionen. Die Installation und Aktualisierung der Software erfolgt über einen Standardpaketmanager (dnf oder apt) aus konfigurierten Repositorys mit obligatorischer digitaler Signaturprüfung (GnuPG). Der Zweck solcher VMs besteht darin, das Vertrauen in die auf ihrer Basis gestarteten Anwendungs-VMs sicherzustellen.

Beim Start verwendet eine Anwendungs-VM (AppVM) einen Snapshot der Systempartition der entsprechenden VM-Vorlage und löscht diesen Snapshot nach Abschluss, ohne die Änderungen zu speichern. Die vom Benutzer benötigten Daten werden in einer für jede Anwendungs-VM eindeutigen Benutzerpartition gespeichert, die im Home-Verzeichnis bereitgestellt wird.

Verwendung von QubesOS zum Arbeiten mit Windows 7

Der Einsatz von Einweg-VMs (disposableVM) kann aus Sicherheitsgründen sinnvoll sein. Eine solche VM wird beim Start auf der Grundlage einer Vorlage erstellt und zu einem Zweck gestartet: um eine Anwendung auszuführen und die Arbeit nach dem Schließen abzuschließen. Einweg-VMs können zum Öffnen verdächtiger Dateien verwendet werden, deren Inhalt zur Ausnutzung spezifischer Anwendungsschwachstellen führen könnte. Die Möglichkeit, eine einmalige VM auszuführen, ist in den Dateimanager (Nautilus) und den E-Mail-Client (Thunderbird) integriert.

Die Windows-VM kann auch zum Erstellen einer Vorlage und einer einmaligen VM verwendet werden, indem das Benutzerprofil in einen separaten Abschnitt verschoben wird. In unserer Version wird eine solche Vorlage vom Benutzer für Verwaltungsaufgaben und Anwendungsinstallation verwendet. Basierend auf der Vorlage werden mehrere Anwendungs-VMs erstellt – mit eingeschränktem Zugriff auf das Netzwerk (Standard-Sys-Firewall-Funktionen) und überhaupt ohne Zugriff auf das Netzwerk (es wird kein virtuelles Netzwerkgerät erstellt). Alle in der Vorlage installierten Änderungen und Anwendungen stehen für die Arbeit in diesen VMs zur Verfügung, und selbst wenn Lesezeichenprogramme eingeführt werden, haben sie keinen Netzwerkzugriff und können kompromittiert werden.

Kämpfe für Windows

Die oben beschriebenen Features sind die Basis von Qubes und funktionieren recht stabil; die Schwierigkeiten beginnen bei Windows. Um Windows zu integrieren, müssen Sie eine Reihe von Gasttools Qubes Windows Tools (QWT) verwenden, die Treiber für die Arbeit mit Xen, einen Qvideo-Treiber und eine Reihe von Dienstprogrammen für den Informationsaustausch (Dateiübertragung, Zwischenablage) umfassen. Der Installations- und Konfigurationsprozess ist auf der Projektwebsite ausführlich dokumentiert, sodass wir unsere Anwendungserfahrungen teilen.

Die Hauptschwierigkeit liegt im Wesentlichen in der mangelnden Unterstützung der entwickelten Tools. Key Developers (QWT) scheint nicht verfügbar zu sein und das Windows-Integrationsprojekt wartet auf einen Hauptentwickler. Deshalb galt es zunächst, die Leistungsfähigkeit des Unternehmens zu beurteilen und sich ein Bild von der Möglichkeit zu machen, es bei Bedarf eigenständig zu unterstützen. Am schwierigsten zu entwickeln und zu debuggen ist der Grafiktreiber, der den Videoadapter und die Anzeige emuliert, um ein Bild im gemeinsam genutzten Speicher zu generieren, sodass Sie den gesamten Desktop oder das Anwendungsfenster direkt im Hostsystemfenster anzeigen können. Während der Analyse der Funktionsweise des Treibers haben wir den Code für die Assemblierung in einer Linux-Umgebung angepasst und ein Debugging-Schema zwischen zwei Windows-Gastsystemen ausgearbeitet. In der Crossbuild-Phase haben wir mehrere Änderungen vorgenommen, die uns die Arbeit vereinfacht haben, vor allem im Hinblick auf die „stille“ Installation von Dienstprogrammen, und auch den lästigen Leistungsabfall beseitigt haben, der bei längerer Arbeit in einer VM auftritt. Die Ergebnisse der Arbeit stellten wir gesondert vor Lagerstätten, also nicht mehr lange inspirierend Leitender Qubes-Entwickler.

Die kritischste Phase im Hinblick auf die Stabilität des Gastsystems ist der Start von Windows, hier ist der bekannte Bluescreen zu sehen (oder gar nicht zu sehen). Für die meisten der identifizierten Fehler gab es verschiedene Problemumgehungen – die Beseitigung von Xen-Blockgerätetreibern, die Deaktivierung des VM-Speicherausgleichs, die Korrektur von Netzwerkeinstellungen und die Minimierung der Anzahl der Kerne. Unser Gast-Tools-Build lässt sich unter vollständig aktualisiertem Windows 7 und Windows 10 (außer qvideo) installieren und ausführen.

Beim Wechsel von einer realen Umgebung in eine virtuelle Umgebung tritt ein Problem bei der Aktivierung von Windows auf, wenn vorinstallierte OEM-Versionen verwendet werden. Solche Systeme nutzen die Aktivierung basierend auf Lizenzen, die im UEFI des Geräts angegeben sind. Um die Aktivierung korrekt durchzuführen, ist es notwendig, einen der gesamten ACPI-Abschnitte des Hostsystems (SLIC-Tabelle) in das Gastsystem zu übersetzen und die anderen leicht zu bearbeiten und den Hersteller zu registrieren. Mit Xen können Sie den ACPI-Inhalt zusätzlicher Tabellen anpassen, ohne jedoch die Haupttabellen zu ändern. Bei der Lösung half ein Patch aus einem ähnlichen OpenXT-Projekt, der für Qubes angepasst wurde. Die Korrekturen schienen nicht nur für uns nützlich zu sein und wurden in das Haupt-Qubes-Repository und die Libvirt-Bibliothek übersetzt.

Zu den offensichtlichen Nachteilen der Windows-Integrationstools zählen die fehlende Unterstützung von Audio und USB-Geräten sowie die Komplexität der Arbeit mit Medien, da es keine Hardwareunterstützung für die GPU gibt. Dies verhindert jedoch nicht die Verwendung der VM für die Arbeit mit Office-Dokumenten und auch nicht den Start spezifischer Unternehmensanwendungen.

Die Anforderung, nach der Erstellung einer Windows-VM-Vorlage in den Betriebsmodus ohne Netzwerk oder mit eingeschränktem Netzwerk zu wechseln, wurde durch die Erstellung entsprechender Konfigurationen von Anwendungs-VMs erfüllt, und die Möglichkeit, Wechselmedien selektiv anzuschließen, wurde ebenfalls durch Standard-Betriebssystemtools gelöst – wenn verbunden , stehen sie in der System-VM sys-usb zur Verfügung und können von dort an die gewünschte VM „weitergeleitet“ werden. Der Desktop des Benutzers sieht in etwa so aus.

Verwendung von QubesOS zum Arbeiten mit Windows 7

Die endgültige Version des Systems wurde von den Benutzern positiv angenommen (soweit eine solche umfassende Lösung dies zulässt), und die Standardtools des Systems ermöglichten die Erweiterung der Anwendung auf den mobilen Arbeitsplatz des Benutzers mit Zugriff über VPN.

Statt einer Schlussfolgerung

Durch die Virtualisierung können Sie im Allgemeinen die Risiken der Verwendung von Windows-Systemen ohne Unterstützung verringern. Sie erzwingt nicht die Kompatibilität mit neuer Hardware, ermöglicht es Ihnen, den Zugriff auf das System über das Netzwerk oder über angeschlossene Geräte auszuschließen oder zu kontrollieren, und ermöglicht dies auch Implementieren Sie eine einmalige Startumgebung.

Basierend auf der Idee der Isolation durch Virtualisierung hilft Ihnen Qubes OS, diese und andere Sicherheitsmechanismen zu nutzen. Von außen betrachten viele Menschen Qubes in erster Linie als Wunsch nach Anonymität, aber es ist ein nützliches System sowohl für Ingenieure, die oft mit Projekten, Infrastrukturen und Geheimnissen jonglieren, um darauf zuzugreifen, als auch für Sicherheitsforscher. Die Trennung von Anwendungen und Daten und die Formalisierung ihrer Interaktion sind die ersten Schritte der Bedrohungsanalyse und des Sicherheitssystementwurfs. Diese Trennung hilft, Informationen zu strukturieren und die Wahrscheinlichkeit von Fehlern aufgrund des menschlichen Faktors – Eile, Müdigkeit usw. – zu verringern.

Derzeit liegt der Schwerpunkt in der Entwicklung auf der Erweiterung der Funktionalität von Linux-Umgebungen. Zur Veröffentlichung wird die Version 4.1 vorbereitet, die auf Fedora 31 basiert und aktuelle Versionen der Schlüsselkomponenten Xen und Libvirt enthält. Es ist erwähnenswert, dass Qubes von Informationssicherheitsexperten erstellt wird, die stets umgehend Updates veröffentlichen, wenn neue Bedrohungen oder Fehler erkannt werden.

Nachwort

Eine der experimentellen Funktionen, die wir entwickeln, ermöglicht es uns, VMs mit Unterstützung für den Gastzugriff auf die GPU basierend auf der Intel GVT-g-Technologie zu erstellen, wodurch wir die Fähigkeiten des Grafikadapters nutzen und den Umfang des Systems erheblich erweitern können. Zum Zeitpunkt des Verfassens dieses Artikels funktioniert diese Funktionalität für Test-Builds von Qubes 4.1 und ist verfügbar unter github.

Source: habr.com

Kommentar hinzufügen