Wir setzen mit PiVPN auf einem Raspberry Pi einen WireGuard[1] VPN-Server auf.
Das ist, auch dank des Projekts PiVPN[2] eine der einfachsten und günstigsten Methoden, um einen eigenen, privaten VPN-Dienst zu betreiben. Der Raspberry Pi benötigt wenig Strom, ist kaum größer als eine Scheckkarte und verursacht keine monatlichen Abonnementkosten. Auch wenige Euro pro Monat können sich schließlich über die Jahre zu einer beträchtlichen Summe addieren.
Und das Beste daran: Im Gegensatz zu den kommerziellen VPN-Anbietern bekommt ihr Fernzugriff auf euer eigenes Heimnetzwerk!
Ein kurzer Einschub vorab: Ohne VPN oder Portfreigaben ist das Heimnetzwerk normalerweise nicht aus dem Internet erreichbar. Warum das so ist und weshalb ein VPN sicherer als viele einzelne Portfreigaben sein kann, erkläre ich im Artikel über Network Address Translation (NAT).
Warum VPN?
Es gibt verschiedene Gründe, warum man eine VPN-Verbindung nutzen kann oder sollte. Einer der wichtigsten ist meiner Einschätzung nach die erhöhte Sicherheit in offenen und öffentlichen WLANs.
Wer sich mit seinem Smartphone oder Tablet in ein öffentliches, im schlimmsten Fall unverschlüsseltes WLAN einwählt, macht sich zur Zielscheibe für Spähangriffe. Ein Smartphone kann zwar nicht automatisch angegriffen werden, nur weil es sich mit anderen Geräten im selben WLAN befindet. Andere Teilnehmer könnten unter bestimmten Umständen jedoch Verbindungsinformationen mitlesen – beispielsweise, mit welchen Diensten das Gerät kommuniziert. Verwendet die aufgerufene Website HTTPS, ist der übertragene Inhalt normalerweise bereits durch TLS verschlüsselt. Dann ist der Inhalt meiner Kommunikation immer noch geschützt, die Meta-Daten jedoch nicht. Ein Angreifer weiß nicht, was ich kommuniziere, aber durchaus mit wem. Dies bietet insbesondere Angriffspunkte für Social Engineering und ist als Sicherheitsrisiko anzusehen.
Mit einer VPN-Verbindung sieht ein Angreifer im öffentlichen WLAN im Wesentlichen nur die verschlüsselte Verbindung zu unserem VPN-Server. Welche Dienste wir durch den Tunnel aufrufen, ist für ihn nicht direkt erkennbar.
Eine VPN-Verbindung ermöglicht außerdem den Zugriff auf Geräte im eigenen Heimnetzwerk. Dazu gehören beispielsweise ein NAS, ein Heimserver oder Netzwerkkameras. Deren Netzwerkdienste müssen dadurch nicht einzeln über öffentliche Ports im Internet erreichbar gemacht werden. Der verbundene Client verhält sich dabei weitgehend so, als befände er sich im heimischen WLAN.
Weitere Gründe sind die Umgehung von Geo-Blocking sowie die Anonymisierung von Website-Besuchen. Wichtig zu wissen ist hierbei, dass der Betrieb und die Nutzung eines VPNs in Deutschland grundsätzlich legal sind. Es handelt sich um etablierte Werkzeuge der Netzwerktechnik und Informationssicherheit.
Ein VPN-Dienst, wie wir ihn mit dieser Anleitung einrichten, eignet sich NICHT für die Anonymisierung im Internet. Nutzt ihr den VPN von unterwegs, z. B. vom Handy aus, sieht der Webserver zwar nicht mehr die öffentliche IP eures Smartphones. Da wir den VPN-Server aber in unserem Heimnetz betreiben, sieht der Webserver immer die öffentliche IP-Adresse eures Heimnetz-Routers. Über diesen Anschluss seid ihr natürlich noch immer identifizierbar!
Für eine stärkere Verschleierung der öffentlichen IP-Adresse eignen sich kommerzielle VPN-Dienste, bei denen sich viele Nutzer eine öffentliche IP-Adresse teilen. Vollständige Anonymität bieten jedoch auch solche Dienste nicht. Eine wirksame Anonymisierung im Internet erfordert ohnehin deutlich mehr Fachwissen, als lediglich ein VPN zu aktivieren. Denn häufig hinterlässt man viel mehr Spuren als bloße Verbindungsdaten. Website-Logins, Browser-Fingerabdrücke, Werbe-Tracker und vieles mehr sabotieren die Anonymität.
Falls ihr euch Sorgen um das rechtliche Thema macht: Der Betrieb und die Nutzung eines VPN sind in Deutschland grundsätzlich legal. Unternehmen verwenden VPN-Verbindungen beispielsweise täglich, um Beschäftigten einen sicheren Fernzugriff auf interne Netzwerke zu ermöglichen. Verantwortlich bleibt ihr jedoch für alle Handlungen, die ihr über die Verbindung ausführt. Ein VPN macht illegale Handlungen nicht legal und sorgt auch nicht automatisch für vollständige Anonymität.
Was macht VPN eigentlich?
Betrachten wir zunächst eine einfache Anfrage an einen Webserver. Zur Vereinfachung habe ich die Network Address Translation (NAT) weggelassen, welche unser Router normalerweise automatisch für uns durchführt. Wir konzentrieren uns nur auf Absender und Empfänger. Wir schicken eine Anfrage, in der wir den Server um eine Website bitten. Der Server antwortet uns mit dem Inhalt der Seite. Damit das funktioniert, müssen wir der Anfrage mitgeben, an welche Adresse der Server uns die Daten schicken soll. Absender und Empfänger müssen bekannt sein:

Nun gibt es zwei grundlegende Konzepte, wie wir unsere IP-Adresse bzw. den Absender vor dem Empfänger verbergen können: Proxy und VPN. Ein Proxy arbeitet wie ein Vermittler zwischen unserem Gerät und dem eigentlichen Zielserver. Unsere Anwendung sendet ihre Anfrage zunächst an den Proxy. Dieser stellt die Anfrage in unserem Auftrag an den Zielserver und leitet dessen Antwort anschließend an uns zurück. Aus unserer Sicht ändert sich nicht viel, außer einer minimal höheren Latenz, da die Anfrage einmal umgeleitet wurde. Ansonsten fragen wir etwas an und erhalten etwas zurück, genauso wie im ersten Fall ohne Proxy.

Ein VPN verbirgt ebenfalls unsere richtige IP vor dem Server, allerdings auf eine andere Art und Weise. Wir richten einen verschlüsselten VPN-Tunnel zwischen unserem Gerät und dem VPN-Server ein. Welche Daten durch diesen Tunnel geleitet werden, hängt von der Konfiguration ab. Entweder läuft der gesamte Netzwerkverkehr durch das VPN oder nur der Datenverkehr an ausgewählte IP-Adressen. Am Ende dieses Tunnels bekommen wir vom VPN-Server eine eigene IP-Adresse aus dessen Adressbereich zugewiesen.
Rufen wir über den VPN-Tunnel eine Website auf, sieht deren Server normalerweise nicht die öffentliche IP-Adresse unseres aktuellen Standorts. Stattdessen sieht er die öffentliche IP-Adresse des Internetanschlusses, über den unser VPN-Server mit dem Internet verbunden ist. Der VPN-Server leitet unsere Anfrage an den Zielserver weiter. Die Antwort nimmt den umgekehrten Weg und wird durch den verschlüsselten Tunnel an unser Gerät zurückgeschickt.

Der Unterschied zum Proxy besteht darin, dass man über den Proxy nur ausgehende Anfragen über den stellvertretenden Server umleitet und die Antwort zurückbekommt. Beim VPN erhalten wir eine eigene Adresse im Netz des VPN-Servers. Wenn Routing und Firewall entsprechend eingerichtet sind, können andere Teilnehmer des VPN darüber ebenfalls eine Verbindung zu unserem Gerät aufbauen. Für viele Anwendungen verhält sich unser Gerät dadurch so, als befände es sich direkt im entfernten Netzwerk.
VPN-Server mit PiVPN installieren
Die Installation und Konfiguration des WireGuard-VPN-Servers ist denkbar einfach, dank den Mitwirkenden vom Projekt PiVPN. Stellt zunächst einmal sicher, dass CURL auf eurem Pi installiert ist. Gib die folgenden Befehle im Bash-Terminal ein:
$ sudo apt update && sudo apt install curl -y
Diese Zeile kombiniert zwei Befehle mit dem doppelten &-Zeichen. Zunächst aktualisiert das Programm apt seine Repository-Informationen, anschließend installiert apt das Programm curl, oder aktualisiert es, falls es bereits installiert war und ein Update verfügbar ist.
Dann könnt iht mit CURL das Installations-Script von der PiVPN Homepage herunterladen:
$ curl -L https://install.pivpn.io -o pivpn.sh
Dann nur noch das Script ausführen:
$ sudo bash pivpn.sh
Bei der Bedienung des Installers gibt es einen Stolperstein, über den ich mich selbst ein, zwei mal hingepackt habe. Die Navigation erfolgt über Pfeiltasten: Hoch und Runter verschiebt die optisch hervorgehobene Zeile in der Auswahlliste. Links und Rechts wählt zwischen den Actions unten aus, also z. B. OK oder Cancel
Der Clou: Mit Enter bestätigt ihr die Actions, nicht die Optionsauswahl! Nachdem ihr mit hoch/runter eine Option angesteuert habt, müsst ihr diese mit der Leertaste auswählen. Erst wenn in der Liste das Sternchen bei der ausgewählten Option erscheint, dürft ihr mit der Eingabetaste bestätigen. Ansonsten bleibt ohne die Leertaste weiterhin die ursprüngliche Standardauswahl stehen.
Gehen wir kurz über die Optionen:
Fußnoten
-
Wer sich tiefergehend mit der Funktionsweise auseinandersetzen möchte, für den lohnt sich ein Blick in den Quick Start Guide. Für alle anderen: PiVPN verpackt das Setup und die Konfiguration in einen einfachen Installer und kurze Befehle.
"WireGuard" ist eine eingetragene Marke von Jason A. Donenfeld. ↩ -
Offizielle PiVPN Website: https://www.pivpn.io/
Dokumentation auf GitHub: https://github.com/pivpn/pivpn ↩