Eigenen VPN Server mit Linux aufsetzen
In diesem Artikel zeige ich Euch eine einfach Variante, wie Ihr schnell und kostenlos einen eigenen VPN Server auf einem Linux basierten System aufsetzen könnt. Dafür benutzen wir das altbewährte und sichere OpenVPN Protokoll auf basi frei verfügbarer Software. Ich rate im allgemeinem von der Verwendung von gratis VPN Provider ab, da die meissten no-logging Versprechen weder überprüfbar noch haltbar sind. Immer wieder werden VPN Provider erwischt wie sie Daten an Werbetreibende verkaufen, oder bei Ermittlungen sogar mit Behörden kooperieren und "anonyme Daten über Euch" ohne mit der Wimper zu zucken aushändigen.
Wie es im die Anonymität von VPN aussieht, könnt Ihr hier in diesem Artikel nachlesen. Mit einem eigenen VPN Server habt Ihr die volle Kontrolle, könnt Euch in öffentlichen Netzwerken sinnvoll schützen, und Reisetätigkeiten vor Eurem Provider verbergen. Ausserdem kommt Ihr mit Eurem VPN in Eures eigene Netzwerk zuhause, und könnt, falls Ihr Dienste am Laufen habt, diese unterwegs kontrollieren ohne diese direkt dem Internet auszusetzen.
Was genau ist nochmals ein VPN
Ein VPN (Virtual Private Network) ist ein Netzwerktool, das eine sichere und verschlüsselte Verbindung zwischen einem Gerät (z.B. einem Computer) und einem Netzwerk (oftmals einem Unternehmensnetzwerk, aber auch ein privates Netzwerk) über das öffentliche Internet herstellt. Es ermöglicht das sichere Senden und Empfangen von Daten so, als ob sich das Gerät direkt im privaten Netzwerk befinden würde.
Hauptzwecke von VPNs sind:
- Zugriff auf Ressourcen in einem privaten Netzwerk: Benutzerkönnen von überall auf der Welt auf internen Ressourcen wie interne Webseiten, Datenbanken oder Fileserver zugreifen, als wären sie physisch im Büro.
- Sicherheit und Datenschutz: Da die Daten zwischen dem Gerät und dem Netzwerk verschlüsselt sind, können Außenstehende diese Daten nicht leicht abfangen oder einsehen. Dies ist besonders wichtig, wenn man öffentliche Wi-Fi-Netzwerke oder unsichere Internetverbindungen nutzt.
- Geoblocking umgehen: Einige Nutzer verwenden VPNs, um ihre Internetverbindung über Server in anderen Ländern laufen zu lassen und so geografische Beschränkungen von Inhalten zu umgehen.
- Online-Anonymität: VPNs können dazu beitragen, die Privatsphäre des Benutzers zu schützen, indem sie seine IP-Adresse verbergen und den Internetverkehr verschleiern. Die Betonung liegt auf können.
Im geschäftlichen Kontext wird VPN hauptsächlich genutzt, um den Mitarbeitern einen sicheren Zugriff auf das Unternehmensnetzwerk von außerhalb des Büros zu ermöglichen. Es ermöglicht ihnen den Zugang zu internen Tools, Daten und Anwendungen, die sie für ihre Arbeit benötigen, ohne die Sicherheit der Unternehmensdaten zu gefährden.
In unserem Falle benutzen wir VPN um Zugang zu unserem Privaten Netzwerk herzustellen und um von dort aus in das Internet zu gehen. Bei reinem IP Tracking sieht es dann so aus, als währt Ihr immer zuhause. Aufsetzen werden wir unseren eigenen VPN Linux Server auch gena aus diesen Gründen.
Vorausetzungen für den eigenen VPN Server mit Linux Systemen
Erreichbarkeit & Firewall
Als erstes muss der Linux Rechner natürlich online sein um eine Verbindung herzustellen. Dafür reicht auch ein kleinere Rechner aus, der wenig Strom zieht. Ein Laptop der im WLAN ist, oder eine NUC mit ein. Der Standby muss deaktiviert sein solange Ihr den VPN verwenden wollt. Ausserdem muss der Port, über den Open VPN läuft freigegeben sein. Habt Ihr eine frische Linux Installation, ist noch keine Firewall aktiv.
DynDNS Adresse
Da die meissten keine fixe IP Adresse haben, ist eine DynDNS Adresse empfehlenswert. Es wäre blöd wenn Eurer Provider unterwegs Euch die IP Adresse wechselt, und Ihr Euch nicht mehr mit Eurem Netzwerk verbinden könnt.
Nutzer mit fixer IP Adresse brauchen kein DynDNS. Wir Ihr eine DynDNS Adresse einrichtet, erfahrt Ihr hier.
Portweiterleitung
Eine Portweiterleitung an Euren Rechner, auf dem OpenVPN läuft, muss eingerichtet sein. Der Port für VPN Verbindungen ist in der Regel 1194, es können aber auch andere Ports verwendet werden, sie dürfen einfach auf dem Rechner nicht von anderen Diensten, zB einer Nextcloud verwendet werden.
Wer auch seinen VPN Traffic verstecken will, benutzt Port 443 mit dem Protokoll TCP, damit is der Traffic beinahe nicht mehr von normallem Web Traffic zu unterscheiden und es der VPN Server kann auch hinter sehr strengen Firewallumgebungen, oder in Ländern mit starken Überwachungstendenzen versteckt werden. Länder die Deep Packet Inspection Firewalls benutzen, erkennen aber auch OpenVPN Traffic über Port 443 und dem TCP Protokoll. Ein Artikel zur Einrichtung einer Portweiterleitung findet Ihr in diesem Artikel.
Richtet für den normalen Gebrauch eine Weitereitung an Euren VPN Rechner über Port 1194 mit dem Protokoll UDP ein.
oder
Richtet für sehr restriktive Umgebungen eine Weiterleitung an Euren VPN Rechner über Port 443 mit de Protokoll TCP ein.
Open VPN Installation und Einrichtung unter Linux für den eigenen VPN Server
Die Installation eines VPN Servers ist nicht trivial und eine sehr komplexe Sache, wir benötigen Server und Client Zertifikate, eine Certificate Authority welche die Zertifikate signiert, Profile mit Zertifikaten und vieles mehr. Wer mal genau durchlesen will, wie sowas im Detail funktioniert, schaut sich die manuelle Einrichtung eines VPN Servers an, damit man mal sieht was dahinter steckt.
Wir benutzen aber ein Script der das alles für uns tut. Den Skript könnt Ihr Euch vorher hier anschauen.
Herunterladen könnt wir uns den Script mit:
wget https://git.io/vpn -O openvpn-install.sh
den Script machen wir ausführ und lassen Ihn direkt danach laufen:
sudo chmod +x openvpn-install.sh && sudo bash openvpn-install.sh
Wer sich den Script vorher noch lokal anschauen will, lässt den zweiten Befehl weg und öffnet den Script vorher noch mit
nano openvpn-install.sh
Ihr werdet zuerst auch gleich nach den Grundeinstellungen gefragt:
Der Installer merkt dass Ihr hinter einer Network Translation (NAT) mit Port Forwarding sitzt, deshalb hier als erstes die richige IP Adresse eingeben auf dem der Server läuft. Als nächstes gebt Ihr die DynDNS Adresse an die Ihr eingerichtet habt. Hier wählt Ihr das Protokol aus dass Ihr im Port Forwarding ausgewählt habt. Bei Nutzung des Standardports 1194 drückt Ihr einfach Enter, ansonsten Euren spezifischen Port angeben.
Nun könnt Ihr den DNS Server angeben der verwendet werden soll, Ihr könnt mit Nummer den akuell genutzten DNS Server auf Eurem Rechner verwenden. Danach können wir schon unseren ersten Client erstellen und Ihm einen Namen geben. In diesem Falle einfach Android. Anschliessend mit irgendeiner Taste bestätigen. Der Installer erledigt die Einrichtung läuft eine Weile und erstellt alle notwendigen Zertifikate inkl Schlüsselgenerierungen.
Zusätzliche Einstellungen für den eigenen Linux Open VPN Server
Die Client Zertifikate befinden sich im root Ordner Eures Rechners. Wir öffnen diese Datei kurz mit
nano /root/Android.ovpn
Und fügen diese Zeile ein:
push "redirect-gateway def1"
Speichert mit strg+o und beendet mit strg+x
Die Datei können wir uns danach irgendwo in unser Homeverzeichnis kopieren zum Beispiel mit
cp /root/Android.ovpn /home/Benutzer/openvpnclients/
Die Datei gehört „root“ und ich bitte Euch nichts an den Eigentumsberechtigungen zu ändern. Das dient der Sicherheit, auch sollte diese Datei nirgends öffentlich verfügbar sein, sie gehört in keine öffentliche Cloud und auch nirgendwohin anders. Mit dieser Konfiguration hat ein fremder vollen Zugriff auf Eurer Netzwerk und kann darin tun und lassen was er will. Nach dem Einfügen in einen Client lösche ich diese Datei meisst sofort wieder! Eine Kopie habt Ihr immer im root Verzeichnis und könnt diese von dort wieder hervorholen falls Ihr sie wieder braucht.
Schickt Euch die Datei am besten über eines UBS-Stick oder einer Bluetooth Verbindung an das Smartphone, Euren Linux oder Windows Laptop. Geht natürlich auch im Heimnetzwerk über Gemeinsame Ordner auf der NAS.
Weitere Clients hinzufügen
Um weitere Clients hinzuzufügen führt Ihr den Script an der richtigen Stelle einfach nochmals mit
sudo bash openvpn-install.sh
aus, und wählt Add a new Client
Mit Revoke an exisiting client könnt Ihr Clients entfernen, und mit Remove OpenVPN könnt Ihr dass ganze Zeug auch wieder von der Platte schmeissen.
Einrichtung der Clients für die VPN Server Verbindung
Android Client
Für Android braucht Ihr nichts weiter als die App OpenVPN vom AuroraStore oder von F-Droid herunter zu laden und zu installieren.
Öffnet die App, drückt auf das gelbe Plus Symbol unten Links, wählt im nächsten Fenster Upload File aus und drückt auf Next und bestätigt mit OK
Mit dem Schieberregler könnt Ihr die Verbindungen nun aktivieren. Bestätigt die OpenVPN Verbindungsanfrage vom Android System.
Windows Client
Ladet den OpenVPN Client hier herrunter und installiert Euch das Programm an einen Ort Eurer Wahl. Öffnet die Applikation unten im Systemtray und klickt auf Verbinden und danach auf Datei importieren. Wählt Eure OpenVPN Datei aus. Danach erscheint ein neuer Eintrag, hier könnt Ihr dann Euer Profil auswählen.
Nach kurzer Zeit sollte Ihr auch schon verbunden sein.
Linux Client
Der Networkmanager der meissten Distros wie Ubuntu, Kubuntu, Mint und etc können von Haus aus mit OpenVPN umgehen, eine zusätzliche Installation ist nicht notwendig. Hier geht hier ganz einfach in den Netzwerkmanager und fügt mit dem Plus Symbol eine neue Verbindung hinzu. Scrollt ganz nach unten um eine VPN Verbindung zu importieren. Der Netzwerkmanager erkennt die Konfiguration und richtet Euch alles ein.
Am Schluss, verbindet Euch einfach zusätzlich mit der OpenVPN Verbindung. Die aktuelle Netzwerkverbindung muss natürlich aktiviert bleiben.
iOS Client
Für iOS gibt es auch einen OpenVPN Client, der ist von der Bedienung genau gleich wie der Android Client. Einfach Profil hinzufügen, verbinden und fertig!
Wichtige Hinweise
Ich möchte nochmals darauf aufmerksam machen dass OpenVPN ein mächtiges Werkzeug ist um Verbindungen in das eigene Netzwerk zu erstellen, ebenso mächtig ist es, wenn die Datei ausversehen in falsche Hände gerät. Aufgrund der einfachkeit halber habe ich auf eine Passwort und Benutzernamen Einrichtung hier verzichtet. Dies würde eine zusätzliche Sicherheitsebene darstellen da ein Findling dann zusätzlich zu der Datei noch den Benutzernamen und das Passwort kennen müsste. Die Benutzernamen und Passworteinrichtung tätigen wir zusammen dann in einem kommenden Artikel. Die Authentifizierung über Client-Server Zertifikate ist aber eine sehr sehr sichere Verbindung und quasi nicht hackbar.
Ich hoffe der Beitrag hat Euch gefallen. Viel Spass und seid immer vorsichtig. Falls Ihr Fragen habt, lasst es mich wissen und schreibt sie in die Kommentare!