Qubes Windows Tools Seamless Mode zurückbringen

From
Jump to navigation Jump to search
Ein Screenshot von Qubes OS mit mehreren Anwendungsfenster verschiedener virtueller Maschinen, geöffnet in einer gemeinsamen Desktopumgebung ("Seamless Mode"). Der Screenshot zeigt ein Linux-Terminal sowie die Programme explorer.exe und notepad.exe aus Windows 11.

Qubes OS ist ein Betriebssystem, das Sicherheit durch Isolierung schafft. Verschiedene Kontexte können mittels Virtualisierung über den Typ-1-Hypervisor Xen voneinander isoliert werden. Nutzer*innen erstellen verschiedene "Qubes" (virtuelle Maschinen) für die jeweiligen Kontexte (z. B. "Persönlich", "Arbeit", "Passwortspeicher", "Webbrowsing" etc.). Wenn eine Nutzer*in dann zum Beispiel im "Webbrowsing"-Qube auf einen verdächtigen Link klickt und den Qube mit Schadsoftware infiziert, bleiben die Daten in den Qubes "Arbeit" oder "Persönlich" sicher, solange die Angreifer*in keinen VM-Escape im Xen Hypervisor gefunden hat.

Das besondere an Qubes OS: Es liefert vielfältige Werkzeuge zur Inter-VM-Kommunikation mit. Zum Beispiel kann durch spezielle Tastenkombinationen der Inhalt der Zwischenablage eines Qubes explizit an die Zwischenablage eines anderen Qubes übertragen werden. Auch Dateien können zwischen Qubes geteilt werden.

Ein praktisches Feature von Qubes OS ist der Seamless Mode. Mit diesem Feature können die Anwendungsfenster der verschiedenen Qubes gemeinsam in einer grafischen Nutzeroberfläche benutzt werden. Nutzer*innen können dafür Farben zur Unterscheidung der Qubes festlegen können (z.B. Webbrowsing=rot, Passwortspeicher=schwarz etc.). Diese Farben benutzt Qubes OS dann als Farbe für die Fensterrahmen. Die Desktopumgebung läuft dafür in einer gesnoderten GUI VM, welche Kontrolle über die Farbe der Fensterrahmen hat. Die GUI VM ist vom Netzwerk und der USB-Schnittstelle getrennt und in ihr wird abseits der Desktopumgebung keine weitere Software benutzt. Dieses Feature namens "Seamless Mode" funktioniert aktuell jedoch nur mit Linux-Qubes.

Für Windows-Qubes gibt es die Qubes Windows Tools, die bis zu Windows 7 auch den Seamless Mode anboten. Seit Windows 8 funktioniert das jedoch nicht mehr. Das hier beschriebene Projekt bringt den Seamless Mode für aktuelle Windows-Versionen (10 oder 11) zurück.

Ansatz

Die Qubes Windows Tools implementierten für den Seamless Mode einen einen eigenen Grafiktreiber, der jedoch nur unter Windows 7 funktioniert. Statt den Treiber für aktuellere Windows-Versionen anzupassen, wählen wir einen einfacheren Ansatz: Das Remote Desktop Protocol (RDP) unterstützt auch den Fernzugriff auf einzelne Anwendungsfenster. Da die Netzwerkkommunikation zwischen Linux- und Windows Qubes einwandfrei funktioniert, können wir also über einen Linux Qube per RDP auf die Windows-Anwendungsfenster zugreifen. Da Linux-Qubes den Seamless Mode unterstützen, hätten wir somit auch einen Seamless Mode für Windows-Anwendungen erreicht.

Windows 11 Qube installieren

  1. Windows 11 Installer starten
    1. Standalone-Qube win11 mit mindestens 4GB Arbeitsspeicher (besser 8 GB) und 64GB Massenspeicher erstellen, zunächst ohne Netzwerkzugriff (so brauchen wir später bei der Installation keinen Microsoft-Account erstellen)
    2. Windows 11 in einem geeigneten Qube herunterladen
    3. In den Einstellungen von win11 unter Advanced auf Boot qube from CD-ROM klicken und die heruntergeladene ISO-Datei auswählen
  2. TPM und Secure Boot Checks umgehen (sonst bricht die Installation mit der Fehlermeldung ab, dass Windows 11 auf dem Gerät nicht unterstützt sei)
    1. Sobald der Installer gestartet ist, mit Shift+F10 eine Kommandozeile öffnen und regedit ausführen
    2. Unter HKEY_LOCAL_MACHINE\SYSTEM\Setup einen neuen Schlüssel mit dem Namen LabConfig erstellen
    3. In diesem Schlüssel drei DWORD-Werte anlegen: BypassTPMCheck, BypassSecureBootCheck und BypassRAMCheck und jeweils auf 1 setzen
    4. Registry Editor und Kommandozeile schließen und mit der Installation fortfahren
  3. Wichtig während der Installation: Windows 11 Pro auswählen (Windows 11 Home unterstützt nicht RDP!)
  4. Die Installation benötigt mehrere Neustarts. Leider funktioniert das nicht automatisch, sondern der Qube fährt einfach herunter und muss dann manuell gestartet werden. Den Qube dafür normal starten (nicht über Boot qube from CD-ROM!)
  5. Gegen Ende der Installation möchte sich der Installer mit dem Netzwerk verbinden. Diesen Schritt können wir überspringen, indem wir wieder mit Shift+F10 eine Kommandozeile öffnen und dort OOBE\BYPASSNRO eingeben. Windows 11 startet sich dann ein letztes Mal neu. Danach erscheint im Installer die Option, um die Verbindung mit dem Netzwerk zu überspringen.

RDP-Verbindung zum Windows Qube herstellen

  1. Einen Linux-Qube win11-gui erstellen, dabei in den Firewall-Einstellungen des Qubes ausgehende Verbindungen auf die IP-Adresse von win11-gui und den Port 3389 beschränken
  2. win11-gui und win11 mit dem selben Netzwerk-Qube verbinden (z.B. sys-firewall)
  3. In den Windows-Einstellungen RDP aktivieren
  4. Im Netzwerk-Qube (z.B. sys-firewall) folgenden Befehl ausführen, um den Zugriff von win11-gui auf win11 über RDP zu erlauben:
    sudo nft add rule ip qubes custom-forward ip saddr <IP von win11-gui> ip daddr <IP von win11> tcp dport 3389 ct state new,established,related counter accept
  5. Ein Programm wie xfreerdp in win11-gui ausführen, um die Verbindung zu testen
  6. Wenn die Verbindung funktioniert, dann kann der eben erwähnte Befehl im Netzwerk-Qube in /rw/config/qubes-firewall-user-script geschrieben werden, damit er beim Neustart erhalten bleibt.

Seamless Mode mit FreeRDP

  1. In Windows mit Win+R und regedit den Registry Editor öffnen
  2. Unter HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services einen DWORD-Wert fAllowUnlistedRemotePrograms anlegen und auf 1 setzen
  3. Mit FreeRDP können aus win11-gui nun wie folgt Windows-Programme (z. B. explorer.exe) in eigenen Fenstern gestartet werden:
    xfreerdp /u:"Nutzername" /p:"Passwort" /v:<IP-Adresse von win11> /app:program:explorer.exe

Optionale Schönheitsverbesserungen

Statt xfreerdp manuell aus der Kommandozeile zu starten, können wir Anwendungslauncher erstellen, um die gewünschten Windows-Anwendungen bequem aus dem Startmenü öffnen zu können. Dafür legen wir unter ~/.local/share/applications/ Dateien mit der Endung .desktop an. Im folgenden ein Beispiel für den Windows-Dateimanager.

[Desktop Entry]
Name=Explorer
Exec=xfreerdp /u:"Nutzername" /p:"Passwort" /v:<IP-Adresse von win11> /app:program:explorer.exe
Icon=/pfad/zum/icon.png
Terminal=false
Type=Application