Zurück zum Blog

OpenVPN unter Ubuntu 18.04 einrichten

OpenVPN unter Ubuntu 18.04 einrichten

Einführung

Möchten Sie von Ihrem Smartphone oder Laptop aus sicher auf das Internet zugreifen, wenn Sie sich mit einem nicht vertrauenswürdigen Netzwerk verbinden (z. B. WLAN in einem Hotel oder Café)? Glücklicherweise gibt es eine Möglichkeit, Ihnen diesen Wunsch zu erfüllen. Sie können sich sicher mit einem nicht vertrauenswürdigen Netzwerk verbinden, als ob Sie sich in einem privaten Netzwerk befinden würden, und zwar über ein Virtuelles Privates Netzwerk (VPN).

Was ist ein VPN?

VPN steht für Virtual Private Network (Virtuelles Privates Netzwerk). Es bietet die Möglichkeit, einen sicheren Tunnel zu einem vertrauenswürdigen Server aufzubauen. Alle Anfragen werden dann über diesen Server gesendet und empfangen. Der Vorteil liegt in der Absicherung Ihres Zugangs und Ihrer Transaktionen bei der Nutzung öffentlicher Netzwerke, wie z. B. dem kostenlosen WLAN in einem Hotel.

Durch das VPN werden alle Daten verschlüsselt und über den Server verarbeitet. Dazwischengeschaltete Geräte wie Router von Drittanbietern und Ähnliches haben keine Möglichkeit, den Datenverkehr an unerwünschte Ziele umzuleiten. Sobald die Verbindung erfolgreich hergestellt wurde, sind Sie außerdem Teil des Netzwerks des Servers. Andere Server, Computer oder Geräte wie Drucker, die normalerweise nur im lokalen Netzwerk des Servers erreichbar wären, können nun ebenfalls über den VPN-Tunnel erreicht werden. Da jedoch nicht alle Daten durch einen verschlüsselten Tunnel gesendet werden müssen, ist es möglich, den VPN-Client so zu konfigurieren, dass nur ein definierter Teil der Anfragen durch den VPN-Tunnel gesendet wird. Der restliche Datenverkehr wird normal über das Internet abgewickelt.

In dieser Anleitung führen wir Sie durch die Schritte zur Einrichtung eines OpenVPN-Servers auf Ubuntu 18.04.

Voraussetzungen

Sie müssen Zugriff auf einen Ubuntu 18.04-Server haben, um Ihren OpenVPN-Dienst zu hosten, um diese Anleitung abzuschließen. Bevor Sie mit dieser Anleitung beginnen, müssen Sie außerdem einen Nicht-Root-Benutzer mit sudo-Rechten konfigurieren. Sie können Ihren Server ganz einfach installieren, indem Sie unserer Anleitung zur Einrichtung eines Ubuntu-Servers folgen.

Zusätzlich benötigen Sie einen separaten Computer, der als Zertifizierungsstelle (CA) fungiert. Technisch gesehen können Sie Ihren OpenVPN-Server oder Ihren lokalen Computer als Zertifizierungsstelle verwenden. Wir empfehlen dies jedoch nicht, da dies Ihr VPN für Sicherheitslücken anfällig macht. Gemäß der offiziellen OpenVPN-Dokumentation sollten Sie die Zertifizierungsstelle auf einem separaten Computer einrichten, der ausschließlich für das Importieren und Signieren von Zertifikatsanfragen vorgesehen ist. Wir gehen daher davon aus, dass sich Ihre Zertifizierungsstelle auf einem separaten Ubuntu 18.04-Server befindet, der ebenfalls über einen Nicht-Root-Benutzer mit sudo-Rechten und eine einfache Firewall verfügt. In dieser Anleitung werden alle Installations- und Konfigurationsschritte für jede der Installationen so einfach wie möglich gehalten. Sie können auch einen Blick auf unsere Anleitung zur Einrichtung eines OpenVPN-Servers unter Docker werfen.

Schritt 1 – OpenVPN und EasyRSA installieren

Aktualisieren Sie zunächst den Paketindex Ihres VPN-Servers und installieren Sie OpenVPN. Sie können OpenVPN mit apt installieren, da es in den Standard-Ubuntu-Repositories verfügbar ist:

Schritt 2: Erstellen einer Zertifizierungsstelle

Erstellen Sie eine einfache Zertifizierungsstelle (CA), um vertrauenswürdige Zertifikate für den OpenVPN-Server auszustellen. Laden Sie dazu die neueste Version von EasyRSA sowohl auf Ihren CA-Rechner als auch auf den OpenVPN-Server mit wget herunter. Um die neueste Version zu erhalten, rufen Sie die Releases-Seite des offiziellen EasyRSA-GitHub-Projekts auf, kopieren Sie den Download-Link für die Datei mit der Endung .tgz und fügen Sie ihn in den folgenden Befehl ein:

Entpacken Sie anschließend den Tarball:

 OpenVPN EasyRSA software

An diesem Punkt wurde die gesamte erforderliche Software erfolgreich auf Ihrem CA-Computer und Server installiert.

Schritt 3 – EasyRSA-Variablen konfigurieren und die CA erstellen

EasyRSA wird mit einer Konfigurationsdatei geliefert, die Sie bearbeiten können, um mit diesem Befehl eine Reihe von Variablen für Ihre CA zu definieren:

In dem Verzeichnis befindet sich eine Datei mit dem Namen vars.example. Erstellen Sie eine Kopie dieser Datei und nennen Sie die Kopie vars ohne Dateiendung:

Verwenden Sie Ihren bevorzugten Texteditor, um diese neue Datei zu öffnen:

Suchen Sie als Nächstes nach den Einstellungen, die Standardwerte für Felder neuer Zertifikate festlegen. Dies wird in etwa so aussehen:

Aktualisieren Sie diese Variablen nach Ihren Wünschen, wie unten gezeigt:

Speichern und schließen Sie die Datei, sobald Sie fertig sind. Der nächste Schritt besteht darin, das easyrsa-Skript aufzurufen und mit der Option init-pki auszuführen, um die Public-Key-Infrastruktur auf dem CA-Server zu initiieren:

easyrsa init-pki

Führen Sie als Nächstes den Befehl build-ca mit der Option nopass aus, damit Sie nicht bei jeder Interaktion mit Ihrer CA nach einem Passwort gefragt werden:

In der Ausgabe werden Sie aufgefordert, den Common Name für Ihre CA zu bestätigen:

 OpenVPN build-ca

Damit ist Ihre CA eingerichtet und bereit, Zertifikatsanfragen zu signieren.

Schritt 4 – Serverzertifikat, Schlüssel und Verschlüsselungsdateien generieren

Nachdem die CA bereit ist, können Sie den privaten Schlüssel und die Zertifikatsanfrage vom Server generieren und diese dann zur Signierung an die CA senden, um das erforderliche Zertifikat zu erstellen. Navigieren Sie zunächst in das EasyRSA-Verzeichnis auf dem OpenVPN-Server:

Führen Sie von dort aus das easyrsa-Skript mit der Option init-pki aus. Obwohl Sie diesen Befehl bereits auf dem CA-Computer ausgeführt haben, muss dieser Befehl auch hier ausgeführt werden. Das liegt daran, dass sich die PKI-Verzeichnisse des Servers und der CA voneinander unterscheiden:

Rufen Sie dann das easyrsa-Skript erneut auf, diesmal mit der Option gen-req, gefolgt vom generischen Namen des Computers’:

Dadurch wird ein privater Schlüssel für den Server und eine Zertifikatsanforderungsdatei namens server.req erstellt. Kopieren Sie den Serverschlüssel in das Verzeichnis /etc/openvpn/:

Übertragen Sie die Datei server.req mit einer sicheren Methode (wie z. B. SCP im folgenden Beispiel) auf Ihren CA-Computer:

Navigieren Sie als Nächstes zum EasyRSA-Verzeichnis auf Ihrem CA-Computer:

Verwenden Sie das easyrsa-Skript erneut, um die Datei server.req zu importieren, und fügen Sie deren Common Name nach dem Dateipfad hinzu:

Signieren Sie dann die Anfrage, indem Sie das easyrsa-Skript mit der Option sign-req ausführen, gefolgt vom Anfragetyp und dem Common Name. Stellen Sie bei der Zertifikatsanfrage des OpenVPN-Servers sicher, dass Sie den Anfragetyp „server“ verwenden:

Die Ausgabe fordert Sie auf, zu überprüfen, ob die Anfrage von einer vertrauenswürdigen Quelle stammt. Geben Sie yes ein und drücken Sie die Eingabetaste, um zu bestätigen. Bitte überprüfen Sie die unten gezeigten Details, um die Richtigkeit sicherzustellen. Bitte beachten Sie, dass diese Anfrage noch nicht passwortverifiziert wurde.

Fordern Sie den Betreff an und signieren Sie ihn als Serverzertifikat für 3650 Tage:

 OpenVPN sign certificate for server

Wenn Sie den CA-Schlüssel verschlüsselt haben, werden Sie an dieser Stelle nach dem Passwort gefragt. Verwenden Sie als Nächstes eine sichere Methode, um das signierte Zertifikat zurück auf Ihren VPN-Server zu übertragen:

Übertragen Sie die Datei ca.rt auf den Server, bevor Sie sich vom CA-Computer abmelden:

Melden Sie sich als Nächstes wieder an Ihrem OpenVPN-Server an und kopieren Sie die Dateien server.crt und ca.crt in Ihr Verzeichnis /etc/openvpn/:

Navigieren Sie anschließend in Ihr EasyRSA-Verzeichnis:

Geben Sie den folgenden Code ein, um einen starken Diffie-Hellman-Schlüssel zu erstellen, den Sie während des Schlüsselaustauschs verwenden können:

Wenn Sie fertig sind, generieren Sie eine HMAC-Signatur, um die TLS-Health-Check-Funktionalität des Servers zu verbessern:

Wenn der Befehl abgeschlossen ist, kopieren Sie die beiden neuen Dateien in das Verzeichnis /etc/openvpn/:

Auf diese Weise werden alle vom Server benötigten Zertifikate und Schlüsseldateien generiert. Jetzt können Sie das entsprechende Zertifikat und den Schlüssel erstellen, die der Client-Computer für den Zugriff auf den OpenVPN-Server verwenden wird.

Schritt 4 – Client-Zertifikat und Schlüsselpaar generieren

Als Nächstes erstellen wir einen Client-Schlüssel und mehrere Zertifikate. Wenn Sie mehrere Clients haben, können Sie diesen Vorgang für jeden Client wiederholen. Beachten Sie jedoch, dass Sie dem Skript für jeden Client einen eindeutigen Namenswert übergeben müssen. In diesem Tutorial nennen wir das erste Zertifikat/Schlüsselpaar client1. Erstellen Sie zunächst eine Verzeichnisstruktur in Ihrem Home-Verzeichnis, um Client-Zertifikate und Schlüsseldateien zu speichern:

Da Sie das Zertifikat/Schlüsselpaar und die Konfigurationsdatei des Clients aus Sicherheitsgründen in diesem Verzeichnis speichern, sollten Sie nun die Berechtigungen einschränken:

Navigieren Sie dann zurück zum EasyRSA-Verzeichnis und führen Sie das easyrsa-Skript mit den Optionen gen-req und nopass sowie dem generischen Namen des Clients aus:

Drücken Sie die Eingabetaste, um den Common Name zu bestätigen. Kopieren Sie danach die Datei client1.key in das zuvor erstellte Verzeichnis /client-configs/keys/:

Verwenden Sie als Nächstes eine sichere Methode, um die Datei client1.req auf Ihren CA-Computer zu übertragen:

Melden Sie sich an Ihrem CA-Computer an, navigieren Sie zum EasyRSA-Verzeichnis und importieren Sie die Zertifikatsanforderung:

import client.req

Signieren Sie dann, wie im vorherigen Schritt, die Anfrage auf dem Server. Aber dieses Mal müssen Sie den Client-Anfragetyp angeben:

Geben Sie bei der Aufforderung yes ein, um zu bestätigen, dass Sie die Zertifikatsanforderung signieren möchten und dass die Zertifikatsanforderung von einer vertrauenswürdigen Quelle stammt. Bitte geben Sie das Wort “yes” ein, um fortzufahren, oder geben Sie etwas anderes ein, um abzubrechen:

sign certificate

Wenn Sie den CA-Schlüssel verschlüsselt haben, werden Sie auch hier aufgefordert, das Passwort einzugeben. Dadurch wird eine Client-Zertifikatsdatei namens client1.crt erstellt. Übertragen Sie diese Datei zurück auf den Server:

Verbinden Sie sich wieder per SSH mit Ihrem OpenVPN-Server und kopieren Sie das Client-Zertifikat in das Verzeichnis / client-configs / keys /:

Kopieren Sie als Nächstes die Dateien ca.crt und ta.key in das Verzeichnis / client-configs / keys /:

Damit wurden alle Zertifikate und Schlüssel des Servers und des Clients generiert und in den entsprechenden Verzeichnissen auf dem Server gespeichert. Nun können Sie mit der Einrichtung von OpenVPN auf dem Server fortfahren.

 Schritt 5 – Konfigurieren des OpenVPN-Dienstes

Nachdem Sie die Client- und Serverzertifikate generiert haben, können Sie den OpenVPN-Dienst so konfigurieren, dass er diese Anmeldedaten verwendet. Kopieren Sie zunächst die OpenVPN-Beispielkonfigurationsdatei in Ihr Konfigurationsverzeichnis und entpacken Sie sie anschließend, um sie als Basis für die Einrichtung zu verwenden:

Öffnen Sie die Serverkonfigurationsdatei in Ihrem bevorzugten Texteditor:

Suchen Sie anschließend den HMAC-Teil, indem Sie nach dem Befehl tls-auth suchen:

Suchen Sie den Passwort-Teil, indem Sie nach der auskommentierten Passwort-Zeile suchen. Die AES-256-CBC-Verschlüsselung bietet ein gutes Verschlüsselungsniveau und wird gut unterstützt. Die Zeile sollte nicht auskommentiert sein, aber falls doch, löschen Sie das “;” davor:

Fügen Sie darunter einen Auth-Befehl hinzu, um den HMAC-Message-Digest-Algorithmus auszuwählen. SHA256 ist hierfür eine gute Wahl:

Suchen Sie als Nächstes die Zeile mit der dh-Anweisung, die die Diffie-Hellman-Parameter definiert. Aufgrund einiger neuerer Änderungen an EasyRSA kann der Dateiname des Diffie-Hellman-Schlüssels von dem in der Beispiel-Serverkonfigurationsdatei aufgeführten Dateinamen abweichen. Ändern Sie gegebenenfalls den hier aufgeführten Dateinamen, indem Sie 2048 löschen, um ihn an den Schlüssel aus dem vorherigen Schritt anzupassen:

Schließlich suchen Sie die Benutzer- und Gruppeneinstellungen und löschen Sie das “;” am Anfang jeder Zeile:

Bisher sollten die Änderungen, die Sie an der Beispieldatei server.conf vorgenommen haben, ausreichen, damit OpenVPN funktioniert.

Schritt 6 – Server-Netzwerkkonfiguration

Konfigurieren Sie die IP-Weiterleitung, um den Datenverkehr ordnungsgemäß durch das VPN zu leiten. Dies ist für die VPN-Funktionalität, die Ihr Server bereitstellt, unerlässlich:

Suchen Sie nach der auskommentierten Zeile, die net.ipv4.ip_forward festlegt. Entfernen Sie das Zeichen „#“ am Anfang der Zeile, um diese Einstellung zu aktivieren:

Speichern Sie die Datei und schließen Sie sie, wenn Sie fertig sind. Um die Datei einzulesen und die Werte für die aktuelle Sitzung zu übernehmen, geben Sie Folgendes ein:

sysctl -p

Fügen Sie als Nächstes die öffentliche Netzwerkschnittstelle Ihres Rechners hinzu:

Ihre öffentliche Schnittstelle ist die Zeichenfolge in der Ausgabe dieses Befehls, die auf das Wort „dev“ folgt. Dieses Ergebnis zeigt beispielsweise die Schnittstelle mit dem Namen ens3.

default ip route

Öffnen Sie die Datei /etc/ufw/before.rules, um die entsprechende Konfiguration hinzuzufügen:

Fügen Sie im oberen Bereich der Datei die unten hervorgehobenen Zeilen hinzu, um die Standardrichtlinie für die POSTROUTING-Kette in der nat-Tabelle festzulegen und den gesamten aus dem VPN kommenden Datenverkehr zu maskieren. Ersetzen Sie ens3 in der folgenden Zeile -A POSTROUTING durch die Schnittstelle, die Sie im obigen Befehl ermittelt haben:

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Als Nächstes müssen Sie UFW anweisen, standardmäßig auch weitergeleitete Pakete zuzulassen. Öffnen Sie dazu die Datei /etc/default/ufw:

Suchen Sie darin nach der Richtlinie DEFAULT_FORWARD_POLICY und ändern Sie den Wert von DROP auf ACCEPT:

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Passen Sie als Nächstes die Firewall an, um den Datenverkehr zu OpenVPN zu aktivieren. Wenn Sie den Port und das Protokoll in der Datei /etc/openvpn/server.conf nicht geändert haben, müssen Sie den UDP-Datenverkehr für Port 1194 freigeben. Wenn Sie den Port und/oder das Protokoll geändert haben, ersetzen Sie die Werte durch die hier ausgewählten. Falls Sie beim Befolgen des vorbereitenden Tutorials vergessen haben, den SSH-Port hinzuzufügen, fügen Sie ihn hier ebenfalls hinzu:

Deaktivieren und aktivieren Sie UFW nach dem Hinzufügen dieser Regeln erneut, um es neu zu starten und die Änderungen aus allen geänderten Dateien zu laden:

ufw commands

Herzlichen Glückwunsch, Ihr Server ist nun so konfiguriert, dass er den OpenVPN-Datenverkehr korrekt verarbeitet!

Fazit

Wenn Sie diese Anleitung bis zum Ende befolgt haben, können Sie jetzt sicher im Internet surfen. Sie können Ihre Identität, Ihren Standort und Ihren Datenverkehr vor neugierigen Blicken schützen.

Viel Spaß beim Computing!

 

 

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.