Blog von Richard Paul Bäck

Qubes als Alltagsdistro III - Der Feinschliff

2017-07-11

Nach den letzten zwei Blog-Einträgen solltest du, lieber Leser, bereits ein lauffähiges Qubes-System ohne etwaiger unfreier Software haben. Nun kommt aber der wahrscheinlich wichtigste Schritt: die Bedienung!

Split-GPG

Qubes bietet eine eigene Funktionalität namens "Split-GPG" an. Diese ermöglicht es auf einer speziellen VM alle seine GPG-Daten zu hinterlegen, um diese dann über das Netzwerk abfragen/nutzen zu können. Sollte eine andere VM dann mit Split-GPG etwas ver- oder entschlüsseln wollen, dann muss der Benutzer erst seine Zustimmung für den Zugriff von dieser VM geben. Diese Zustimmung gilt dann für eine begrenzte Zeit (standardmäßig 5 Minuten) Eine genauere Beschreibung, sowie die englische Installations-Anleitung, ist hier erhältlich.

Installation

Um GPG-Split zu installieren, muss in dom0 folgendes Paket installiert werden:

sudo qubes-dom0-update qubes-gpg-split-dom0 

Danach sollten auf der Server-VM, sowie auf Klienten-VMs das Paket qubes-gpg-split installiert werden:

sudo yum install qubes-gpg-split 

Server-VM

Auf der Server-VM muss eigentlich nichts mehr gemacht werden, außer sicher zu stellen, dass eine GPG-Konfiguration existiert. Um eine leere Konfiguration automatisch zu generieren kann auf der Server-VM folgendes Kommando abgesetzt werden:

gpg -K 

Sollte gpg nicht funktionieren, dann einfach gpg2 ausprobieren. Fedora ist da etwas speziell...

Wenn man die erlaubte Zeit für den Zugriff auf die Server-VM ändern möchte, dann muss die Umgebungsvariable QUBES_GPG_AUTOACCEPT angepasst werden. Diese beinhaltet die Zugriffszeit in Sekunden. Im Terminal kann sie folgendermaßen dauerhaft gesetzt werden:

echo "export QUBES_GPG_AUTOACCEPT=600" >> $HOME/.bash_profile 

Klient-VM

Bevor man die Split-GPG-Funktionalität verwenden kann, muss zuerst einmal der Name der Server-VM bekannt gegeben werden. Dies erfolgt über die Umgebungsvariable QUBES_GPG_DOMAIN. Diese kann im Terminal folgendermaßen dauerhaft gesetzt werden (Achtung: zur sofortigen Verwendung muss das Terminal bzw. das Programm, das Split-GPG verwenden soll, einmalig neu gestartet werden):

echo "export QUBES_GPG_DOMAIN=Server-VM" >> $HOME/.bash_profile 

Wenn die Variable gesetzt ist, dann kann man ab sofort im Terminal das Programm qubes-gpg-client-wrapper anstatt gpg verwenden um Dateien zu ver-/entschlüsseln oder zu signieren. Leider funktionieren einige Kommandos nicht, wie z.B. --recv-keys. Aber es ist möglich einen Schlüssel über das lokale GPG einer Klienten-VM herunterzuladen und dann durch den Wrapper auf die Server-VM zu importieren. Dazu können die folgenden Kommandos verwendet werden:

gpg2 --recv-key 8B91951CBB1BF70A # Schlüssel laden  
gpg2 --export 8B91951CBB1BF70A > key.asc # Schlüssel zu Datei exportieren  
qubes-gpg-client-wrapper --import key.asc # Importieren des Schlüssels auf den Server 

Thunderbird/Enigmail und Split-GPG

Um diese tolle Funktionalität auch in Thunderbird nutzen zu können muss man nur auf Enigmail > Einstellungen in der Menüleiste gehen. Dort /usr/bin/qubes-gpg-client-wrapper im Feld zum Überschreiben des GPG-Programms eingeben.

Split-GPG in anderen Programmen verwenden

Leider hab ich es bis jetzt nicht geschafft Split-GPG in anderen Programmen zu verwenden. Z.B. war ich lange Zeit ein KMail-Benutzer und wollte auch auf Qubes nicht darauf verzichten. War prinzipiell auch nicht nötig, aber der Export-/Import-Wahnsinn von KMail, sowie die (für mich) Unmöglichkeit Split-GPG zu verwenden, hat mich auch zu Thunderbird getrieben.

Eine Idee hab ich aber für andere Programme: es ist möglich in Bash) Aliasse zu definieren. Somit kann man hinter gpg das Kommando qubes-gpg-client-wrapper hinterlegen. Dies ist folgendermaßen im Terminal möglich:

echo alias '"gpg"="qubes-gpg-client-wrapper"' >> $HOME/.bash_profile 

Installation von Tor als Proxy-VM

Es ist möglich den gesamten Verkehr ins Internet über eine eigene Proxy-VM zu routen, die wiederum seinen gesamten Eingangsverkehr über das Tor-Netzwerk ins Internet befördert. Das bietet eine Menge Chancen, denn wer mit Tor ins Internet geht, der steht mir hoher Wahrscheinlichkeit bald auf einer Liste, da Internet-Anbieter sehen können, wenn jemand von einem Anschluss mit Tor ins Internet geht. Daher ist es ratsam gleich den ganzen Verkehr über Tor zu routen um den Anbieter nicht genügend Daten zu liefern um ihn darauf schließen lassen zu können, für welche Dinge man Tor benutzt und für welche nicht.

Installation vom Whonix-Gateway

Whonix-Gateway stellt eine fertige Vorlage für Tor-Proxy-VMs dar. Sie kann inzwischen bei der Qubes-Installation mit installiert werden. Ansonsten kann man sie über ein Terminal in dom0 so nach installieren:

sudo qubes-dom0-update --enablerepo=qubes-templates-community qubes-template-whonix-gw qubes-template-whonix-ws 

Danach nur mehr eine Proxy-VM auf Basis von whonix-gw erstellen. Zusätzlich kann auch auf Basis von whonix-ws das gehärtete Whonix-Workstation Betriebssystem verwendet werden, welches z.B. zusätzlich noch den TorBrowser bereitstellt.

Eine weitere Gefahr vermeiden

USB-Geräte bergen eine unglaubliche Gefahr. Manche Betriebssysteme laden automatisch verschiedene Dateien davon, was dazu führen könnte, dass Viren und Trojaner ins System gelangen. Dies hat z.B. der Wurm der US-Regierung, bekannt als Stuxnet, ausgenutzt um sich fort zu pflanzen. Zur Erinnerung: Stuxnet wurde benutzt um iranische Uran-Anreichungszentrifugen zu zerstören.

Desweiteren hat ein angestecktes USB-Gerät Zugriff auf den USB (= universaler serieller Bus) und kann somit auch die Ein- und Ausgaben von anderen USB-Geräten belauschen.

Die Verwendung von sys-usb

Qubes bietet für dieses Problem eine einfache Abhilfe: sys-usb. Diese VM ist mit allen USB-Controllern verbunden. Somit wird maximal sys-usb infiziert, wenn ein USB-Gerät eingesteckt wird.

Die Installation von sys-usb kann durch ein Häckchen während der Qubes-Installation automatisch vorgenommen werden. Andernfalls kann man es auch nachinstallieren, in dem man in ein Terminal in dom0 folgende Befehle eingibt:

qubesctl top.enable qvm.sys-usb  
qubesctl state.highstate 

Sollte jetzt keine neue VM mit dem Namen sys-usb vorhanden sein, dann muss man diese manuell erstellen. Dazu einfach eine neue VM namens sys-usb anlegen und im Geräte-Tab alle Geräte mit dem Namen "USB" zuweisen. Sollte der Rechner auch ein Kartenlesegerät besitzen, dann sollte man das auch hinzufügen. Abschließend nur mehr die VM automatisch beim Systemstart mitstarten lassen. Andernfalls muss jedesmal zuerst die VM gestartet werden um USB-Geräte nutzen zu können.

Das System beim Systemstart vor USB-Geräten schützen

Beim Systemstart hört Qubes standardmäßig kurz am USB mit. Dies kann als Angriffsfläche dienen. Um dieses kurze Mithören zu vermeiden, muss die GRUB-Konfiguration angepasst werden. Dafür muss die Datei /etc/default/grub editiert werden. Einfach ein Terminal in dom0 öffnen und folgendes eingeben:

sudo nano /etc/default/grub 

Es wird der nano) Texteditor aufgerufen. Jetzt mit den Pfeiltasten zum Ende der Zeile navigieren, die mit GRUB_CMDLINE_LINUX beginnt. Dort dann mit einem Leerzeichen vom Rest der Zeile getrennt rd.qubes.hide_all_usb anhängen. Danach speichern mit Strg + x und das Speichern bestätigen mit y und Enter . Zurück am Kommandoprompt fehlt nur noch der Befehl zum Ändern der derzeitig verwendeten GRUB-Konfiguration. Also folgendes eingeben:

grub2-mkconfig -o /boot/grub2/grub.cfg 

USB-Speichermedien in anderen VMs verwenden

Ich rate sehr stark davon ab dies zu tun, da es das Konzept von sys-usb wirkungslos macht. Außer natürlich es handelt sich um ein USB-Gerät, von dem definitiv keine Gefahr ausgeht.

Wenn nun ein USB-Speichermedium eingesteckt wird, dann bekommt man (in XFCE) rechts oben die Meldung, dass einige Partitionen in sys-usb eingehängt wurden. Um dieses Speichermedium einer anderen VM zuzuweisen muss der Qubes-Manager geöffnet werden. Dort dann einfach mit Rechtsklick die Ziel VM auswählen und im Kontextmenü "Attach/Detach block devices" das gewünschte Medium auswählen.

Vorschlag zur Verwaltung der VMs

Um die Unzahl an Anwendungen richtig zu gruppieren, gebe ich die nachfolgenden Tipps, wie man seine VMs strukturieren kann.

Aufbau

Zuerst sollte man einmal in sich gehen und überlegen, welche Gruppen von Programmen man so braucht. Bei den meisten Menschen läuft es wohl auf folgende hinaus:

  • Ein Browser (z.B. Firefox)
  • Ein Mail-Programm (z.B. Thunderbird)
  • Dateiverwaltung (z.B. Nautilus)
  • Ein Sofortnachrichten-Programm (z.B. Pidgin oder Riot)
  • Büroprogramme (z.B. Libreoffice)
  • Bildbearbeitungs- und Betrachtungsprogramme (z.B. GIMP, Krita, Kolourpaint, Eye of GNOME ...)

Insbesondere der Browser ist hier aber ein gefährliches Programm, dass besonders isoliert werden sollte. Daher schlage ich folgenden VM-Aufbau vor (sollten Vorlagen unbekannt sein, bitte meinen vorrigen Blog-Eintrag lesen):

  • sys-net - basiert auf "fedora-25-full" oder wenn man eine unfreie WLAN-Karte benutzen muss, dann "fedora-23" bzw. "fedora-25" (wenn man "fedora-23" aktualisiert hat)
  • sys-firewall - basiert auf "fedora-25-minimal"
  • sys-whonix - basiert auf "whonix-gw" und ist die Standard Netzwerk-VM, sowie UpdateVM und ClockVM. Somit bezieht dom0 Aktualisierungen und die Zeit auch über Tor.
  • sys-usb - basiert auf "fedora-25-full" und hat keine Internetanbindung
  • vault - basiert auf "fedora-25-full" und hat keine Internetanbindung
  • personal - basiert auf "fedora-25-full"
  • personal-browsing - basiert auf "fedora-25-full" und verwendet als einziger sys-firewall als Netzwerk-VM.
  • anon-browsing - basiert auf "fedora-25-full"

Es folgen nun von den bis lang unbekannten VMs eine genauere Beschreibung.

VM: vault

In der vault (zu Deutsch: Tresor) VM werden alle Passwörter gespeichert. Es sollte auch die Server-VM von Split-GPG sein. Ich empfehle das Programm KeepassX um die Passwörter zu speichern. Insbesondere, da es einen Passwortgenerator eingebaut hat.

VM: personal

In der personal VM können alle persönlichen Daten gespeichert werden. Fotos, Dokumente, Musik, E-Mails sollten hier platziert werden. Auch Thunderbird und Sofortnachrichten-Programme können hier abgelegt werden. Was ich jedoch nicht empfehle ist Büro- und Bildsoftware hier zu installieren. Ich empfehle Dokumente und Bilder mit Wegwerf-VMs zu betrachten/bearbeiten. Eine andere Möglichkeit wäre z.B. PDFs durch Qubes in vertrauenswürdige PDFs zu konvertieren. Dies hat aber einen riesigen Nachteil: Qubes fotografiert unvertrauenswürdige PDFs ab und erstellt dann mit diesen Bildern die vertrauenswürdigen PDFs. Dies führt zu einem enormen Speicherverbrauch (10 MB für ein paar Seiten) und zusätzlich zum Verlust der Möglichkeit Text heraus zu kopieren!

VM: personal-browsing

Diese VM dient nur für einen Zweck: mit den Browser Seiten betrachten die eine Identifikation verlangen. Denn wenn man sich identifiziert, dann bringt einem Tor ohnehin nichts mehr!

Firefox empfehle ich folgendermaßen zu konfigurieren und zu verwenden:

  • NoScript installieren und scharf schalten (Alle JavaScript-Dateien blockieren), danach selbst ermitteln und freischalten, wem man vertraut
  • HTTPS Everywhere installieren
  • Unter Einstellungen > Privatsphäre alle Unterpunkte von Immer im privaten Modus surfen auswählen, den Überpunkt aber selbst nicht.
  • Am besten immer nur eine Webseite gleichzeitig betrachten. Wenn man zu einer anderen Webseite wechseln will, am besten den Firefox vorher schließen. Dann werden die Cookies gelöscht und dann kann z.B. Facebook nicht mehr die neu betrachteten Seiten nachverfolgen.

VM: anon-browsing

Diese VM dient auch nur zum Surfen des Webs, aber anonym, mit Tor und ohne Cookies!

Firefox empfehle ich folgendermaßen zu konfigurieren und zu verwenden:

  • NoScript installieren und scharf schalten (Alle JavaScript-Dateien blockieren), danach selbst ermitteln und freischalten, wem man vertraut
  • HTTPS Everywhere installieren
  • Unter Einstellungen > Privatsphäre alle Unterpunkte von Immer im privaten Modus surfen auswählen, außer den Überpunkt selbst und "Cookies von Seiten akzeptieren".
  • Cookie Controller installieren.
  • Es werden nun alle JavaScript-Dateien und Cookies geblockt. In Verbindung mit Tor bedeutet das viele Captchas eingeben. Dabei ist aber wichtig zu wissen, dass für Captchas meist kein JavaScript benötigt wird. Dafür muss man für Captcha gesicherte Seiten mindestens temporär die Cookies von deren Domäne erlauben. Dies kann über den Cookie Controller erledigt werden.
  • Wenn man sehr viele Seiten besucht hat, sollte man den Firefox neustarten um einmal alle Cookies loszuwerden.
  • Wenn man Tor in sys-whonix neustartet sollte man auf jeden Fall vorher den Firefox von anon-browsing schließen. Ansonsten verraten die Cookies, dass die Person hinter der neuen IP die gleiche ist, wie hinter einer anderen und somit könnte wieder ein Muster erstellt werden.

Schluss

Ich hoffe ich konnte mit meinen 3 Beiträgen bis jetzt einen guten Einblick und Start in die Welt von Qubes geben. Sollten Fragen oder Anregungen auftreten würde ich mich über eine E-Mail oder eine Sofort-Nachricht sehr freuen!

Aktualisierungen

2017-07-12

Achtung: anon-browsing in der oben genannten Form hinterlässt durch die Sondereinstellungen einen mehr-oder-weniger zuordenbaren Fingerabdruck. Wie man in die Menge der Tor-Benutzer mit dem TorBrowser unter taucht beschreibt dieser Blog-Eintrag.

(Danke an Enrico für den Hinweis)


Zeiten für die direkte Paketabgabe
Mo. - Sa.: 8:00 - 18:00
Zeiten für den telefonischen Kontakt
Mo. - Sa.: 7:00 - 20:00