Qubes Windows Tools Seamless Mode zurückbringen: Difference between revisions
(19 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[File:win11_seamless_mode.png|500px|right|thumb|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 Windows Tools Seamless Mode zurückbringen = |
|||
⚫ | [https://www.qubes-os.org/intro/ 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. |
||
== Einführung == |
|||
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 [https://www.qubes-os.org/doc/templates/windows/qubes-windows-tools-4-1/ 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. |
||
[https://www.qubes-os.org/attachment/doc/r4.0-snapshot12.png Screenshot von QubesOS mit zwei offenen Anwendungsfenstern verschiedener Qubes.] |
|||
== Ansatz == |
|||
⚫ | |||
Die [https://www.qubes-os.org/doc/templates/windows/qubes-windows-tools-4-1/ 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 [https://de.wikipedia.org/wiki/Remote_Desktop_Protocol 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. |
|||
Links: |
|||
* [https://www.qubes-os.org/doc/templates/windows/qubes-windows-tools-4-1/ Qubes Windows Tools] |
|||
== Windows 11 Qube installieren == |
== Windows 11 Qube installieren == |
||
# Windows 11 Installer starten |
# Windows 11 Installer starten |
||
## Standalone-Qube ''win11'' mit mindestens 4GB Arbeitsspeicher und 64GB Massenspeicher erstellen, zunächst ohne Netzwerkzugriff (so brauchen wir später bei der Installation keinen Microsoft-Account erstellen) |
## 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) |
||
## Windows 11 in einem geeigneten Qube [https://www.microsoft.com/de-de/software-download/windows11 herunterladen] |
## Windows 11 in einem geeigneten Qube [https://www.microsoft.com/de-de/software-download/windows11 herunterladen] |
||
## In den Einstellungen von ''win11'' unter ''Advanced'' auf ''Boot qube from CD-ROM'' klicken und die heruntergeladene ISO-Datei auswählen |
## In den Einstellungen von ''win11'' unter ''Advanced'' auf ''Boot qube from CD-ROM'' klicken und die heruntergeladene ISO-Datei auswählen |
||
Line 26: | Line 25: | ||
## Registry Editor und Kommandozeile schließen und mit der Installation fortfahren |
## Registry Editor und Kommandozeile schließen und mit der Installation fortfahren |
||
# Wichtig während der Installation: Windows 11 Pro auswählen (Windows 11 Home unterstützt nicht RDP!) |
# Wichtig während der Installation: Windows 11 Pro auswählen (Windows 11 Home unterstützt nicht RDP!) |
||
# 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''!) |
|||
# 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 == |
|||
# 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 |
|||
# ''win11-gui'' und ''win11'' mit dem selben Netzwerk-Qube verbinden (z.B. ''sys-firewall'') |
|||
# In den Windows-Einstellungen RDP aktivieren |
|||
# Im Netzwerk-Qube (z.B. ''sys-firewall'') folgenden Befehl ausführen, um den Zugriff von ''win11-gui'' auf ''win11'' über RDP zu erlauben: <syntaxhighlight lang="bash">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</syntaxhighlight> |
|||
# Ein Programm wie ''xfreerdp'' in ''win11-gui'' ausführen, um die Verbindung zu testen |
|||
# 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 == |
|||
# In Windows mit Win+R und ''regedit'' den Registry Editor öffnen |
|||
# Unter <syntaxhighlight lang="reg" inline>HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services</syntaxhighlight> einen DWORD-Wert ''fAllowUnlistedRemotePrograms'' anlegen und auf 1 setzen |
|||
# Mit FreeRDP können aus ''win11-gui'' nun wie folgt Windows-Programme (z. B. explorer.exe) in eigenen Fenstern gestartet werden: <syntaxhighlight lang="bash">xfreerdp /u:"Nutzername" /p:"Passwort" /v:<IP-Adresse von win11> /app:program:explorer.exe</syntaxhighlight> |
|||
== Optional: Anwendungslauncher anlegen == |
|||
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. |
|||
<syntaxhighlight lang="ini"> |
|||
[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 |
|||
</syntaxhighlight> |
Latest revision as of 10:53, 25 October 2024
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
- Windows 11 Installer starten
- 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)
- Windows 11 in einem geeigneten Qube herunterladen
- In den Einstellungen von win11 unter Advanced auf Boot qube from CD-ROM klicken und die heruntergeladene ISO-Datei auswählen
- 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)
- Sobald der Installer gestartet ist, mit Shift+F10 eine Kommandozeile öffnen und regedit ausführen
- Unter HKEY_LOCAL_MACHINE\SYSTEM\Setup einen neuen Schlüssel mit dem Namen LabConfig erstellen
- In diesem Schlüssel drei DWORD-Werte anlegen: BypassTPMCheck, BypassSecureBootCheck und BypassRAMCheck und jeweils auf 1 setzen
- Registry Editor und Kommandozeile schließen und mit der Installation fortfahren
- Wichtig während der Installation: Windows 11 Pro auswählen (Windows 11 Home unterstützt nicht RDP!)
- 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!)
- 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
- 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
- win11-gui und win11 mit dem selben Netzwerk-Qube verbinden (z.B. sys-firewall)
- In den Windows-Einstellungen RDP aktivieren
- 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
- Ein Programm wie xfreerdp in win11-gui ausführen, um die Verbindung zu testen
- 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
- In Windows mit Win+R und regedit den Registry Editor öffnen
- Unter
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
einen DWORD-Wert fAllowUnlistedRemotePrograms anlegen und auf 1 setzen - 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
Optional: Anwendungslauncher anlegen
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