Die Verwendung von QubesOS für die Arbeit mit Windows 7.

Es gibt nicht viele Artikel auf Habré über das Betriebssystem Qubes, und die, die ich gesehen habe, beschreiben wenig die Erfahrungen damit. Im Folgenden hoffe ich, dies am Beispiel der Verwendung von Qubes als Schutzmittel gegen Windows zu verbessern und gleichzeitig die Anzahl der russischsprachigen Benutzer des Systems zu bewerten.

Die Verwendung von QubesOS für die Arbeit mit Windows 7.

Warum Qubes?

Die Geschichte mit dem Ende des Supports für Windows 7 und die wachsende Besorgnis der Benutzer führte zur Notwendigkeit, diese OS zu organisieren, wobei die folgenden Anforderungen berücksichtigt wurden:

  • Die vollständige Aktivierung von Windows 7 zu gewährleisten, mit der Möglichkeit für den Benutzer, Updates und verschiedene Anwendungen (einschließlich über das Internet) zu installieren;
  • Vollständige oder selektive Ausschluss von Netzwerkinteraktionen nach Bedingung (Betriebsarten für Offline-Betrieb und Traffic-Filterung) umzusetzen;
  • Die Möglichkeit eines selektiven Anschlusses von Wechselmedien und Geräten bereitzustellen.

Ein solches Set an Einschränkungen setzt einen deutlich vorbereiteten Benutzer voraus, da eine eigenständige Verwaltung erlaubt ist und die Einschränkungen nicht mit der Blockierung potenzieller Aktionen, sondern mit dem Ausschluss möglicher Fehler oder schädlicher Softwarewirkungen verbunden sind. Das bedeutet, dass es im Modell keinen internen Angreifer gibt.

Auf der Suche nach einer Lösung haben wir schnell von der Idee Abstand genommen, die Einschränkungen mit integrierten oder zusätzlichen Windows-Mitteln umzusetzen, da es schwierig ist, einen Benutzer mit Administratorrechten effektiv einzuschränken und ihm die Möglichkeit zu lassen, Anwendungen zu installieren.

Die nächste Lösungsmöglichkeit war die Isolation durch Virtualisierung. Bekanntlich sind gängige Tools für Desktop-Virtualisierung (zum Beispiel VirtualBox) schlecht geeignet für Sicherheitsaufgaben, und die genannten Einschränkungen müssen vom Benutzer ständig durch das Wechseln oder Anpassen der Eigenschaften der Gastvirtualmaschine (im Folgenden VM) vorgenommen werden, was die Fehleranfälligkeit erhöht.

Gleichzeitig hatten wir Erfahrungen mit Qubes als Desktop-Betriebssystem, hatten jedoch Bedenken hinsichtlich der Stabilität bei der Arbeit mit der Gastversion von Windows. Es wurde beschlossen, die aktuelle Version von Qubes zu testen, da die festgelegten Einschränkungen sehr gut in die Paradigmen dieses Systems passen, insbesondere die Umsetzung von Vorlagen für virtuelle Maschinen und die visuelle Integration. Im Folgenden werde ich versuchen, die Ideen und Werkzeuge von Qubes möglichst kurz zu erläutern, am Beispiel der Lösung der gestellten Aufgabe.

Arten der Virtualisierung von Xen

Qubes basiert auf dem Hypervisor Xen, der die Funktionen zur Verwaltung von CPU-Ressourcen, Speicher und virtuellen Maschinen minimiert. Alle anderen Arbeiten mit Geräten sind in dom0 auf Basis des Linux-Kernels konzentriert (in Qubes wird für dom0 eine Fedora-Distribution verwendet).

Die Verwendung von QubesOS für die Arbeit mit Windows 7.

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

  • Paravirtualisierung (PV) — ein Virtualisierungsmodus ohne Nutzung hardwareseitiger Unterstü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 für die CPU-Ressourcen hardwareseitige Unterstützung genutzt, während die gesamte andere Hardware von QEMU emuliert wird. Dies ist die vielseitigste Methode, um verschiedene Betriebssysteme zu starten;
  • Paravirtualisierung der Hardware (PVH — ParaVirtualized Hardware) — ein Virtualisierungsmodus unter Verwendung hardwareseitiger Unterstützung, bei dem das Kernel des Gastsystems angepasste Treiber verwendet, die an die Möglichkeiten des Hypervisors angepasst sind (z.B. gemeinsam genutzter Speicher), wodurch die Notwendigkeit der QEMU-Emulation entfällt und die Ein- und Ausgabe-Leistung erhöht wird. Der Linux-Kernel kann seit Version 4.11 in diesem Modus arbeiten.

Die Verwendung von QubesOS für die Arbeit mit Windows 7.

Seit der Version Qubes 4.0 wird aus Sicherheitsgründen der Modus der Paravirtualisierung aufgegeben (auch wegen bekannter Schwachstellen der Intel-Architektur, die teilweise durch den Einsatz vollständiger Virtualisierung behoben werden können), standardmäßig wird der Modus PVH verwendet.

Bei der Verwendung der Emulation (HVM-Modus) wird QEMU in einer isolierten VM namens stubdomain gestartet, wodurch die Risiken der Ausnutzung potenzieller Fehler in der Implementierung verringert werden (das QEMU-Projekt enthält viel Code, einschließlich solcher für die Kompatibilität).
Dieser Modus sollte in unserem Fall für Windows verwendet werden.

Dienstvirtualmaschinen

In der Sicherheitsarchitektur von Qubes gehört die Übertragung von PCI-Geräten in die Gastsysteme zu den Schlüsselmerkmalen des Hypervisors. Die Isolation der Hardware ermöglicht es, den Host-Teil des Systems vor externen Angriffen zu schützen. Xen unterstützt dies in den PV- und HVM-Modi; im letzteren Fall ist die Unterstützung von IOMMU (Intel VT-d) erforderlich – die Hardwareverwaltung des Speichers für virtualisierte Geräte.

Auf diese Weise werden mehrere Systemvirtualmaschinen erstellt:

  • sys-net, dem Netzwerkanpassungen zugewiesen werden und die als Brücke für andere VMs dient, wie z.B. für Funktionen einer Firewall oder eines VPN-Clients;
  • sys-usb, dem USB- und andere Peripherie-Controller zugewiesen werden;
  • sys-firewall, welche keine Geräte verwendet, sondern als Firewall für angeschlossene VMs fungiert.

Für die Arbeit mit USB-Geräten werden Proxy-Dienste verwendet, 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 Wechseldatenträger die Umleitung von Gerätespeichern in andere VMs (außer dom0);
  • die direkte Umleitung von USB-Geräten (USBIP und Integrationswerkzeuge werden verwendet).

In einer solchen Konfiguration kann ein erfolgreicher Angriff über den Netzwerkstapel oder angeschlossene Geräte nur zur Kompromittierung der laufenden Dienst-VM führen, aber nicht des gesamten Systems. Nach einem Neustart der Dienst-VM wird diese in ihren ursprünglichen Zustand geladen.

Integrationswerkzeuge für VMs

Es gibt mehrere Möglichkeiten, mit dem Desktop einer virtuellen Maschine zu interagieren – Anwendungen im Gastbetriebssystem zu installieren oder Videoinhalte mithilfe von Virtualisierung zu emulieren. Zu den Gastanwendungen können verschiedene universelle Remote-Access-Tools (RDP, VNC, Spice usw.) oder an einen bestimmten Hypervisor angepasste Anwendungen gehören (diese Werkzeuge werden normalerweise als Gast-Utilities bezeichnet). Es kann auch eine gemischte Variante verwendet werden, bei der der Hypervisor die Ein- und Ausgabe für das Gastbetriebssystem emuliert, während extern die Möglichkeit besteht, ein Protokoll zu verwenden, das die Ein- und Ausgabe kombiniert, wie bei Spice. Dabei optimieren Remote-Access-Tools in der Regel das Bild, da sie eine Netzwerkverbindung voraussetzen, was die Bildqualität beeinträchtigen kann.

Qubes bietet eigene Mittel zur Integration von VMs. Zunächst ist dies das grafische System – Fenster aus verschiedenen VMs werden auf einem einheitlichen Desktop mit eigenen farblichen Umrandungen angezeigt. Im Allgemeinen basieren die Integrationswerkzeuge auf den Möglichkeiten des Hypervisors – gemeinsam genutztem Speicher (Xen Grant Table), Benachrichtigungswerkzeugen (Xen Event Channel), gemeinsam genutztem Speicher xenstore und dem Kommunikationsprotokoll vchan. Mit ihnen werden die grundlegenden Komponenten qrexec und qubes-rpc sowie Anwendungsdienste – Sound- oder USB-Umleitung, Dateiübertragung oder Austausch von Inhalten – realisiert, ebenso wie das Ausführen von Befehlen und Start von Anwendungen. Es besteht die Möglichkeit, Richtlinien festzulegen, die den Zugriff auf die Dienste in der VM einschränken. Im Bild unten sehen Sie ein Beispiel für die Initialisierungsprozedur der Interaktion zwischen zwei VMs.

Die Verwendung von QubesOS für die Arbeit mit Windows 7.

So erfolgt die Arbeit in der VM ohne Nutzung des Netzwerks, was die vollständige Verwendung autonomer VMs ermöglicht, um Informationslecks zu vermeiden. Zum Beispiel wird dadurch die Trennung von kryptografischen Operationen (PGP/SSH) realisiert, bei der private Schlüssel in isolierten VMs verwendet werden, ohne das Gelände dieser VMs zu verlassen.

Vorlagen, Anwendungs- und Einmal-VMs

Die gesamte Arbeit des Benutzers in Qubes erfolgt in virtuellen Maschinen. Das Hauptbetriebssystem wird verwendet, um deren Betrieb und Visualisierung zu steuern. Das Betriebssystem wird zusammen mit einem Grundsatz von virtuellen Maschinen auf der Basis von Vorlagen (TemplateVM) installiert. Eine solche Vorlage ist eine Linux-VM basierend auf der Distribution Fedora oder Debian, mit installierten und konfigurierten Integrationsmitteln sowie zugewiesenen System- und Benutzerpartitionen. 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 solcher VMs besteht darin, Vertrauen in die auf ihrer Grundlage gestarteten Anwendungs-VMs zu gewährleisten.

Die Anwendungs-VM (AppVM) verwendet beim Start einen Snapshot der Systempartition der entsprechenden Vorlagen-VM und entfernt diesen Snapshot nach dem Beenden, ohne Änderungen zu speichern. Die erforderlichen Benutzerdaten werden in einer einzigartigen Benutzerpartition für jede Anwendungs-VM gespeichert, die im Home-Verzeichnis eingehängt ist.

Die Verwendung von QubesOS für die Arbeit mit Windows 7.

Aus sicherheitstechnischer Sicht kann die Verwendung von Einmal-VMs (disposableVM) nützlich sein. Eine solche VM wird zu Beginn erstellt, basierend auf einer Vorlage, und wird mit einem einzigen Ziel gestartet — der Ausführung einer Anwendung, die nach deren Schließung ihre Arbeit beendet. Einmal-VMs können zum Öffnen verdächtiger Dateien verwendet werden, deren Inhalt möglicherweise zur Ausnutzung von Schwachstellen spezifischer Anwendungen führt. Die Möglichkeit, eine Einmal-VM zu starten, ist in den Dateimanager (Nautilus) und den E-Mail-Client (Thunderbird) integriert.

Eine Windows-VM kann ebenfalls verwendet werden, um eine Vorlage und eine Einmal-VM zu erstellen; dafür wird das Benutzerprofil in eine separate Partition übertragen. In unserem Fall wird eine solche Vorlage vom Benutzer für Administrationsaufgaben und die Installation von Anwendungen verwendet. Auf der Grundlage der Vorlage werden mehrere Anwendungs-VMs erstellt — mit eingeschränktem Netzwerkzugriff (Standardmöglichkeiten sys-firewall) und ohne Netzwerkzugang überhaupt (kein virtuelles Netzwerkgerät wird erstellt). Für die Arbeit in diesen VMs sind alle Änderungen und Anwendungen verfügbar, die im Template installiert werden, und selbst im Falle von eingebetteten Schadprogrammen wird ihnen der Netzwerkzugang entzogen, um eine Kompromittierung zu verhindern.

Der Kampf um Windows

Die oben beschriebenen Funktionen sind die Grundlage von Qubes und funktionieren durchaus stabil, die Schwierigkeiten beginnen mit Windows. Für die Integration von Windows ist ein Satz von Guest Tools erforderlich, die Qubes Windows Tools (QWT) umfassen, darunter Treiber für Xen, den qvideo-Treiber und ein Set von Utensilien für den Austausch von Informationen (Dateiübertragung, Zwischenablage). Der Installations- und Konfigurationsprozess ist ausführlich auf der Projektwebsite dokumentiert, daher teilen wir unsere Erfahrungen.

Die Hauptschwierigkeit besteht im Wesentlichen im Fehlen von Unterstützung durch die entwickelten Werkzeuge. Die Hauptentwickler (QWT) sind anscheinend nicht verfügbar, und das Integrationsprojekt mit Windows wartet auf den leitenden Entwickler. Daher war es zunächst notwendig, die Funktionsfähigkeit zu bewerten und ein Verständnis für die Möglichkeit der eigenständigen Unterstützung zu entwickeln. Am schwierigsten zu entwickeln und zu debuggen ist der Grafiktreiber, der einen Videoadapter und einen Bildschirm emuliert, um Bilder im gemeinsamen Speicher zu erzeugen, wodurch es möglich ist, entweder den gesamten Desktop oder direkt ein Anwendungsfenster im Fenster des Hostsystems anzuzeigen. Im Rahmen der Analyse der Treiberfunktionalität haben wir den Code für die Erstellung in einer Linux-Umgebung angepasst und ein Debugging-Schema zwischen zwei Windows-Gastsystemen entwickelt. In der Phase des Cross-Builds führten wir mehrere Vereinfachungen durch, hauptsächlich in Bezug auf die "stille" Installation der Tools, und beseitigten die lästige Leistungsdegradation bei längerer Nutzung in der VM. Die Ergebnisse unserer Arbeit haben wir in einem separaten das Repository, und haben damit kurzzeitig inspiriert den leitenden Entwickler von Qubes.

Der kritischste Schritt in Bezug auf die Stabilität des Gastsystems ist der Start von Windows, hier kann man den bekannten blauen Bildschirm sehen (oder ihn sogar nicht sehen). Für die meisten identifizierten Fehler fanden sich verschiedene Umgehungsmöglichkeiten - Verzicht auf Xen-Treiber für Blockgeräte, Deaktivierung der Speicherbalancierung in der VM, Fixierung der Netzwerkeinstellungen und Minimierung der Kernanzahl. Unser Build der Guest Tools wird auf vollständig aktualisiertem Windows 7 und Windows 10 installiert und funktioniert (mit Ausnahme von qvideo).

Beim Übergang von einer physischen Umgebung in eine virtuelle Umgebung tritt das Problem 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 gespeichert sind. Für eine korrekte Aktivierung muss einer der ACPI-Abschnitte des Host-Systems vollständig in das Gästesystem übertragen werden (SLIC-Tabelle) und einige andere müssen geringfügig angepasst werden, um den Hersteller anzugeben. Xen ermöglicht die Anpassung des Inhalts zusätzlicher ACPI-Tabellen, jedoch ohne Modifizierung der Haupttabellen. Eine Lösung wurde durch einen Patch aus einem ähnlichen Projekt, OpenXT, unterstützt, der für Qubes angepasst wurde. Diese Korrekturen erwiesen sich als nützlich nicht nur für uns und wurden in das Hauptrepository von Qubes und die Bibliothek Libvirt übertragen.

Offensichtliche Nachteile der Windows-Integrationsmittel sind das Fehlen von Unterstützung für Audio, USB-Geräte sowie die Komplexität bei der Arbeit mit Medien, da keine Hardwareunterstützung für die GPU vorhanden ist. Dennoch hindern diese Punkte nicht die Nutzung von VMs für die Bearbeitung von Büro-Dokumenten und beeinträchtigen nicht das Ausführen spezifischer Unternehmensanwendungen.

Die Anforderung, nach dem Erstellen einer Windows-VM in den Offline-Modus oder in einen eingeschränkten Netzwerkmodus zu wechseln, wurde durch die Erstellung entsprechender Konfigurationen für die Anwendungs-VMs erfüllt. Die Möglichkeit, abnehmbares Laufwerk selektiv anzuschließen, wurde ebenfalls durch die Standardmittel des Betriebssystems gelöst – beim Anschluss sind sie in der System-VM sys-usb verfügbar, von wo sie an die benötigte VM "durchgereicht" werden können. Der Desktop des Benutzers sieht ungefähr so aus.

Die Verwendung von QubesOS für die Arbeit mit Windows 7.

Die endgültige Version des Systems wurde von den Benutzern positiv (soweit es eine so komplexe Lösung zulässt) aufgenommen, und die integrierten Mittel des Systems ermöglichten die Erweiterung der Anwendung auf den mobilen Arbeitsplatz des Benutzers mit Zugriff über VPN.

Zum Abschluss

Virtualisierung im Allgemeinen ermöglicht es, die Risiken der Verwendung von nicht unterstützten Windows-Systemen zu reduzieren – sie zwingt nicht zur Gewährleistung der Kompatibilität mit neuer Hardware, ermöglicht es, den Zugang zum System über das Netzwerk oder mittels angeschlossener Geräte auszuschließen oder zu kontrollieren, und schafft eine Umgebung für den einmaligen Start.

Das OS Qubes, das auf der Idee der Isolation durch Virtualisierung basiert, hilft, diese und andere Mechanismen zur Gewährleistung der Sicherheit zu nutzen. Viele sehen in Qubes in erster Linie den Anspruch auf Anonymität, doch ist es ein nützliches System sowohl für Ingenieure, die häufig Projekte, Infrastrukturen und Zugangsgeheimnisse kombinieren, als auch für Sicherheitsexperten. Die Trennung von Anwendungen, Daten und die Formalisierung ihrer Interaktion sind erste Schritte zur Bedrohungsanalyse und Systemdesign. Eine solche Trennung hilft, Informationen zu strukturieren und die Wahrscheinlichkeit von Fehlern aufgrund menschlicher Faktoren – wie Eile, Müdigkeit usw. – zu verringern.

Derzeit liegt der Schwerpunkt der Entwicklung auf der Erweiterung der Funktionalität von Linux-Umgebungen. Die Version 4.1, die auf Fedora 31 basieren wird und aktuelle Versionen der Schlüsselkomponenten Xen und Libvirt enthalten wird, steht kurz vor der Veröffentlichung. Es ist erwähnenswert, dass Qubes von Fachleuten im Bereich der Informationssicherheit entwickelt wird, die stets schnell Updates herausgeben, wenn neue Bedrohungen oder Fehler entdeckt werden.

Nachwort

Eines der von uns entwickelten experimentellen Features ermöglicht es, VM mit Unterstützung für den Gastzugang zu GPU auf der Basis der Intel GVT-g-Technologie zu erstellen, was die Nutzung der Möglichkeiten des Grafikadapters erlaubt und das Anwendungsspektrum des Systems erheblich erweitert. Zum Zeitpunkt der Erstellung dieses Artikels funktioniert diese Funktionalität für die Testversionen von Qubes 4.1 und ist verfügbar unter github.

Quelle: habr.com

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster