Eigenen VPN-Server hosten

Zu Hause einen VPN-Server einzurichten, bringt zahlreiche Vorteile mit sich. So lassen sich Einstellungen im Heimnetz ganz bequem aus der Ferne vornehmen. Man kann beispielsweise Smart-Home-Geräte aus der Ferne steuern, ohne, dass sich jedes einzelne dieser Geräte offen im Internet befinden muss. Über eine VPN-Verbindung lässt sich all das verschlüsselt abwickeln. Diese verschlüsselte Verbindung ist auch dann vorteilhaft, wenn man in offenen WLAN-Netzwerken unterwegs ist. Verbindet man sich dann mit dem VPN-Server, so kann kein anderer Netzwerkteilnehmer des WLAN-Netzwerks die Verbindung problemlos abhören, um so an Anmeldedaten oder andere persönliche Daten zu gelangen. Auch wenn man oft im Ausland unterwegs ist und dennoch alle deutschen Dienste wie zu Hause nutzen möchte, die im Ausland nicht verfügbar sind, ergibt ein VPN-Server im Heimatland durchaus Sinn. Stellt man mit diesem Server nämlich eine Verbindung her, so surft man mit der IP-Adresse des VPN-Servers weiter. Damit können die Webseiten, die Sie aufrufen, über die Netzwerkadresse nicht feststellen, dass Sie sich gerade im Ausland befinden. Da Sie allerdings über eine deutsche IP-Adresse surfen, gehen sie davon aus, dass Sie sich in Deutschland aufhalten.

OpenVPN

Es gibt viele verschiedene Protokolle, doch das mit Abstand am häufigsten verwendete VPN-Protokoll ist das OpenVPN-Protokoll und das hat gute Gründe:

  • OpenVPN-Verbindungen können über nahezu jeden Internetanschluss hergestellt werden, da der Port, über den sie laufen, frei wählbar und nicht statisch verankert ist. Daher lässt es sich schwieriger durch den ISP blockieren
  • OpenVPN ist mit sehr vielen Plattformen kompatibel und einfach einzurichten
  • OpenVPN hat eine starke und sichere Verschlüsselung

Allerdings ist für die Herstellung einer OpenVPN-Verbindung fast immer zusätzliche Software zu installieren.

IPSec-VPN

Ein noch durchaus häufig genutztes VPN-Protokoll ist das IPSec-Protokoll. Vor allem, wenn man eine FritzBox besitzt, lässt sich darauf einfach ein IPSec-basierter VPN-Server installieren. Auch für die Verwendung von IPSec gibt es gute Gründe:

  • Auf fast keiner Plattform ist für die Einrichtung einer IPSec-Verbindung zusätzliche Software von Nöten, weil IPSec auf fast jedem Betriebssystem bereits unterstützt wird
  • begeht man bei der Einrichtung einer IPSec-VPN-Verbindung keine Fehler, so ist diese sehr gut verschlüsselt

IPSec besitzt jedoch komplexe Verbindungseinstellungen. Einstellungsfehler treten daher leider wesentlich häufiger auf, als bei anderen Protokollen. Zudem sind die Ports, über die die Verbindung läuft, statisch im Protokoll verankert. Der ISP müsste als lediglich diese Ports blockieren, um eine Verbindung über IPSec unmöglich zu machen.

PPTP-VPN

Heute noch eher wenig verwendet, bildet das PPTP-Protokoll das Schlusslicht in diesem kurzen Vergleich. Es gibt einige wenige Argumente für PPTP, die aber mittlerweile auch teilweise durch die anderen Protokolle erfüllt werden. Deshalb werde ich in diesem Beitrag auch nicht zeigen, wie man einen PPTP-Server aufsetzt. Schauen wir uns aber zunächst die Vorteile von PPTP an:

  • PPTP braucht meist keine Software, die noch installiert werden muss. Fast jedes Betriebssystem unterstützt bereits von Haus aus PPTP
  • PPTP ist einfach einzurichten. Der Client muss nur Serveradresse, Benutzername und Passwort angeben

Das waren allerdings schon alle Vorteile des PPTP. Die Verschlüsselung dieses Protokolls ist eher schwach. Verbindungen können leicht abgehört werden. Tausche daher niemals ohne weitere Verschlüsselungen wie beispielsweise SSL Daten über PPTP aus. Zudem Sind auch hier wieder die Ports, über die Server und Clients miteinander kommunizieren, statisch im Protokoll verankert. Blockiert der ISP diese Ports, so kann nicht über PPTP kommuniziert werden.

Wer zu Hause eine FritzBox stehen hat, kann sich freuen: Die wohl einfachste Möglichkeit, einen VPN-Server ins Internet zu bringen, ist eine FritzBox mit möglichst aktuellem FritzOS. Dieser VPN-Server basiert dann auf IPSec. Derzeit ist FritzOS 7.12 das aktuellste FritzBox-System (Stand: 09/2019). Zur Einrichtung des Servers kann wie folgt vorgegangen werden:

  • Gehen Sie ins Konfigurationsmenü der FritzBox. Dieses sollten Sie, wenn Sie die DNS-Einstellungen Ihres Endgerätes nicht modifiziert haben, über die Adresse “fritz.box” erreichen. Geben Sie diese in Ihren Web-Browser ein.
  • Bevor Sie Zugang zum Konfigurationsmenü erhalten, werden Sie aufgefordert, ein Passwort einzugeben. Das erhalten Sie zu Ihrer FritzBox dazu, meist auf einem separaten Flyer.
  • Nach der Passworteingabe gelangen Sie auf die Übersichtsseite Ihrer FritzBox. Die kann in etwa so aussehen:
(Klicke zum Vergrößern)
  • Klicken Sie im Menü links auf “Internet”. Es öffnet sich ein Submenü. Klicken Sie “Freigaben” > “VPN” > “VPN-Verbindung hinzufügen”
  • Falls Sie eine VPN-Verbindung von einem PC, Laptop, Handy oder Tablet, etc. herstellen willst, wähle dann “Fernzugang für einen Benutzer einrichten”
  • Erstellen Sie einen neuen Nutzer. Wählen Sie unter dessen Berechtigungen “VPN” aus und bestätigen Sie
  • Es erscheint ein Dialogfenster, das bestätigt, dass die VPN-Einstellungen aktiviert wurden. Klicken Sie auf “OK”.
  • Sie erhalten eine Übersicht mit Anleitung (hier mit dem Nutzer “testuser”):
(Klicke zum Vergrößern)
  • Die VPN-Verbindung sollte nun mit diesen Einstellungen funktionieren.

Wird die Verbindung zum ISP getrennt, so muss Ihr Router eine neue Verbindung zu ihm herstellen. Dabei könnte Ihrem Router eine neue IP-Adresse zugewiesen werden. Tritt dieser Fall auf, dann können Sie dich nicht mehr über die in dieser Übersicht hinterlegte Serveradresse einloggen. Die Lösung: Ein dynamischer Hostname. Ein dynamischer Hostname ist rein äußerlich gesehen ein normaler Domainname wie z.B. techpage.ddns.net. Ein Domainname ist mit einer IP-Adresse verknüpft. Damit ist dem Client (z. B. dem VPN-Client) bekannt, unter welcher Adresse der Server im Internet erreichbar ist. Intern arbeitet der Computer nämlich nicht mit Domainnamen, sondern mit IP-Adressen. Bei einem dynamischen Hostnamen wird die IP-Adresse, die sich hinter dem Hostnamen verbirgt, automatisch aktualisiert, sobald sich die IP-Adresse des Servers verändert. Damit bleibt der Server auch dann über den Domainnamen erreichbar, wenn sich seine IP-Adresse ändert. Das ist genau deshalb in den meisten Fällen notwendig, weil die meisten Internet Service Provider für statische IP-Adressen zusätzliche Gebühren beanspruchen. Eine statische IP-Adresse ist eine IP-Adresse, die eindeutig mit Ihrem Anschluss verknüpft ist und auch dann gleich bleibt, wenn die Verbindung zum ISP getrennt war.

Einrichten eines Dynamischen Domainnamen

Die Einrichtung eines dynamischen Domainnamens ist kostenlos, wenn Sie damit leben können, dass Sie nur eine Subdomain erhalten – also beispielsweise techpage.ddns.net statt techpage.net. Registrieren Sie sich dazu auf NoIP.com, richten Sie sich einen solchen Domainnamen in Ihrem Mitgliederbereich ein und kehren Sie dann zur FritzBox-Oberfläche zurück. Die Seite NoIP ist nur meine persönliche Wahl. Natürlich können Sie jeden anderen DynDNS-Anbieter verwenden, den Ihre FritzBox unterstützt.

Im Konfigurationsmenü Ihrer FritzBox gehen Sie wie folgt vor:

  • Gehen Sie unter “Internet” > “Freigaben” auf “DynDNS”
  • Geben Sie dort Ihre Login-Daten von NoIP ein und bestätigen Sie die Eingaben.
  • Die FritzBox informiert NoIP nun über jeden IP-Adresswechsel. NoIP aktualisiert daraufhin die IP-Adresse, die mit Ihrem selbst gewählten Hostnamen verknüpft ist. Damit können Sie statt der Serveradresse nun in deinen VPN-Client-Einstellungen diesem Hostnamen eingeben. Dieser ist leichter einzuprägen und zugleich immer aktuell.

Probleme des FritzBox-VPNs

Kaum eine Computeranwendung ist fehlerfrei. Gleiches gilt für den VPN-Server der FritzBox. Neben den bereits oben genannten Nachteilen, kommt auch die Geschwindigkeit hinzu. Über meine 100 MBit/s-Glasfaserleitung mit >50MBit/s im Upload kommen beim Client nur maximal 3 – 8 MBit/s an. Der Grund: IPSec ist ein sehr aufwendiges Protokoll, das auf der Serverseite viel Rechenleistung erfordert. Eine normale FritzBox hat davon nicht unendlich viel. Deshalb ist die Verbindung eher langsam. Außerdem muss für jede VPN-Verbindung ein zusätzliches Nutzerprofil in der FritzBox angelegt werden. Lässt man mehrere VPN-Verbindungen über ein und denselben Nutzer laufen, treten Verbindungsprobleme auf. Maximal 12 gleichzeitige VPN-Verbindungen über alle Fritzox-Profile sind möglich. Schöpft man diese Anzahl an Verbindungen tatsächlich aus, so sinkt die Datenrate vermutlich ins unermessliche. Ein Server auf einem zusätzlichen, leistungsfähigeren Netzwerkgerät ergibt da schon eher Sinn.

Weitere VPN-fähige Home-Router

Die FritzBox ist nicht der einzige Router mit integrierter VPN-Funktion. Vielleicht werden Sie beim Durchsuchen Ihres Router-Konfigurationsmenüs fündig, auch wenn Sie keine FritzBox besitzen. An die Bastler: DD-WRT unterstützt OpenVPN und PPTP-Server. Achten Sie aber darauf, dass bei Routern mit zu geringer Rechenleistung oder mit zu wenig Speicher die OpenVPN-Funktionalität nicht zur Verfügung steht. Ich selbst nutze einen relativ günstigen Buffalo WZR-HP-G300NH und kann bestätigen, dass dieser die OpenVPN-Funktionalität besitzt. Befindet sich der eigene DD-WRT-Router aber eher im unteren Preissegment, so sollte man auch von diesem keine Höchstleistungen als OpenVPN-Server erwarten. Man könnte enttäuscht werden.

Was brauche ich dafür?

Einen VPN-Server können Sie theoretisch auf jedem beliebigen Computer installieren. Um Strom zu sparen, empfehle ich jedoch die Möglichkeit einen Mini-Computer zu verwenden, der während des Betriebs nur wenig Strom verbraucht und etwa so groß wie eine Handfläche ist. Der wohl bekannteste dieser Art ist wahrscheinlich der Raspberry Pi. Das derzeit neueste Modell ist dabei der Raspberry Pi 4 Modell B. Bereits ab 35€ ist dieses Modell erhältlich. Diese Anleitung sollte allerdings auch mit älteren Modellen und anderen Linux-basierten Systemen funktionieren. Ich selbst verwende in dieser Anleitung einen Raspberry Pi der dritten Generation. Klicken Sie hier, um mehr Informationen zum Raspberry Pi und zum Erwerb des Mini-Computers zu erhalten. Zusätzlich benötigen Sie eine Micro-SD-Karte mit mindestens 8GB Speicherplatz, auf der später das Betriebssystem installiert wird.

Einrichtung des Raspberry Pi

Wie Sie den Raspberry Pi einrichten, habe ich hier einmal zusammengefasst.

VPN-Server installieren mit SoftEther VPN

Mein Favorit unter den VPN-Servern für Mini-Computer ist der SoftEtherVPN-Server. Die Software wird ständig aktualisiert. Damit schließen die Entwickler immer wieder neu entdeckte Sicherheitslücken und fügen Erweiterungen zu dem breiten Funktionsspektrum hinzu. Wie Sie den SoftEtherVPN-Server auf Ihrem Mini-Computer installieren können, möchte ich in diesem Abschnitt erklären. Diese Anleitung bezieht sich NICHT auf MIni-Computer mit CPUs von arm64-Architektur. Für diese finden Sie hier Informationen zzur Installation. Für den Raspberry Pi mit normaler Raspbian-Installation sollte das nicht der Fall sein.

  • Zuerst benötigen Sie natürlich die Software zum VPN-Server. Diese finden Sie unter diesem Link mit folgenden Einstellungen:
  • Kopieren Sie den Download-Link der aktuellsten rtm-Version (Die Beta-Versionen könnten noch fehlerbehaftet sein.
  • Loggen Sie sich beim Raspberry Pi ein. Aktualisieren Sie zunächst die installierte Software mit diesen Befehlen: sudo apt update und sudo apt upgrade
  • Laden Sie dann die aktuellste rtm-Version herunter mit wget <kopierter Downloadlink>
  • Dekomprimieren Sie das heruntergeladene Verzeichnis mit tar zxvf /home/pi/softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-arm_eabi-32bit.tar.gz (achten Sie darauf, dass Sie wahrscheinlich eine andere Version heruntergeladen haben und der Name des .tar.gz-Verzeichnisses deshalb variiert)
  • Navigieren Sie in das Verzeichnis und kompilieren Sie es: cd vpnserver und sudo make
  • Sie werden gefragt, ob Sie mit den Lizenzvereinbarungen einverstanden sind. Bestätigen Sie jede Frage mit 1, um Ihr Einverständnis zu bekunden.
  • Der Quellcode der Software wird nun kompiliert, also ausführbar gemacht. Am Ende sollten Sie noch einige Anweisungen sehen, wie weiter vorgegangen werden sollte. Damit werden wir auch in dieser Anleitung fortfahren.
  • Verlassen Sie nun das Verzeichnis, in das Sie vorhin navigiert haben: Kehren Sie mit cd .. ins übergeordnete Verzeichnis zurück.
  • Die kompilierten Dateien werden nun noch verschoben. Anschließend müssen noch einige Zugriffsberechtigungen aktualisiert werden: sudo mv vpnserver /usr/local, cd /usr/local/vpnserver, sudo chmod 600 *, sudo chmod 700 vpncmd vpnserver
  • Testen Sie abschließend mit sudo ./vpncmd ob der Server wirklich ordnungsgemäß läuft. Im sich öffnenden Menü wählen Sie bitte die 3 und bestätigen mit ENTER. Geben Sie nun check ein und bestätigen Sie mit ENTER. Alle Tests sollten erfolgreich abgeschlossen werden (“Pass”). Schließen Sie die vpncmd mit STRG – D. Das ganze sollte dann in etwa so aussehen:
Klicken zum Vergrößern
  • Den VPN-Server möchten Sie vielleicht nicht nach jedem Reboot des RaspberryPi manuell starten müssen. Zum Glück gibt es einen einfachen Weg, diese Sache zu automatisieren. Hier finden Sie ein gutes Startup-Skript. Kopieren Sie den Inhalt dieses Skripts.
  • Erzeugen Sie mittels sudo nano /etc/init.d/vpnserver ein neues Startup-Skript auf Ihrem Raspberry Pi.
  • Mittels sudo chmod 755 /etc/init.d/vpnserver aktualisieren Sie die Berechtigungen des Skripts.
  • Fügen Sie den vpnserver dann mit sudo update-rc.d vpnserver defaults zu den Programmen hinzu, die bei jedem Boot des RaspberryPi gestartet werden.
  • Starten Sie das System mit sudo reboot neu oder starten Sie den Server manuell mit sudo /etc/init.d/vpnserver start
  • Mittels ls /var/lock können Sie verifizieren, ob der Service tatsächlich läuft.
  • Nun muss der Server noch durch ein Passwort abgesichert werden. Mit sudo /usr/local/vpnserver/vpncmd gelangen Sie in die vpncmd zurück. Wählen Sie dort die erste Option. Mittels ServerPasswordSet können Sie nun ein eigenes (möglichst sehr sicheres Passwort) festlegen. Beenden Sie die vpncmd dann mit exit oder CTRL – D.
  • Das soeben festgelegte Passwort wird später für den Server-Manager notwendig sein. Mit diesem können wir den Server ganz bequem über eine grafische Benutzeroberfläche von Windows aus verwalten.

Verwalten des Servers von Windows aus

Um den Server von Windows aus zu steuern ist weitere Software erforderlich. Um diese herunterzuladen, begeben Sie sich zurück zur SoftEther-Downloadseite und laden Sie den Softther VPN Server Manager herunter. Dieser ist neben Windows auch für Mac OS X verfügbar. Verwenden Sie keine der beiden Betriebssysteme? Auch über die Kommandozeile sollte sich der Server verwalten lassen. Das hier zu behandeln würde aber den Rahmen an dieser Stelle sprengen.

  • Installieren Sie den Server-Manager und klicken Sie auf “New Setting”. Unter Hostname tragen Sie entweder den Standard-Hostname “raspberrypi” des Raspberry Pi oder dessen IP-Adresse ein.
  • Im nächsten Schritt werden Sie gefragt, wie Sie den VPN-Server verwenden möchten. Da ich nur einzelne Geräte wie Computer, Smartphone, Tablet, etc. mit dem Server verbinden möchte, wähle ich die erste Option. Die zweite Option dient der “Verschmelzung” zweier Heimnetzwerke.
  • Nun öffnet sich ein weiteres Fenster, in dem die Einstellungen zur Dynamic DNS Funktion angepasst werden können. Sie bekommen dort einen dynamischen Hostnamen zugewiesen. Über diesen können Sie den Server jederzeit erreichen, sobald Sie die entsprechenden Portweiterleitungen in Ihrem Router eingerichtet haben. ACHTUNG! Ihnen muss eine öffentliche IP-Adresse vom ISP zugewiesen werden, um den Server später von außerhalb des Heimnetzwerks zu erreichen.
  • Im nächsten Fenster werden Sie nach den L2TP/IPSec-Einstellungen gefragt. Ich möchte einen OpenVPN-Server einrichten und lasse daher alle Kästchen leer. Sie können aber gerne eine der Optionen auswählen, falls Sie einen anderen VPN-Typ verwenden möchten.
  • Die nächsten Einstellungsoptionen beziehen sich lediglich auf MS-SSTP-VPNs. Deshalb deaktiviere ich die VPN-Azure-Cloud-Option.
  • Anschließend können Sie einen ersten VPN-User einrichten. Dieser Prozess ist ziemlich einfach und selbsterklärend. Wenn Sie das standardmäßige Ethernet- / WLAN-Interface Ihres Raspberry Pi nutzen, wählen Sie eth0 bzw. wlan0 aus der Liste aus. Ansonsten finden sie das richtige Interface mithilfe des Befehls ifconfig im Terminal.
  • Erstellen Sie nun einen neuen Listener auf einem zufälligen Port >50000 und <65535. Das verringert die Chance, dass ein Angreifer die VPN-Serveranwendung findet, wenn er einen typischen Portscan ausführt. Löschen Sie anschließend alle weiteren Listeners!
  • Klicken Sie nun auf “Exit”, Bearbeiten Sie das Verbindungsprofil (Port auf den des soeben eingerichteten Listeners aktualisieren) und verbinden Sie sich erneut.
  • Klicken Sie nun auf die “OpenVPN / MS-SSTP – Config”, entfernen Sie den Haken bei MS-SSTP und klicken Sie auf “Generate a Sample Configuration File for OpenVPN Clients”. Öffnen Sie die “remote_access_l3.ovpn”-Datei in einem Texteditor. Verändern Sie ggf. den in dieser Datei hinterlegten Port von 443 zu Ihrem vorhin ausgewählten Port. Auch weitere Einstellungen können Sie in der Datei ggf. noch verändern.
  • Bevor Sie sich aus der Ferne mit dem Pi verbinden können, müssen Sie den Port der VPN-Anwendung im Router und ggf. in der Firewall Ihres Pi weiterleiten. Wie Sie das tun, hängt ganz vom Router ab, den Sie verwenden. Schauen sie deshalb am besten online oder in der Bedienungsanleitung Ihres Routers nach.
  • Nun sollte vorerst alles geschafft sein. Um die Sicherheit der Verbindung zu verstärken, sollten Sie unter “Manage Virtual Hub” > “Manage Users” ein Nutzerzertifikat erstellen.
  • Übertragen Sie die Zertifikatsdateien und die remote_access_l3.ovpn-Datei auf alle Geräte, mit denen Sie eine VPN-Verbindung herstellen möchten.
  • Sie können nun eine Verbindung mittels OpenVPN-Client herstellen. Da auch hier die Einrichtung je nach verwendeter Client-Software variieren kann, werde ich diesen Teil nicht weiter ausführen. Ich bevorzuge aber persönlich diese Software für Windows: https://openvpn.net/community-downloads/ und diese für Android: https://play.google.com/store/apps/details?id=de.blinkt.openvpn&hl=en. In der Regel reicht es, alle Dateien in die Software zu importieren.

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.