Mistborn bündelt wichtige Dienste und sichert diese durch VPN und separate Container ab.
In der derzeitigen Pandemie hat das Internet nochmals einen anderen Stellenwert erhalten. Das Corona-Virus zwingt viele Menschen dazu, von zu Hause aus am Rechner zu arbeiten. Fehlende menschliche Kontakte kompensieren sie verstärkt über das Internet.
Das stellt viele Privatpersonen und kleine Unternehmen vor Probleme beim Absichern der genutzten Dienste. Es tauchen verstärkt Bedrohungen auf, die die derzeitige Situation ausnutzen, um Schaden anzurichten. Zudem erfahren Dienste wie etwa Videokonferenzen über den Anbieter Zoom [1] enormen Zulauf, obwohl der Hersteller mit dem Schließen von Sicherheitslücken kaum hinterherkommt.
Sicherheit fürs LAN
Der Entwickler Steven Foerster, der mit seiner Firma Cyber 5K Software im Bereich Sicherheit anbietet, überlegte sich, wie er angesichts dessen seiner Familie einen einfach zu realisierenden Schutz bei sämtlichen Aktivitäten im Internet bieten könnte. Daraus resultierte das kürzlich auf Gitlab veröffentlichte Projekt Mistborn [2], das ausschließlich auf freie Software setzt. Der Name entstammt der gleichnamigen epischen Fantasy-Buchreihe des US-Autors Brandon Sanderson.
Mistborn bietet skriptgesteuert das Aufsetzen eines VPN-Tunnels mit Wireguard sowie das Blockieren von Werbung durch Pi-hole mittels DNScrypt [3]. Zusätzlich ist es möglich, weitere Dienste zu aktivieren, etwa Nextcloud, Cockpit, Syncthing, Rocket.Chat, Home Assistant, Jellyfin, Bitwarden, OnlyOffice, Tor oder Jitsi (Abbildung 1).

Abbildung 1: Das Schema zeigt das Prinzip von Mistborn. Dabei läuft jeglicher Verkehr durch einen Wireguard-Tunnel. Zugriffe von außen regelt die integrierte Firewall.
Auf dem Laptop
Im Test kam Mistborn auf einem Thinkpad X220 als Server und einem X230 als Client zum Einsatz, jeweils mit Ubuntu 20.04 LTS. Sie steuern die Software über ein Webinterface von einem beliebigen Gerät aus. Der Entwickler empfiehlt für den Betrieb von Wireguard mit Pi-hole 1 GByte RAM und 15 GByte Speicherplatz.
Wollen Sie das Management-Tool Cockpit nutzen, sind mindestens 2 GByte RAM notwendig. Kommen Dienste wie Jitsi Meet, Nextcloud, Jellyfin, Rocket.Chat, Home Assistant oder OnlyOffice ins Spiel, brauchen Sie mindestens 4 GByte RAM. Der Speicherplatzbedarf steigt dann auf rund 25 GByte. Für Videokonferenzen mit Jitsi Meet sind 10 GBit Bandbreite optimal. Alternativ richten Sie die Software auf einem gemieteten Webspace oder VPS, sofern dieser PostgreSQL-Datenbanken unterstützt. Derartige Angebote gibt es bereits ab einem Euro monatlich.
Feste IP und DDNS
Wenn Sie Mistborn auf einem Gerät im Heimnetz installieren, benötigt dieses eine statische IP-Adresse [4]. Sollen die Dienste nur im LAN bereitstehen, genügt es, dem Rechner eine private statische Adresse zu geben. Das ist meist leicht über die Konfiguration im Router oder im Betriebssystem zu erledigen.
Eine feste öffentliche IP-Adresse erhalten Sie am einfachsten über einen der zahlreichen DDNS-Dienstanbieter. Manche Router, etwa die Fritzbox von AVM, bieten einen solchen Dienst aber in ihrer Software an. Bei der Installation auf einem V-Server oder Webspace fällt diese Anforderung weg.
Sie haben die Möglichkeit, Mistborn direkt oder via SSH zu installieren. Findet die Installation per SSH statt, erstellt das Setup dabei eine Iptables-Regel, die künftige Verbindungen per SSH von derselben IP-Adresse zulässt, alle anderen externen Verbindungen aber blockiert. Interne Verbindungen über den Wireguard-Tunnel akzeptiert der PC weiterhin. Gleiches gilt bei der Installation auf entfernten Geräten per SSH.
Alle Dienste in Mistborn laufen in Docker-Containern. Damit brauchen Sie sich aber gar nicht zu befassen, denn diese richtet die Software automatisch ein und verwaltet sie. Hier erstellt sie ebenfalls dynamisch nach Bedarf Iptables-Regeln, die externen Datenverkehr über die Container verhindern.
Installation
Bei der grundlegenden Installation von Mistborn gibt es für Sie, gemessen an dem, was das Skript alles einrichtet, kaum etwas zu tun, außer interessehalber die Ausgabe im Terminal mitzulesen. Sie richten die Software über die Befehle aus den ersten beiden Zeilen von Listing 1 ein. Der erste lädt das Skript von Gitlab herunter, der zweite startet die eigentliche Installation (Abbildung 2). Diese findet unterhalb von /opt/mistborn/ statt.
Listing 1
$ git clone https://gitlab.com/cyber5k/mistborn.git $ sudo bash ./mistborn/scripts/install.sh $ sudo mistborn-cli getconf

Abbildung 2: Die Installation von Mistborn auf dem Server ist mit zwei Befehlen schnell angestoßen. Danach vergeben Sie lediglich noch ein Passwort, der Rest läuft automatisch.
Auf dem Laptop dauerte der Vorgang in einem schnellen Netz rund 20 Minuten (Abbildung 3). Auf Gitlab finden Sie eine Liste der während der Installation abgearbeiteten Schritte [5]. Die Installation des ressourcenhungrigen Management-Tools Cockpit sollten Sie auf einem RasPi verneinen, wenn Sie es nicht unbedingt benötigen.

Abbildung 3: Die Installation dauerte auf unserm als Server genutzten X220 etwa 15 Minuten. Bei einer langsamen Netzanbindung oder der Installation auf einem Raspberry Pi kann der Vorgang aber auch länger dauern.
Nach dem Abschluss der Installation erstellen Sie eine Konfiguration für den oder die Rechner, auf denen Sie das Webinterface zum Steuern von Mistborn betreiben wollen. Warten Sie nach der Erfolgsmeldung der Installation noch eine Minute und erstellen Sie dann die Konfiguration mit dem Befehl aus der letzten Zeile von Listing 1 (Abbildung 4).

Abbildung 4: Den anfänglich kryptischen Befehl zum Erstellen einer Konfiguration für Wireguard auf dem Client tauschte der Entwickler während der Testphase gegen einen eingängiges Kommando aus.
Auf dem Client
Kennen Sie Wireguard bereits, fällt Ihnen vermutlich die Ähnlichkeit zur dort verwendeten wg0.conf auf. So ist die erste Maßnahme auf dem Steuergerät die Installation von Wireguard. Bei Ubuntu bis einschließlich Version 19.10 ist dazu die Integration eines PPA erforderlich [5], ab “Focal Fossa” ziehen Sie die Software direkt per Apt aus dem Repository. Das gilt auch für viele weitere Distributionen.
Als nächsten Schritt kopieren Sie die Konfigurationsdatei aus dem Terminal des Servers und legen sie auf dem Client in dem zuvor erstellten Verzeichnis /etc/wireguard/ als wg_admin.conf ab. Ein Beispiel zeigt Listing 2. Anschließend starten Sie noch die virtuelle Netzwerkschnittstelle per Systemd (Listing 3, erste zwei Zeilen).
Listing 2
# "10.15.91.2" - WireGuard Client Profile [Interface] Address = 10.15.91.2/32 # The use of DNS below effectively expands to: # PostUp = echo nameserver 10.15.91.1 | resolvconf -a tun.%i -m 0 -x # PostDown = resolvconf -d tun.%i # If the use of resolvconf is not desirable, simply remove the DNS line # and use a variant of the PostUp/PostDown lines above. # The IP address of the DNS server that is available via the encrypted # WireGuard interface is 10.15.91.1. DNS = 10.15.91.1 PrivateKey = cPPflVGsxVFw2/lMmhiFTXMmH345bGqoqArD/NgjiXU= [Peer] PublicKey = DfIV1urYZXqXKiU4rOSfO0Iu589pEO+59dHV5w5N0mU= PresharedKey = Z1SO5NuAnZ7JhzVCuUnYOQLWOQYmMoqG0pG1SNXUlh0= AllowedIPs = 0.0.0.0/0,::/0 Endpoint = Mistborn public IP address:39207
Listing 3
$ sudo systemctl start wg-quick@wg_admin $ sudo systemctl enable wg-quick@wg_admin $ sudo systemctl status wg-quick@wg_admin
Sollten Sie beim ersten Befehl eine Fehlermeldung erhalten, gehen Sie dieser mit dem Befehl aus der letzten Zeile von Listing 3 nach. Falls die Ausgabe moniert, resolvconf werde nicht gefunden, installieren Sie das Paket openresolv nach.
Hat alles funktioniert, rufen Sie nun in einem Webbrowser das Interface unter http://home.mistborn auf. Die Verbindungsaufnahme zum Server dauert je nach Hardware einige Minuten, da dieser zunächst die Container erstellt.
Ein erster Blick
In der Standardansicht nach dem Start von Mistborn befinden Sie sich in der Profilansicht, in der Sie bei Bedarf neue User anlegen, ein Gateway einrichten (dazu später mehr) oder neue Clients und Profile einrichten (Abbildung 5). Klicken Sie links auf System. So gelangen Sie in die Ansicht des standardmäßig aktivierten Pi-hole oder der Administrationsoberfläche Cockpit (Abbildung 6). Alle Dienste öffnen sich jeweils in einem eigenen Reiter.

Abbildung 5: Gleich nach dem Start der Weboberfläche haben Sie die Möglichkeit, neue User anzulegen und Wireguard-Profile für weitere Clients oder Gateways zu erstellen. Für mobile Clients scannen Sie die Konfiguration einfach als QR-Code ein.

Abbildung 6: Der standardmäßig aktive serverseitige Tracking- und Werbeblocker Pi-hole eignet sich ideal für den Einsatz auf dem RasPi. Er agiert als DNS-Server und blockt so anhand von bereits eingebundenen oder selbst erstellten Listen unerwünschte Anfragen auf allen Geräten im Netz.
Als Nächstes folgt das Modul Coppercloud. Damit sperren Sie einen gegebenen Satz von IP-Adressen über Iptables oder gewähren diesen Zutritt. Hier eingetragene Listen formt die Software beim Systemstart zu Iptables-Regeln um und führt diese dann aus. Alle weiteren Dienste, die Mistborn abgesichert unterstützt, finden Sie unter Manage Extra Services zusammengefasst (Abbildung 7).

Abbildung 7: Im Reiter Manage Extra Services versammelt Mistborn alle bereits installierten Dienste, die Sie durch einen Klick auf Start in wenigen Minuten aufsetzen und dann starten. Alle Dienste arbeiten im jeweils eigenen Container und nutzen den Wireguard-Tunnel.
Extradienste
Zu den Extradiensten gehören derzeit der Passwortmanager Bitwarden, die Kommunikationsanwendung Jitsi, die Chat-Software Rocket.Chat, die Filesharing- und Kollaborationsplattform Nextcloud (Abbildung 8), Syncthing als Software zum Abgleich von Daten (Abbildung 9), die Plex-Alternative Jellyfin (Abbildung 10), die Bürosuite OnlyOffice, die Heimautomations-Software Homeassistant sowie der Anonymisierungsdienst Tor. Weitere Dienste wie der Messenger Matrix, Gitlab oder verschiedene Game-Server sind in Vorbereitung.

Abbildung 8: Nie war Nextcloud schneller betriebsbereit: Innerhalb von ein oder zwei Minuten machen Sie die Kollaborations-Software einsatzbereit.

Abbildung 9: Mit Syncthing verfügt Mistborn über eine leistungsstarke Software zum Synchronisieren von Daten im lokalen Netz und auf entfernten Rechnern.

Abbildung 10: Jellyfin, ein Community-Fork der teils von einer Paywall umgebenen Medien-Software Emby, ist komplett Open Source. Clients stehen für viele Plattformen bereit. Zudem verfügt die Applikation über eine ansehnliche Webschnittstelle.
Nur ein Knopfdruck
Alle diese Dienste sind per Schaltfläche zum Aufsetzen bereit. Sobald Sie einen Dienst anstoßen, erscheint eine grüne Zeile, die Sie informiert, der Start könne einige Minuten dauern. Beim RasPi als Server dauerte es je nach Komplexität der Anwendung bis zu drei Minuten, bis ein Dienst bereit war.
Derzeit müssen Sie die Webseite noch manuell aktualisieren, um zu sehen, ob der Dienst fertig geladen ist. Danach dürfen Sie die jeweilige Anwendung starten und nutzen. Sie brauchen Dienste nur einmal zu starten; nach einem Neustart können Sie sie direkt öffnen.
Die Seitenleiste bietet mit Metrics und Tests noch zwei weitere Kategorien an. Erstere liefert einen Überblick über die Arbeit der Firewall, während die zweite einen Port-Scan, einen DNS-Leak-Test sowie die Anzeige der öffentlichen IP-Adresse bereithält. Der Ad-Block Test verweigerte im Test die Verbindung.
Gateway
Falls Sie Angebote wie Netflix nutzen, die mit Wireguard nicht so einfach funktionieren, binden Sie ein Gateway ein. Dabei handelt es sich um einen weiteren Client, der dem VPN vorgeschaltet ist und proprietären Diensten wie Netflix vorgaukelt, sie sähen die öffentliche IP-Adresse des Geräts, auf dem Netflix läuft.
Das Einrichten eines solchen Gateways übernimmt größtenteils wieder Mistborn. Sie brauchen lediglich, wie bei anderen Clients, die von Mistborn erstellte Konfiguration unter /etc/wireguard/gateway.conf auf dem Client abzulegen (Abbildung 11).

Abbildung 11: Ein Gateway bei Mistborn ist ein weiterer Client, der zwar ebenfalls den Wireguard-Tunnel nutzt, proprietären Diensten wie Netflix aber glaubhaft macht, es bestünde eine direkte Verbindung.
Das Erstellen der Konfiguration erfolgt auf der Profilseite unter Gateways, wo Sie zunächst einen Namen vergeben. Dann erstellen Sie über die Schaltfläche Create ein Profil, wählen es aus und kopieren anschließend die Konfigurationsdatei.
Bei mobilen Geräten erledigen Sie das durch Scannen des angezeigten QR-Codes. Das Aufsetzen auf dem Gateway-Client ist in der Dokumentation beschrieben [7]. Wie Sie Mistborn auf Android-Geräten zum Laufen bringen, zeigt der Kasten “Mistborn auf Android”. Für iOS gibt es derzeit keine praktikable Lösung.
Mistborn auf Android
Wir haben Mistborn auch unter Android getestet. Die Vorgehensweise ist ähnlich wie bei anderen Clients. Zunächst erstellen Sie mit Mistborn einen neuen Client. Nachdem Sie Wireguard auf dem Android-Gerät installiert haben, öffnen Sie die Anwendung und klicken unten rechts auf das Pluszeichen. Im nun erscheinenden Menü wählen Sie Vom QR-Code Scannen und lesen die Konfiguration direkt ein. Starten Sie anschließend Wireguard, können Sie Mistborn im Browser starten.
Eine Hürde hält Android aber noch bereit: Einige der Dienste unter Extras erfordern TLS. Um diesen Wunsch zu befriedigen, erstellt Mistborn bereits bei der Installation auf dem Server ein Zertifikat mit 10 Jahren Gültigkeit. Das importieren Sie auf das Android-Gerät, indem Sie in den Einstellungen unter Sicherheit | Zusätzliche Einstellungen | Verschlüsselung und Anmeldedaten auf Von Speicher installieren tippen und das Zertifikat importieren, das Sie unter /opt/mistborn_volumes/base/tls/cert.crt finden. Der Entwickler versprach uns, demnächst einen Download-Button für das Zertifikat einzurichten.
Sicherheit
Mistborn ist technisch in mehrfacher Hinsicht auf Sicherheit ausgelegt. Alle Dienste laufen in eigenen Docker-Containern. Sie haben die Möglichkeit, per sudo docker container ls -a jederzeit nachzusehen, um welche es sich handelt und ob sie aktiv sind. Zugang zu Mistborn gibt es nur über Wireguard, der VPS-Dienst reagiert nicht auf unauthentifizierten Datenverkehr.
Das Paket iptables-persistent übernimmt das automatische Laden der Iptables-Regeln, die bei der Installation von Mistborn und jeweils beim Start von Docker erstellt werden. Detaillierte Ausführungen dazu bietet ein Kapitel der Dokumentation [8]. Das Kapitel Troubleshooting enthält einige Maßnahmen, die Sie ergreifen können, falls Mistborn einmal nicht startet. Genügt das nicht, hilft der Entwickler unter mailto:steven@cyber5k.com per E-Mail gern weiter – allerdings auf Englisch.
Fazit und Ausblick
Mistborn hat uns im Test beeindruckt. Die Idee, ein Heimnetz abzusichern und dabei möglichst viele Dienste unter einer Oberfläche zu verwalten, ist professionell umgesetzt. Die recht junge Anwendung hat noch einige Ecken und Kanten, aber im Kern läuft alles rund. Wir konnten während der Testphase mit dem sehr zugänglichen Entwickler einige dieser Ecken und Kanten glätten. Er hat bereits Pläne für weitere Dienste und andere Erweiterungen [9].
Zum Testen und für die Grundanwendungen Wireguard und Pi-hole genügt unter Umständen schon der RasPi 4. Wer weitere Dienste permanent nutzen will, sollte auf leistungsfähigere Hardware umsteigen. Ein Webspace oder V-Server bieten sich an, da Sie dort den DDNS-Dienst nicht benötigen. Ein Notebook aus den letzten 10 Jahren wie das Thinkpad X220 von 2011 tut es jedoch ebenfalls. Aber egal auf welcher Hardware: Mistborn ist auf jeden Fall einen näheren Blick wert. (agr)
Infos
-
Zoom: https://www.golem.de/news/homeoffice-neue-sicherheitsluecken-in-zoom-entdeckt-2004-147670.html
-
Mistborn: https://gitlab.com/cyber5k/mistborn
-
Statische Adresse: https://www.ionos.de/digitalguide/server/konfiguration/raspberry-pi-mit-fester-ip-adresse-versehen/
-
Installation: https://gitlab.com/cyber5k/mistborn#installation
-
Wireguard-PPA: https://www.sebastian-fritz.net/2019/01/28/wireguard-vpn-und-ubuntu-18-04/
-
Sicherheit: https://gitlab.com/cyber5k/mistborn#technical-and-security-insights





