Bisq auf Qubes

8 Min. Lesedauer
Bisq auf Qubes

Für eine sichere Installation von Bisq bietet sich Qubes als Betriebssystem an. Es gibt dazu einige Anleitungen, u.a. auf dem Bisq-Wiki, im Whonix-Wiki und die Diskussion dazu im Whonix-Forum, aber trotzdem sind einige Hürden zu meistern, da diese Anleitungen nicht ganz auf dem neuesten Stand sind und/oder schlicht nicht funktionieren.

Die folgende Anleitung geht davon aus, dass der Leser mit der Linux-Shell und der Kommandozeile vertraut ist und ein grundlegendes Verständnis von Qubes hat, beispielsweise aus diesem Artikel. Die Beschreibung bezieht sich auf Qubes 4.1 sowie Bisq 1.9.12 mit dem Debian-Template debian-11 (die aktuellsten Releases Stand Ende Juli 2023).

Vor der Installation ist die Frage zu klären, welchen Weg man gehen will. Qubes bietet dazu eine Reihe von Freiheitsgraden, so dass die „richtige“ Wahl für den Qubes-Anfänger nicht leicht fällt, weil die Konsequenzen einer bestimmten Wahl zunächst nicht offensichtlich sind. Erschwerend kommt hinzu, dass die Qubes-Dokumentation zwar die technischen Unterschiede gut erklärt, aber kaum Entscheidungshilfen bietet. Daher folgt hier ein Exkurs, in dem diese Freiheitsgrade und ihre Vor- und Nachteile für bestimmte Anwendungsszenarien beschrieben werden, um den Hintergrund für die dann folgende Anleitung zu geben. Wer einfach eine Schritt-für-Schritt-Anleitung haben möchte, kann den nächsten Abschnitt auch ohne weiteres überspringen und direkt zum Abschnitt „Installation von Bisq“ gehen.

Exkurs: Installation von Applikationen auf Qubes

Beim Anlegen eines neuen Qubes (VM) im Qube-Manager muss eine von vier Möglichkeiten gewählt werden, für die es jeweils typische Anwendungsszenarien („Use Cases“) gibt. „Flüchtig“ (volatile) bedeutet hier, dass jegliche Änderungen (modifizierte oder neu hinzugefügte Dateien) durch einen Neustart des Qubes gelöscht werden, „persistente“ (dauerhafte) Daten bleiben nach einem Neustart erhalten.

  1. AppVM (flüchtiger Root-Verzeichnisbaum, nur /home, /rw und /usr/local sind persistent)
  2. StandaloneVM (vollständig persistent)
  3. TemplateVM (persistenter Root-Verzeichnisbaum, /home ist flüchtig)
  4. DisposableVM (vollständig flüchtig)

Jede dieser vier VM-Typen wird aus Templates (Vorlagen) erstellt, wie beispielsweise „fedora-36“, „debian-11“ oder „whonix-ws-16“.

AppVM

AppVMs nutzt man, um Anwendungen aus dem zugrundeliegenden Template auszuführen, ohne dass diese Anwendungen die Möglichkeit haben, weitere Anwendungen zu installieren oder auch ihre eigene Installation zu verändern (z.B. Updates). Eine Anwendung, die in einer AppVM laufen soll, muss daher in der Regel zuvor in deren Template installiert (oder auch aktualisiert) werden. Jede Änderung im Root-Verzeichnisbaum (außer /rw, /usr/local und /home) wird beim nächsten Start der AppVM durch die Inhalte des Templates überschrieben, die Änderungen sind somit nicht persistent (volatile root). Eine Anwendung kann in einer AppVM zwar installiert werden, ist aber beim nächsten Start der VM normalerweise wieder verschwunden. Der Vorteil besteht in der Sicherheit (Schadsoftware kann sich auch mit Root-Rechten nicht persistent installieren) und der einfachen Wartung (Updates, Upgrades und Patches müssen nur im Template vorgenommen werden und sind sofort in allen abgeleiteten AppVMs wirksam). Backups müssen nur für die persistenten Verzeichnisse vorgenommen werden und sind daher weniger voluminös.

StandaloneVM

Auch StandaloneVMs werden aus einem Template abgeleitet, aber im Gegensatz zu AppVMs sind sie vollständig persistent: Jede Änderung in einer StandaloneVM übersteht einen Neustart. Man kann somit Anwendungen in einer StandaloneVM ohne Einschränkungen installieren, verliert allerdings den Schutz des AppVM-Konzeptes  gegen Schadsoftware, da diese (genau wie erwünschte Anwendungen) auch den Neustart der VM „überlebt“. Zudem müssen alle StandaloneVMs separat gewartet werden (Upgrades und Patches), da diese durch ihre vollständige Persistenz keine Änderungen aus ihrem Template übernehmen. Alle Updates, Upgrades und Patches müssen somit für jede einzelne StandaloneVM separat vorgenommen werden, ein Backup muss jede StandaloneVM vollständig sichern. StandaloneVMs sollten daher nur sparsam und nicht als Regelfall eingesetzt werden, um den Wartungsaufwand und das Backup-Datenvolumen der Qubes-Installation in Grenzen zu halten.

TemplateVM

Eine TemplateVM ist das Gegenstück zur AppVM: Der Root-Verzeichnisbaum ist persistent, der /home-Baum jedoch nicht. In Qubes werden daher Anwendungen normalerweise in einer TemplateVM installiert und stehen damit automatisch in allen davon abgeleiteten AppVMs zur Verfügung (und natürlich auch in den danach daraus erstellten StandaloneVMs). Betriebssystem- und Applikationspatches werden nur in der jeweiligen TemplateVM vorgenommen und wirken automatisch auf alle davon abgeleiteten AppVMs.

DisposableVM

Diese „Wegwerf-VMs“ dienen in erster Linie für „riskante“ Aktivitäten, da sie vollständig volatil sind. Alle Anwendungen aus der zugrundeliegenden TemplateVM stehen zwar zur Verfügung, aber alle Daten werden beim Beenden der VM gelöscht. Für die produktive Nutzung einer Anwendung sind DisposableVMs daher nicht geeignet.

Welche Qube-Konfiguration für Bisq?

Wir haben vier Optionen:

  1. In eine Standard-TemplateVM (z.B. debian-11) installieren und Erstellung einer Bisq-AppVM.
  2. Wie 1.) aber eine neue, dedizierte TemplateVM erstellen (z.B. debian-11-bisq als „Klon“ von debian-11)
  3. StandaloneVM (bisq-standalone auf der Grundlage von debian-11)
  4. AppVM auf der Grundlage einer Standard-TemplateVM (z.B. debian-11), in der einige Verzeichnisse persistent gemacht werden

Für jede der vier Möglichkeiten können natürlich auch verschiedene Templates gewählt werden. Für Bisq gibt es ein .deb-Paket für Debian, somit kommt zunächst sowohl das Debian-Template als auch das Whonix-(Debian-)Template in Frage. Leider gibt es mit Whonix das Problem, dass sowohl Whonix als auch Bisq Tor-Verbindungen aufbauen, um mit der Außenwelt zu kommunizieren. Dies lässt sich zwar für abgehende Verbindungen lösen, aber leider bleibt das Problem, dass eingehende Verbindungen (die für das korrekte Funktionieren von Bisq unerlässlich sind) sich so nicht realisieren lassen: Der Tor-Onion-Service für Bisq müsste auf dem Whonix-Gateway-Qube (sys-whonix, basierend auf dem Template whonix-gw-16) eingerichtet werden, wohingegen Bisq auf dem Whonix-Workstation-Qube versucht, diesen Service einzurichten. Eingehende Verbindungen sind damit nicht möglich, die einschlägige Anleitung im Whonix-Wiki funktioniert zumindest mit dem aktuellen Qubes-Release 4.1.x nicht (siehe auch die Diskussion im Whonix-Forum).

Aus diesem Grund nutzen wir für die Installation eine AppVM auf Basis des Templates debian-11 (bullseye) von Qubes und die Standard-Netzanbindung über den Qube sys-firewall (das Template debian-12 (bookworm) ist, genau wie Qubes 4.2, Stand Ende Juli 2023 noch nicht released). Die Installation von Bisq erfolgt standardmäßig in /opt/bisq, also nicht wie Standardpakete in /usr/bin. Dies eröffnet jedoch die Möglichkeit, mit einem kleinen Trick Bisq in einer AppVM direkt persistent zu installieren: In Qubes besteht die Möglichkeit, zusätzlich zu /home, /rw und /usr/local/bin auch weitere Verzeichnisse einer AppVM persistent zu machen, die sogenannten „binding-dirs“, wie in der Qubes-Dokumentation beschrieben. Dies ist der Weg, der in der folgenden Anleitung eingeschlagen wird und auch von Bisq selbst empfohlen wird. Alternativ könnte Bisq natürlich auch in einer StandaloneVM oder in einem Template (debian-11 oder dediziert) installiert werden, beides ist ebenso möglich, führt jedoch zu einem etwas höheren Wartungsaufwand. Ein kleiner Schönheitsfehler: Durch die Installation in eine AppVM (statt TemplateVM oder StandaloneVM) taucht Bisq nicht in der Liste der in diesem Qube installierten Applikationen auf, so dass man Bisq nicht über das Q-Menü aufrufen kann. Wem das nicht gefällt, muss eine der beiden genannten Alternativen nutzen.

Installation von Bisq

Qube erstellen

Wir erstellen eine AppVM mit dem Qube-Manager und den Parametern gemäß folgendem Screenshot:

Erstellung des bisq-Qubes als AppVM

Durch den Haken bei „Launch settings after creation“ startet nach der Bestätigung durch „OK“ der Einstellungsdialog. Dort müssen folgende Einstellungen vorgenommen werden: Zunächst im Reiter „Basic“ 5GB Plattenplatz („Private Store max size“) für bisq reservieren

Einstellungen im Reiter "Basic" für den neuen Qube "bisq"

und dann im Reiter „Advanced“ den Haken bei „Include in memory balancing“ entfernen, dann 6000MB „Initial memory“ und 4 „VCPUS“ setzen. Alle anderen Einstellungen bleiben auf ihren voreingestellten Werten.

Einstellungen im Reiter "Advanced" für den neuen Qube "bisq"

Damit sind die Grundeinstellungen erledigt. Wir starten den Qube, indem wir über das Q-Menü beim Qube „bisq“ die Applikation „Terminal“ aufrufen, wo die weitere Konfiguration stattfindet.

Mit den folgenden Kommondos legen wir die persistenten Verzeichnisse („Binding Dirs“) für die AppVM an:

sudo mkdir -p /rw/bind-dirs/opt/bisq
sudo mkdir -p /rw/bind-dirs/usr/share/desktop-directories

Im ersten Verzeichnis wird später Bisq installiert, das zweite ist ein Workaround, um einen Fehler bei der Installation zu vermeiden und hat ansonsten keine Bedeutung.

Im nächsten Schritt werden die persistenten Verzeichnisse konfiguriert. Dazu legen wir zunächst das Verzeichnis für die Konfigurationsdatei an

sudo mkdir -p /rw/config/qubes-bind-dirs.d

und erstellen dann in diesem Verzeichnis eine Datei (z.B. mit dem Editor „nano“),

sudo nano /rw/config/qubes-bind-dirs.d/50_user.conf

die wir mit folgendem Inhalt (genau so übernehmen!) füllen:

binds+=(  '/opt/bisq'  )
binds+=(  '/usr/share/desktop-directories'  )

Damit wird der (normalerweise flüchtige) Pfad /opt/bisq auf das (persistente) Verzeichnis /rw/opt/bisq abgebildet und übersteht auf diese Weise den Neustart der AppVM.

Nachdem dies erledigt ist, machen wir als Vorbereitung für die eigentliche Installation einen Restart unseres Qubes mit dem Qube-Manager.

Download, Verifikation und Installation

Zunächst von der Bisq-Downloadseite das Debian-Package (aktuell: Bisq-64bit-1.9.12.deb) und dessen PGP-Signatur (aktuell: Bisq-64bit-1.9.12.deb.asc) herunterladen. Das geht am einfachsten, indem wir die Downloadseite mit Firefox aus dem Qube „bisq“ öffnen und die beiden Dateien über den Browser herunterladen. Zur Verifikation der Signatur müssen wir den Public Key des Unterzeichners (aktuell: Alejandro Garcia) in GPG importieren, dazu öffnen wir ein Terminalfenster des Qubes „bisq“ und geben folgendes ein:

curl https://bisq.network/pubkey/E222AA02.asc | gpg --import

Danach können wir die Signatur des .deb-Packages prüfen (vorher in das Verzeichnis wechseln, in dem die heruntergeladenen Dateien abgelegt sind):

gpg --digest-algo SHA256 --verify Bisq-64bit-1.9.12.deb.asc

Wenn irgendetwas anderes als „Good signature from Alejandro Garcia“ gemeldet wird, auf keinen Fall mit der Installation fortfahren, sondern unbedingt der Ursache auf den Grund gehen (z.B. durch eine Supportanfrage im offiziellen Matrix-Raum oder auch dem Bisq-Telegram-Kanal)! Die Warnung „This key is not certified …“ können wir hingegen ignorieren; sie rührt lediglich daher, dass wir den heruntergeladenen Schlüssel nicht explizit als „vertrauenswürdig“ gekennzeichnet haben.

Damit können wir das Paket installieren

sudo dpkg -i Bisq-64bit-1.9.12.deb

und nach Abschluss der Installation von der Kommandozeile mit

/opt/bisq/bin/Bisq

starten. Wer Bisq nicht immer über die Kommandozeile aus dem Terminal heraus starten will, kann entweder einen „Launcher“ (Desktop-Shortcut) konfigurieren oder eine Tastenkombination für den Start von Bisq definieren. Die folgenden Schritte sind daher optional und dienen nur der Bequemlichkeit.

Einen Launcher erstellen wir mit Rechtsklick auf dem Desktop und wählen im Kontextmenü „Create Launcher ...“:

Desktop Shortcut für Bisq

Beim ersten Aufruf erscheint die folgende Warnung, wir wählen hier „Mark Executable“, denn als die Ersteller können wir diesem Programm natürlich vertrauen. Künftig können wir dann Bisq durch Doppelklick auf diesen „Launcher“ starten.

Warnung "Untrusted application launcher"

Stattdessen (oder auch zusätzlich) können wir eine Tastenkombination für den Start von Bisq definieren. Dazu rufen wir im  Q-Menü die „System Tools“ und dort den Reiter „Application Shortcuts“ unter „Keyboard“ auf:

Q-Menu > System Tools > Keyboard, "Application Shortcuts"

Mit  „Add“ können wir einen neues Kürzel hinzufügen. Zunächst müssen wir das auszuführende Kommando eingeben

"Shortcut Command" für Bisq

und nach der Bestätigung mit „OK“ können wir die gewünschte Tastenkombination drücken, beispielsweise CTRL-ALT-B,

dann können wir künftig Bisq (auch) mit dieser Tastenkombination starten.

Fazit

Qubes ist durch sein Sicherheitskonzept eine sehr gute Plattform für Bisq (und andere sicherheitskritische Anwendungen wie Hot Wallets), wenn die vor allem für Anfänger leider etwas steile Lernkurve erst einmal überwunden ist. Ich hoffe, diese Anleitung hat dazu ein wenig beigetragen.

Virtuelle Kaffeekasse

Bitcoin (BTC) PayNym: https://paynym.is/+tinyblock4CE

PM8TJRDWH79ZQp6NBsCGSefXL9MmDe7hj64sCiwbmgsVh1xwtVcNRZzJwQvgeohcfxSdnu6s6W7wypcjv4AVMwJSU8rQmLyoZdMUp6gLUJ2Wjoe3CB2a

Monero (XMR):

83M6LmRTon3EWnqR9NNi2w6EVBfem1gojae9zuyKM7PbDr9S5pMr9PBTRnacLMXehXU8kQu6AeaBRcDZB6Rk7vrNGiCRF6A