None but your Buisness — Privatsphäre im Internet mit selbstgehosteten Open-Source-Tools unter Linux

02.12.2020 | Thilo Mull in howto

Datensouveränität im Internet

An viele Orte im Internet kann man nur gelangen, wenn der Weg mit persönlichen Daten abgeschritten wird. Für diese Daten interessieren sich viele verschieden Parteien, aus ganz verschiedenen Gründen. Zu den größten Lagern dieser Interessierten gehören Werbetreibende sowie deren Partner, die ihnen die Daten beschaffen, Kriminelle und nicht zuletzt staatliche Akteure wie Sicherheitsbehörden und Geheimdienste. Abseits davon scheinen heutzutage “Hinz und Kunz” Big Data als potenzielles Geschäftsfeld endeckt zu haben, sodass Daten auch mal einfach so erhoben werden, selbst wenn es derzeit noch keinen konkreten Anlass geben mag.

Innerhalb dieser Umstände wird es immer schwieriger, dafür zu sorgen, dass die Souveränität über die eigenen Daten gewahrt bleibt. Anders als bei Diensten, bei denen es um bloßes Entertainment [1] geht, handelt es sich bei diesen persönlichen Daten teilweise um solche, die tatsächlich persönlich bleiben sollen und bei denen niemand von deren Inhalt oder überhaupt von ihnen erfahren soll. Der Suchmaschinenbetreiber kennt die Suchanfragen nach z.B. einer Krankheit oder nach besonderen sexuellen Vorlieben und kann diese der eigenen IP-Adresse zuordnen. Der Anbieter des Messengerdienstes weiß, wer wann mit wem kommuniziert hat – auch wenn der Inhalt selbst verschlüsselt sein sollte, so sind diese Metadaten ausreichend interessant, um daraus sehr viel abzuleiten [2]. Vielleicht noch ausgeprägter tritt dieses Problem bei E-Mails zutage. Da diese in aller Regel unveschlüsselt übertragen werden, ist es ein leichtes für die Anbieter dieser meist kostenlosen Dienste, neben den Metadaten auch den Inhalt zu analysieren.[3] Hinzu kommt, dass wir uns heutzutage nicht mehr immer im eigenen privaten Lan oder Wlan daheim aufhalten, sondern etwa im Zug, in Cafés, Supermärkten oder sogar im Einwohnermeldeamt in öffentlichen Netzwerken unterwegs sind, in denen unsere Daten an allen vorbeirauschen und auch unser eigenes Gerät allen anderen Netzwerkteilnehmern ausgeliefert ist. In einem solchen Fall ist es möglich, Opfer z.B. eines Man-in-the-Middle-Angriffs zu werden.[4] Um sich hiergegen zu schützen ist ratsam, in unsicheren (Netzwerk-)Umgebungen einen VPN-Zugang (Virtual Private Network) zu nutzen und den eigenen Datenverkehr in eine sichere, virtuelle Netzwerkumgebung zu routen.[5] Auch für VPNs gibt es Anbieter, bei denen der Dienst gemietet oder umsonst genutzt werden kann. Das Problem ist allerdings auch hier wieder, dass die Daten nun an diesen Anbietern vorbeifließen und im besten Fall darauf vertraut werden muss, dass dieser sie nicht stiehlt, missbraucht, verliert oder an Dritte weitergibt.[6][7]

Vertrauen ist gut, Kontrolle ist besser

Da es angesichts der regelmäßigen Enthüllungen, Datenpannen, Cyber(cyber,cyber)-Einbrüche, bedauerlichen Einzelfälle usw. immer schwerer fällt darauf zu vertrauen, dass selbst diejenigen Anbieter, die beteuern mit den eigenen Daten ordentlich umzugehen, ihr Wort auch halten — von denen, die dies nicht tun, mal ganz abgesehen — gibt es eigentlich nur drei Auswege aus diesem Dilemma:

  1. Frei nach Morris: keinen Computer besitzen oder benutzen.[8]
  2. Jemanden kennen, der vertrauenswürdig ist und einem die Dienste bereitstellt.
  3. Es selber machen.

Da Punkt eins leider nicht wirklich realistisch ist und der Luxus von Punkt zwei nicht allen vergönnt ist, bleibt als sichere Hausnummer nur die drei übrig. Glücklicherweise ist dies jedoch heutzutage kein Drama mehr!

Die Grundlage zum Selbermachen

Prinzipiell ist für das Selberbetreiben von Diensten wie einem VPN, Instant-Messenging, einer Suchmaschine oder Mailinfrastruktur nicht mehr nötig als ein (virtueller) Linux-Server samt Domain und etwas Know-How im Umgang mit der Linux-Kommandozeile. Da diese Dienste auch von außen erreichbar sein sollen, empfiehlt es sich, einen Server bei einem Hoster zu mieten. Die Kosten hierfür belaufen sich bei den großen deutschen Anbietern auf unter 10€ im Monat, inkl. Domain. Auf diesem System können natürlich noch weitere Dienste betrieben werden. Darüber hinaus spricht nichts dagegen, selbst die in Punkt zwei genannte vertrauenswürdige Person zu werden und die Dienste auch Familienmitgliedern und Freunden zur Verfügung zu stellen. Für NAS- und Heimserver-Besitzerinnen könnte das Aufsetzen eines VPNs in Verbindung mit DynDNS (Dynamisches DNS)[9] interessant sein. Für alle Dienste, die hier vorgestellt werden, sollte in jedem Fall eine Transportverschlüsselung mit TLS eingerichtet werden. Die dafür erforderlichen Zertifikate können kostenlos über Let’s Encrypt [10], z.B. mit dem Tool certbot-auto [11] erstellt werden.

Da für alle hier vorgestellten Tools schon ausreichend viele, teils sehr gute, Installationsanleitungen für beliebige Linux-Derivate u. Versionen im Internet vorhanden sind, soll sich das folgende ausschließlich auf die Vorstellung beschränken. Falls auf Installationsanleitungen verwiesen wird, so beziehen sich diese in der Regel auf Debian.

Instant Messaging mit XMPP oder Matrix

Mittlerweile ist es ja problemlos möglich, sich einen ganzen Blumenstrauß an Messengern auf dem Telefon zu installieren. Doch viele kommen mit einem Haken: Wenn sie nicht zufällig einem riesigen Konzern gehören, der sein Geld damit verdient, Daten zu sammeln und zu analysieren, dann fordern sie oft trotzdem noch eine Registrierung mit der Telefonnummer. Das mag praktisch sein, um Personen aus dem Telefonbuch auch im Messenger wiederzufinden, verlangt aber im Gegenzug, dass dieses Telefonbuch auf den Server des Betreibers hochgeladen und dort abgeglichen wird. Somit werden einmal alle Kontakte dem Betreiber überlassen, was nicht ganz unkritisch zu betrachten ist. Ein Messenger, der dies anders regelt ist beispielsweise Threema [12]. Hier ist eine Registrierung auch per Email-Adresse zulässig. Auch wenn die Kosten für Threema niemandes Geldbeutel sprengen sollten und das Unternehmen angekündigt hat, den Source Code bestimmter Komponenten zu veröffentlichen [13], so bleiben die serverseitigen Komponenten proprietär und der Gebrauch damit am Ende wieder eine Vertrauensangelegenheit.

Erfreulicherweise gibt es Open-Source-Alternativen!

XMPP

Das XMPP oder Extensible Messaging and Presence Protocol [14] gibt es eigentlich schon seit über 20 Jahren. Es wurde im Verlauf dieser Zeit stetig weiterentwickelt und wird beispielsweise von WhatsApp als Basis genutzt.[15] Das XMPP Protokoll ähnelt in seiner Funktionsweise grob der von E-Mail und ist in verschiedene Serveranwendungen implementiert. Diese Server bilden ein dezentrales, föderiertes Netzwerk, sodass Nutzerinnen von verschiedenen Servern wie bei E-Mail auch untereinander Nachrichten austauschen können. Ist der Server aufgesetzt, können die Grundfunktionen mit einer Reihe von Erweiterungen (XEPs - XMPP Extensions [16]) einfach erweitert werden. Als Server wurden mir bisher ejabberd [17], openfire [18] oder Prosody [19] empfohlen. Ich habe ausschließlich sehr gute Erfahrungen mit Prosody gemacht und würde diesen daher empfehlen. Prosody kann in den meisten Fällen über den Paketmanager des Systems installiert werden.[20] Mit einem gültigen TLS Zertifikat und ein paar XEPs ausgerüstet, ist die Unabhängigkeit im Messaging schnell und unkompliziert hergestellt. Nachdem der Server aufgesetzt ist, werden Nutzerkonten nach dem Muster name@domain.example vergeben, mit denen sich die Nutzer in einem Client ihrer Wahl anmelden können. In den Clients kann durch die Verwendung von OMEMO [21] Ende-zu-Ende Verschlüsselung integriert werden. Teilweise geschieht dies standardmäßig, teilweise muss hierfür ein Plugin nachinstalliert werden und teilweise wird die Verwendung von OMEMO noch nicht unterstützt. Wird OMEMO verwendet, so werden alle Daten komplett verschlüsselt übertragen, sodass sie ausschließlich auf den Endgeräten lesbar sind.

So wie es für E-Mails eine Menge unterschiedlicher Clients auf unterschiedlichen Plattformen gibt, ist es bei XMPP nicht anders. Für Android hat sich beispielsweise Conversations [22] durchgesetzt, der mit sehr vielen Features — unter anderem (Video)-Telefonie über WebRTC — und der standardmäßigen Verwendung von Ende-zu-Ende Verschlüsselung mit OMEMO kommerziellen Messengern in Nichts nachsteht. Conversations ist komplett Open-Source und kann entweder kostenpflichtig über den Playstore oder kostenlos über den alternativen App-Store Fdroid [23] installiert werden.

Screenshot von Conversations

Für iOS gibt es derzeit mit Chatsecure [24] einen kostenlos über den App-Store installierbaren XMPP Client, der OMEMO unterstüzt. Zudem gibt es mit Monal [25] derzeit einen weiteren vielversprechenden Client, der sich allerdings noch in einer etwas experimentelleren Phase der Entwicklung befindet.

Screenshot von Chatsecure

Für den Desktop unter Linux, MacOS und Windows kann Gajim [26][27] genutzt werden, welches ebenfalls über eine Reihe von Plugins erweitert werden kann. In Gajim muss für die Nutzung von OMEMO noch das gleichnamige Plugin installiert werden. Unter Windows geschieht dies einfach über den integrierten Pluginmanager, unter MacOS und Linux müssen ggf. noch weitere Pakete installiert werden.[28] Alternativ steht auch Pidgin für alle Plattformen zur Verfügung und kann via Plugin um die OMEMO-Funktionalität erweitert werden.[29]

Matrix

Recht ähnlich in der Anwendung zu XMPP ist das Matrix-Protokoll[30]. Auch bei Matrix handelt es sich um ein Protokoll zum dezentralen Austausch von Ende-zu-Ende verschlüsselten Nachrichten in Echtzeit, das in unterschiedliche Server- und Clientanwendungen integriert werden kann. Matrix erfreut sich seit den letzten Jahren immer größerer Popularität, nicht zuletzt seitdem die französische Regierung das Protokoll in Staatsdienste gestellt hat.[31]

Die populärste Serveranwendung ist derzeit Synapse[32], als Client für alle Plattformen hat sich Element (früher riot.im)[33] durchgesetzt. Element beherrscht ebenso (Video-)Telefonie über WebRTC. Ein Vorteil von Matrix besteht darin, dass es durch sogenannte Bridges [34] mit anderen Diensten wie Whatsapp, Telegram, Slack, IRC (und vielen mehr) kommunizieren kann. Der Nachteil hierbei ist dann allerdings, dass die Kommunikation nicht mehr Ende-zu-Ende verschlüsselt stattfinden kann.

Ein TURN-Server für die Telefoniefunktionen

Wenn Sie die (Video-)Telefoniefunktion mit XMPP oder mit Matrix nutzen wollen, so benötigen Sie in den meisten Fällen einen TURN-Server [35]. TURN steht für Traversal Using Relays around NAT und die Aufgabe des Servers besteht darin, Teilnehmer, die eine Peer-to-Peer Verbindung aufbauen wollen, sich jedoch jeweils hinter einem Nat befinden, miteinander zu verbinden. Dies ist z.B. für die Verbindung zweier Gesprächspartnerinnen via WebRTC nötig, wenn diese aus ihrem Heimnetz, das sich hinter dem NAT des Routers befindet, anrufen wollen. Der Traffic wird dann über den TURN-Server geroutet. Ein weit verbreiteter TURN-Server ist Coturn [36], der über die Paketquellen installiert werden kann [37].

Beispiel der turnserver.conf von Coturn:

listening-port=3478
tls-listening-port=5443
fingerprint
use-auth-secret
static-auth-secret=<supersecret> # to generate secret:  openssl rand -hex 24
realm=example.com
total-quota=100
bps-capacity=0
stale-nonce
#syslog
log-file=/var/log/coturn.log
simple-log
no-multicast-peers
cert=/etc/letsencrypt/live/turn.example.com/fullchain.pem
pkey=/etc/letsencrypt/live/turn.example.com/privkey.pem
cipher-list="ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS"
dh2066
no-tlsv1
no-tlsv1_1

Der eigene VPN mit OpenVPN

Um einen eigenen VPN-Service zu betreiben, braucht es im Wesentlichen nicht mehr als einen eigenen VPN-Server. Es sei hier noch einmal angemerkt, dass die Verwendung eines VPN-Dienstes nicht der Anonymisierung dient, sondern ausschließlich dem Einwählen in ein anderes, im besten Falle sicheres Netz. Wenn Sie einen VPN-Server installieren und diesen nutzen, so sind Sie im Internet mit der IP-Adresse des Servers und damit alles andere als anonym unterwegs. Um den Gefahren eines öffentlichen Netzwerks zu entkommen, reicht dies jedoch allemal. Für die Installation eines VPN-Servers bietet sich die Verwendung der Open-Source-Software OpenVPN [38] an, die für alle gängigen Linux-Distributionen verfügbar ist. Einmal installiert und eingerichtet [39], können Sie Zertifikate ausstellen, mit denen Sie sich über die OpenVPN-Clientsoftware [40] an Ihrem VPN Server anmelden können. Diese steht für alle Plattformen, einschließlich Android und iOS, zur Verfügung. In Zeiten von Corona, wo physische Lan-Parties nicht mehr möglich sind, ist der eigene VPN-Server auch eine klasse Möglichkeit, um eine VLan-Party zu veranstalten und alte Klassiker zu spielen. An dieser Stelle sei der Hinweis gestattet, dass es sich dafür lohnt, in der server.conf dev tap (für einen ethernet Tunnel) und client-to-client (damit sich die Teilnehmer gegenseitig finden können) zu aktivieren.

Die (Meta-)Suchmaschine Searx

Durch Searx [41] bietet sich die Möglichkeit, eine eigene Metasuchmaschine zu betreiben. Da das Betreiben einer richtigen Suchmaschine nicht wirklich realisierbar ist, ist dieser Ansatz der vielversprechendste, wenn Gesuchtes weiterhin annähernd gefunden werden soll. Das Prinzip dabei ist, dass die eigene Suchanfrage in die Searx-Instanz getippt wird und diese dann in den vorausgewählten Suchmaschinen eine Suchanfrage stellt. Die Ergebnisse werden dann von Searx dargestellt. Für die eigentliche Suchmaschine ist es damit unmöglich, die einzelnen Suchanfragen einem personifizierten Profil zuzuordnen – die Anfrage kommt immer von der Adresse der Searx-Instanz und es wird nicht klar, wer diese gestellt hat. Es existieren bereits viele öffentliche Instanzen [42], die einfach mitgenutzt werden können. Wenn Sie Ihre eigene Instanz verwenden wollen, so können Sie diese entweder im System installieren [43] oder in einem Docker-Container starten [44].

Die Ergebnispräsentation in Searx
Die Ergebnispräsentation in Searx
Auswahl der Suchmaschinen in Searx
Auswahl der Suchmaschinen in Searx

E-Mail mit Mailcow

Wer früher schonmal versucht hat, eine eigene Mailinfrastruktur zu betreiben, der denkt vielleicht heute noch mit Schmerzen daran. Zunächst die Auswahl der verwendeten Komponenten, dann die Installation und Konfiguration sowie die Instandhaltung derselben. Das alles ist zwar nicht weniger geworden, jedoch bietet Mailcow [45] die gesamte Mailinfrastruktur vorkonfiguriert in Docker an [46]. So ist es möglich, die ganze Mailinfrastruktur inkl. Ui für die Administration und Webfrontend für E-Mail (Roundcube [47] oder SOGo[48]) an einem Abend aufzusetzen und einsatzbereit zu haben. Darüber hinaus ist Mailcow sehr gut dokumentiert, wird stetig weiterentwickelt [49] und kann hier [50] in einer Demo ausprobiert werden:

Administrator: admin / moohoo
Domain administrator: department / moohoo
Mailbox: demo@440044.xyz / moohoo
Mailcow Ui - Anmeldung
Mailcow Ui - Anmeldung
Mailcow Admininterface
Mailcow Admininterface

Fazit

Der Einsatz der hier vorgestellten Tools ermöglicht es heute, einfacher denn je, seine Privatsphäre im Internet zurückzuerlangen. Sei es, dass die eigenen Nachrichten und Mails mit Gewissheit nicht von Konzernen durchstöbert werden, der Suchmaschinenbetreiber die Suchanfragen nicht mehr zuordnen kann oder das Surfen auf öffentlichen Netzen keine Gefahr mehr darstellen muss. Das Fantastische ist, dass es sich bei keinem dieser Open-Source-Tools um Raketenwissenschaft handelt und das Betreiben mit etwas Engagement bald nicht mehr (wahrscheinlich weniger) Aufwand bedeutet, als beispielsweise regelmäßiges Rasenmähen. Ein weiterer toller Effekt ist, dass die Dienste auch anderen, wie der Familie oder Freunden, zugänglich gemacht werden können. Spätestens, wenn in der Familiengruppe Kinderfotos geteilt werden, ist es ein gutes Gefühl, wenn diese sicher verschlüsselt über die eigene Infrastruktur gesendet werden – statt über die eines dritten Anbieters, dem vertraut werden muss, dass schon alles in Ordnung sei. In Kombination mit eigenen Cloud- und Mediendiensten, wie hier vorgestellt, ist die Unabhängigkeit von großen Anbietern und damit die eigene Datensouveränität zum Greifen nahe.

Thilo Mull
Thilo Mull
Thilo Mull arbeitet seit 2019 als Technical Writer bei B1 Systems GmbH und verfasste seitdem unter anderem Schulungsunterlagen zu Themen wie Ansible, Salt und Kubernetes. Seit seiner Jugend ist er fasziniert von freier und Open-Source-Software und betreibt mit Begeisterung so viele Dienste wie möglich selber.

 


Haben Sie Anmerkungen oder Nachfragen? Melden Sie sich unter blog%b1-systems.de
Col 2