How to Setup OpenVPN for Android | OpenVPN Server Configuration Correctly!

Einführung

Ein Virtual Individual Network (VPN) ermöglicht Ihnen die Nutzung nicht vertrauenswürdiger Netzwerke, als ob Sie sich in einem privaten Netzwerk befinden würden. Es bietet Ihnen die Möglichkeit, mit Ihrem Smartphone oder Laptop sicher auf das Net zuzugreifen, wenn Sie mit einem nicht vertrauenswürdigen Netzwerk, wie dem WLAN in einem Hotel oder Café, verbunden sind.

In Kombination mit HTTPS-Verbindungen können Sie mit diesem Setup Ihre WLAN-Logins und Transaktionen sichern. Sie können geografische Beschränkungen und Zensuren umgehen und Ihren Ort und jeglichen unverschlüsselten HTTP-Verkehr vom nicht vertrauenswürdigen Netzwerk abschirmen.

OpenVPN ist eine vollständige Open up-Source-VPN-Lösung mit Ship Layer Security (TLS), die eine breite Palette von Konfigurationen ermöglicht. In diesem Tutorial richten Sie OpenVPN auf einem Ubuntu twenty.04-Server ein und konfigurieren es dann and then, dass es von einem Client-Estimator aus zugänglich ist.

Anmerkung:
Wenn Sie planen, einen OpenVPN-Server auf einem DigitalOcean-Droplet einzurichten, sollten Sie sich bewusst sein, dass wir, wie viele Hosting-Anbieter, Zusatzgebühren für das Überschreiten des Bandbreitenlimits verrechnen. Bedenken Sie aus diesem Grund, wie viel Datenverkehr Ihr Server verarbeiten kann.

Siehe diese Seite für weitere Informationen.

Voraussetzungen

Um dieser Anleitung zu folgen, benötigen Sie:

  • Einen Ubuntu twenty.04-Server mit einem Nicht-root-Benutzer mit sudo-Berechtigungen und eine aktivierte Firewall. Um dies einzurichten, können Sie unserem Tutorial Ersteinrichtung des Servers unter Ubuntu 20.04 folgen. In diesem Leitfaden wird dieser als
    OpenVPN-Server
    bezeichnet.
  • Einen separaten Ubuntu twenty.04-Server, der als individual Zertifizierungsstelle („Certificate Authority“, CA) eingerichtet ist. Diesen bezeichnen wird in diesem Leitfaden als
    CA-Server. Um das einzurichten, können Sie nach Ausführung der Schritte aus dem Leitfaden Ersteinrichtung des Servers auf diesem Server den Schritten 1 bis 3 unseres Leitfadens Einrichten und Konfigurieren einer Zertifizierungsstelle (CA) unter Ubuntu 20.04 folgen.

Anmerkung:
Obwohl es technisch möglich ist, Ihren OpenVPN-Server oder Ihren lokalen Reckoner als Ihre CA zu verwenden, wird dies nicht empfohlen, da es Ihr VPN für einige Sicherheitslücken öffnet. Gemäß der offiziellen OpenVPN-Dokumentation sollten Sie Ihre CA auf einem eigenständigen Reckoner ablegen, der für das Importieren und Signieren von Zertifikatanforderungen bestimmt ist. Aus diesem Grund wird in diesem Leitfaden davon ausgegangen, dass sich Ihre CA auf einem separaten Ubuntu-20.04-Server befindet, der auch einen Nicht-root-Benutzer mit sudo-Rechten und eine einfache Firewall aufweist.

Zusätzlich benötigen Sie einen Client-Computer, den Sie für die Verbindung mit Ihrem OpenVPN-Server verwenden. In diesem Leitfaden nennen wir ihn
OpenVPN-Client. Für die Zwecke dieses Tutorials wird empfohlen, dass Sie Ihren lokalen Computer als OpenVPN-Client verwenden.

Wenn diese Voraussetzungen erfüllt sind, können Sie mit der Einrichtung und Konfiguration eines OpenVPN-Servers unter Ubuntu twenty.04 beginnen.

Anmerkung:
Bitte beachten Sie, dass Sie später in diesem Leitfaden beim Übertragen von Dateien zwischen den Servern Schwierigkeiten haben könnten, wenn Sie beim Konfigurieren der Server die Passwort-Authentifizierung deaktivieren. Um dieses Problem zu lösen, könnten Sie auf jedem Server die Passwort-Authentifizierung neu aktivieren. Alternativ könnten Sie für jeden Server ein SSH-Schlüsselpaar erstellen, dann den öffentlichen SSH-Schlüssel des OpenVPN-Servers zur Datei
authorized_keys
des CA-Computers hinzufügen und umgekehrt. Anweisungen zur Ausführung dieser Lösungen finden Sie unter So richten Sie SSH-Schlüssel unter Ubuntu 20.04 ein.

Schritt i — Installieren von OpenVPN und Piece of cake-RSA

Der erste Schritt in diesem Tutorial ist die Installation von OpenVPN und Like shooting fish in a barrel-RSA. Like shooting fish in a barrel-RSA ist ein Verwaltungs-Tool mit öffentlicher Schlüsselinfrastruktur („public primal infrastructure“, PKI), das Sie auf dem OpenVPN-Server zum Erzeugen einer Zertifikatanforderung verwenden, die Sie dann auf dem CA-Server verifizieren und signieren.

Aktualisieren Sie zunächst den Paketindex Ihres OpenVPN-Servers und installieren Sie OpenVPN und Easy-RSA. Beide Pakete sind in Standard-Repositorys von Ubuntu verfügbar, sodass Sie
apt
für die Installation verwenden können:

        
          
  1. sudo apt update
  2. sudo apt install openvpn like shooting fish in a barrel-rsa

Als Nächstes müssen Sie ein neues Verzeichnis auf dem OpenVPN-Server als Nicht-root-Benutzer namens
~/easy-rsa
erstellen:

        
          
  1. mkdir ~/easy-rsa

Jetzt müssen Sie einen Symlink aus dem
easyrsa-Skript erstellen, den das Paket in das gerade von Ihnen erstellte Verzeichnis
~/easy-rsa
installiert hat:

        
          
  1. ln -south /usr/share/like shooting fish in a barrel-rsa/* ~/easy-rsa/

Anmerkung:
Während andere Leitfäden Sie möglicherweise anweisen, dice Dateien des
easy-rsa-Pakets in Ihr PKI-Verzeichnis zu kopieren, verfolgt dieses Tutorial einen Symlink-Ansatz. Infolgedessen werden alle Aktualisierungen des
easy-rsa-Pakets automatisch in den Skripten Ihrer PKI wiedergegeben.

Stellen Sie abschließend sicher, dass der Eigentümer des Verzeichnisses Ihr sudo Nicht-root-Benutzer ist und schränken Sie mit
chmod
den Zugriff für diesen Benutzer ein:

        
          
  1. sudo chown sammy ~/like shooting fish in a barrel-rsa
  2. chmod 700 ~/easy-rsa

Sobald diese Programme installiert sind und an dice richtigen Orte auf Ihrem System verschoben wurden, besteht der nächste Schritt darin, eine öffentliche Schlüsselinfrastruktur (PKI) auf dem OpenVPN-Server zu erstellen, damit Sie TLS-Zertifikate für Clients und andere Server, die sich mit Ihrem VPN verbinden werden, anfordern und verwalten können.

Schritt ii — Erstellen einer PKI für OpenVPN

Bevor Sie den privaten Schlüssel und das Zertifikat Ihres OpenVPN-Servers erstellen können, müssen Sie ein lokales Verzeichnis der öffentlichen Schlüsselinfrastruktur auf Ihrem OpenVPN-Server erstellen. Sie verwenden dieses Verzeichnis, um die Zertifikatanforderungen des Servers und der Clients zu verwalten, anstatt sie direkt auf Ihrem CA-Server zu erstellen.

Um ein PKI-Verzeichnis auf Ihrem OpenVPN-Server zu erstellen, müssen Sie eine Datei namens
vars
mit einigen Standardwerten füllen. Zuerst werden Sie
cd
in das Verzeichnis
easy-rsa, dann werden Sie dice Datei
vars
mit nano oder Ihrem bevorzugten Texteditor erstellen und bearbeiten:

        
          
  1. cd ~/easy-rsa
  2. nano vars

Sobald dice Datei geöffnet ist, fügen Sie die folgenden beiden Zeilen ein:

~/like shooting fish in a barrel-rsa/vars

        set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"
        
      

Das sind die einzigen Zeilen, dice Sie in dieser
vars-Datei auf Ihrem OpenVPN-Server benötigen, da er nicht als Zertifizierungsstelle verwendet wird. Diese Zeilen stellen sicher, dass Ihre privaten Schlüssel und Zertifikatanforderungen so konfiguriert sind, dass sie moderne Elliptische-Kurven-Kryptografie („Elliptic Curve Cryptography“, ECC) nutzen, um Schlüssel und sichere Signaturen für Ihre Clients und OpenVPN-Server zu erzeugen.

Wenn Sie Ihre OpenVPN- und CA-Server für die Verwendung von ECC konfigurieren, können Customer und Server beim Versuch, einen gemeinsamen symmetrischen Schlüssel zu erstellen, Algorithmen für elliptische Kurven für den Austausch verwenden. Die Verwendung von ECC für einen Schlüsselaustausch ist wesentlich schneller als die Verwendung von einfachem Diffie-Hellman mit dem klassischen RSA-Algorithmus, da dice Zahlen viel kleiner und die Berechnungen schneller sind.

Hintergrund:
Wenn Clients sich mit OpenVPN verbinden, verwenden sie asymmetrische Verschlüsselung (auch bekannt als öffentlicher/privater Schlüssel), um einen TLS-Handshake auszuführen. Wenn der Server und Clients jedoch verschlüsselten VPN-Verkehr übertragen, verwenden sie symmetrische Verschlüsselung, die auch als geteilte Schlüssel-Verschlüsselung bekannt ist.

Im Vergleich zu asymmetrischer Verschlüsselung ist der Rechenaufwand bei symmetrischer Verschlüsselung viel geringer: Dice verwendeten Zahlen sind wesentlich kleiner und moderne CPUs integrieren Anweisungen für dice Ausführung optimierter symmetrischer Verschlüsselungsoperationen. Für den Wechsel von asymmetrischer zu symmetrischer Verschlüsselung verwenden der OpenVPN-Server und der Client den Algorithmus Elliptic Curve Diffie-Hellman (ECDH), um then schnell wie möglich einen geteilten geheimen Schlüssel zu akzeptieren.

Sobald Sie die
vars-Datei gefüllt haben, können Sie mit der Erstellung des PKI-Verzeichnisses fortfahren. Führen Sie dazu das Skript
easyrsa
mit der Pick
init-pki
aus. Obwohl Sie diesen Befehl als Teil der Voraussetzungen bereits auf dem CA-Server ausgeführt haben, ist es notwendig, diesen auch hier auszuführen, da Ihr OpenVPN-Server und der CA-Server carve up PKI-Verzeichnisse haben:

        
          
  1. ./easyrsa init-pki

Beachten Sie, dass auf Ihrem OpenVPN-Server keine Zertifizierungsstelle erstellt werden muss. Ausschließlich Ihr CA-Server ist für die Validierung und Signierung von Zertifikaten zuständig. Die PKI auf Ihrem VPN-Server dient nur als praktischer und zentralisierter Ort zum Speichern von Zertifikatanforderungen und öffentlichen Zertifikaten.

Nachdem Sie Ihre PKI auf dem OpenVPN-Server initialisiert haben, können Sie zum nächsten Schritt, dem Erstellen einer OpenVPN-Server-Zertifikatanforderung und eines privaten Schlüssels, übergehen.

Schritt 3 — Erstellen einer OpenVPN-Server-Zertifikatanforderung und eines privaten Schlüssels

Nachdem Ihr OpenVPN-Server nun alle Voraussetzungen installiert hat, besteht der nächste Schritt darin, auf Ihrem OpenVPN-Server einen privaten Schlüssel und eine Zertifikatsignieranforderung („Document Signing Request“, CSR) zu erstellen. Danach übertragen Sie die Anforderung zum Signieren an Ihre CA, sodass das erforderliche Zertifikat erstellt wird. Sobald Sie ein signiertes Zertifikat haben, übertragen Sie es zurück zum OpenVPN-Server und installieren es für dice Nutzung durch den Server.

Navigieren Sie zunächst als Ihr Nicht-root-Benutzer zum
~/easy-rsa-Verzeichnis auf Ihrem OpenVPN-Server:

        
          
  1. cd ~/easy-rsa

Nun rufen Sie das
easyrsa
mit der Selection
gen-req
auf, gefolgt von einem geläufigen Namen, dem Common Name (CN), für den Computer. Sie können den CN frei auswählen, aber es kann hilfreich sein, eine aussagekräftige Bezeichnung zu wählen. In diesem Tutorial ist der CN des OpenVPN-Servers
server. Achten Sie darauf, auch dice Option
nopass
einzubeziehen. Wenn das nicht geschieht, wird dice Anforderungsdatei passwortgeschützt, was später zu Berechtigungsproblemen führen könnte.

Anmerkung:
Wenn Sie hier einen anderen Namen als
server
wählen, müssen Sie einige der nachstehenden Anweisungen anpassen. Wenn Sie beispielsweise die erzeugten Dateien in das Verzeichnis
/etc/openvpn
kopieren, müssen Sie die richtigen Namen einfügen. Sie müssen auch später die Datei
/etc/openvpn/server.conf
ändern, um auf dice richtigen
.crt– und
.key-Dateien zu verweisen.

        
          
  1. ./easyrsa gen-req server nopass
        
          

Output

Common Name (eg: your user, host, or server proper noun) [server]: Keypair and document request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

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

        
          
  1. sudo cp /abode/sammy/like shooting fish in a barrel-rsa/pki/individual/server.cardinal /etc/openvpn/server/

Nach dem Ausführen dieser Schritte haben Sie erfolgreich einen privaten Schlüssel für Ihren OpenVPN-Server erstellt. Sie haben auch eine Zertifikatsignieranforderung für den OpenVPN-Server generiert. Die CSR ist nun zur Signierung durch Ihre CA bereit. Im nächsten Abschnitt dieses Tutorials lernen Sie, wie eine CSR mit dem privaten Schlüssel Ihres CA-Servers signiert wird.

Schritt iv — Signieren der Zertifikatanforderung des OpenVPN-Servers

Im vorherigen Schritt haben Sie eine Zertifikatsignieranforderung (CSR) und einen privaten Schlüssel für den OpenVPN-Server erstellt. Nun muss der CA-Server von dem
server-Zertifikat erfahren und es validieren. Sobald die CA das Zertifikat validiert und an den OpenVPN-Server zurückleitet, können Clients, die Ihrer CA vertrauen, auch dem OpenVPN-Server vertrauen.

Verwenden Sie als Nicht-root-Benutzer SCP oder eine andere Übertragungsmethode auf dem OpenVPN-Server, um die Zertifikatanforderung
server.req
zur Signierung an den CA-Server zu kopieren:

        
          
  1. scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

Wenn Sie der Voraussetzung Einrichten und Konfigurieren einer Zertifizierungsstelle (CA) unter Ubuntu twenty.04 gefolgt sind, besteht der nächste Schritt darin, sich beim
CA-Server
als Nicht-root-Benutzer anzumelden, den Sie für die Verwaltung Ihrer CA erstellt haben. Sie verwenden
cd
für das Verzeichnis
~/easy-rsa, in dem Sie Ihren PK erstellt haben, und importieren dann dice Zertifikatanforderung mit dem Skript
easyrsa:

        
          
  1. cd ~/piece of cake-rsa
  2. ./easyrsa import-req /tmp/server.req server
        
          

Output

. . . The request has been successfully imported with a short proper noun of: server Y'all may now utilise this name to perform signing operations on this asking.

Signieren Sie dice Anforderung, indem Sie das
easyrsa-Skript mit der Option
sign-req
ausführen, gefolgt vom Anforderungstyp und dem geläufigen Namen. Der Anforderungstyp kann entweder
customer
oder
server
sein. Da wir mit der Zertifikatanforderung des OpenVPN-Servers arbeiten, muss der Anforderungstyp
server
verwendet werden:

        
          
  1. ./easyrsa sign-req server server

In der Ausgabe werden Sie zur Überprüfung aufgefordert, ob die Anfrage von einer vertrauenswürdigen Quelle stammt. Geben Sie
yes
ein und drücken Sie
ENTER
zur Bestätigung:

        
          

Output

Y'all are about to sign the post-obit document. Please check over the details shown below for accurateness. Note that this request has non been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Asking subject, to exist signed as a server document for 3650 days: subject= commonName = server Type the give-and-take 'yes' to continue, or any other input to abort. Confirm request details: aye . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

Beachten Sie, dass Sie an dieser Stelle zur Eingabe Ihres Passworts aufgefordert werden, falls Sie Ihren privaten CA-Schlüssel verschlüsselt haben.

Popular:   Difference Between Ringworm and Athlete’s Foot

Nach Abschluss dieser Schritte haben Sie die Zertifikatanforderung des OpenVPN-Servers mit dem privaten Schlüssel des CA-Servers signiert. Die resultierende Datei
server.crt
enthält den öffentlichen Verschlüsselungs-Schlüssel des OpenVPN-Servers sowie eine Signatur des CA-Servers. Der Sinn der Signatur besteht darin, jedem, der dem CA-Server vertraut, mitzuteilen, dass er auch dem OpenVPN-Server vertrauen kann, wenn er sich mit ihm verbindet.

Um die Konfiguration der Zertifikate abzuschließen, kopieren Sie die Dateien
server.crt
und
ca.crt
vom CA-Server auf den OpenVPN-Server:

        
          
  1. scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
  2. scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

Zurück auf Ihrem OpenVPN-Server kopieren Sie die Dateien nun von
/tmp
nach
/etc/openvpn/server:

        
          
  1. sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Nun ist Ihr OpenVPN-Server fast bereit, Verbindungen zu akzeptieren. Als Nächstes führen Sie einige zusätzliche Schritte aus, um die Sicherheit des Servers zu erhöhen.

Schritt 5 — Konfigurieren von kryptografischem OpenVPN-Material

Für eine Extraportion Sicherheit fügen wir einen zusätzlichen gemeinsamen geheimen Schlüssel hinzu, den der Server und alle Clients mit der Anweisung
tls-crypt
des OpenVPN verwenden. Diese Pick wird genutzt, um das TLS-Zertifikat zu verdecken, das bei der Erstverbindung eines Servers und Clients verwendet wird. Sie wird auch vom OpenVPN-Server dazu genutzt, schnelle Kontrollen bei eingehenden Paketen durchzuführen: Wenn ein Paket mit dem gemeinsamen Schlüssel signiert ist, wird es vom Server verarbeitet. Wenn es nicht signiert ist, weiß der Server, dass es aus einer nicht vertrauenswürdigen Quelle stammt und kann es verwerfen, ohne es zusätzlich entschlüsseln zu müssen.

Diese Option hilft sicherzustellen, dass Ihr OpenVPN-Server in der Lage ist, mit nicht authentifiziertem Datenverkehr, Port-Scans und Deprival-of-Service-Angriffen umzugehen, die Serverressourcen binden können. Auch dice Identifizierung des Netzwerkverkehrs mit OpenVPN wird hierdurch erschwert.

Um den gemeinsamen
tls-catacomb-Schlüssel zu generieren, führen Sie Folgendes auf dem OpenVPN-Server im Verzeichnis
~/easy-rsa
aus:

        
          
  1. cd ~/piece of cake-rsa
  2. openvpn --genkey --hugger-mugger ta.cardinal

Das Ergebnis ist eine Datei namens
ta.key. Kopieren Sie diese in das Verzeichnis
/etc/openvpn/server/:

        
          
  1. sudo cp ta.key /etc/openvpn/server

Nachdem diese Dateien auf dem OpenVPN-Server vorhanden sind, können Sie Client-Zertifikate und Schlüsseldateien für Ihre Benutzer erstellen, dice Sie für dice Verbindung mit dem VPN verwenden.

Schritt six — Generieren eines Customer-Zertifikats und eines Schlüsselpaars

Sie können zwar einen privaten Schlüssel und eine Zertifikatanforderung auf Ihrem Client-Reckoner erstellen und dann zwecks Signierung zur CA senden, aber dieser Leitfaden beschreibt einen Prozess zum Generieren der Zertifikatanforderung auf dem Server. Der Vorteil besteht darin, dass wir ein Skript erstellen können, das automatisch Client-Konfigurationsdateien generiert, dice alle benötigten Schlüssel und Zertifikate enthalten. Damit können Sie vermeiden, dass Schlüssel, Zertifikate und Konfigurationsdateien an Clients übertragen werden müssen, und der Prozess des Verbindungsaufbaus zum VPN wird gestrafft.

In diesem Leitfaden generieren wir einen einzelnen Client-Schlüssel und ein Zertifikatpaar. Wenn Sie mehr als einen Client haben, können Sie diesen Prozess für jeden Client wiederholen. Bitte beachten Sie allerdings, dass Sie für jeden Client einen eindeutigen Namenswert an das Skript übergeben müssen. In diesem Tutorial wird das erste Zertifikat/Schlüsselpaar als
client1
bezeichnet.

Beginnen Sie, indem Sie eine Verzeichnisstruktur in Ihrem Stammverzeichnis erstellen, um das Client-Zertifikat und die Schlüsseldateien zu speichern:

        
          
  1. mkdir -p ~/client-configs/keys

Da Sie das Zertifikat/die Schlüsselpaare Ihrer Clients und die Konfigurationsdateien in diesem Verzeichnis speichern, sollten Sie als Sicherheitsmaßnahme die Berechtigungen jetzt sperren:

        
          
  1. chmod -R 700 ~/customer-configs

Navigieren Sie als Nächstes zurück zum EasyRSA-Verzeichnis und führen Sie das
easyrsa-Skript mit den Optionen
gen-req
und
nopass
zusammen mit dem geläufigen Namen für den Client aus:

        
          
  1. cd ~/easy-rsa
  2. ./easyrsa gen-req client1 nopass

Drücken Sie
ENTER, um den geläufigen Namen zu bestätigen. Kopieren Sie dann die Datei
client1.key
in das zuvor erstellte Verzeichnis
~/client-configs/keys/:

        
          
  1. cp pki/individual/client1.primal ~/customer-configs/keys/

Als Nächstes übertragen Sie die Datei
client1.req
mit einer sicheren Methode auf Ihren CA-Server:

        
          
  1. scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

Melden Sie sich nun bei Ihrem CA-Server an. Navigieren Sie dann zum EasyRSA-Verzeichnis und importieren Sie die Zertifikatanforderung:

        
          
  1. cd ~/like shooting fish in a barrel-rsa
  2. ./easyrsa import-req /tmp/client1.req client1

Signieren Sie dann dice Anforderung, wie Sie dies im vorherigen Schritt für den Server getan haben. Dieses Mal muss jedoch der Anforderungstyp
client
angegeben werden:

        
          
  1. ./easyrsa sign-req client client1

Geben Sie bei der Eingabeaufforderung
yep
ein, um zu bestätigen, dass Sie beabsichtigen, die Zertifikatanforderung zu signieren, und dass sie aus einer vertrauenswürdigen Quelle stammt:

        
          

Output

Type the word 'yes' to continue, or any other input to abort. Confirm request details: yep

Wenn Sie Ihren CA-Schlüssel verschlüsselt haben, werden Sie erneut zur Eingabe Ihres Passworts aufgefordert.

Damit wird ein Client-Zertifikat namens
client1.crt
erstellt. Übertragen Sie diese Datei wieder auf den Server:

        
          
  1. scp pki/issued/client1.crt sammy@your_server_ip:/tmp

Zurück auf Ihrem OpenVPN-Server kopieren Sie das Client-Zertifikat in das Verzeichnis
~/client-configs/keys/:

        
          
  1. cp /tmp/client1.crt ~/client-configs/keys/

Kopieren Sie dann auch die Dateien
ca.crt
und
ta.key
in das Verzeichnis
~/customer-configs/keys/
und legen Sie die entsprechenden Berechtigungen für Ihren sudo-Benutzer fest:

        
          
  1. cp ~/easy-rsa/ta.key ~/client-configs/keys/
  2. sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
  3. sudo chown sammy.sammy ~/client-configs/keys/*

Damit wurden alle Zertifikate des Servers und Clients sowie alle Schlüssel generiert und in den entsprechenden Verzeichnissen auf Ihrem OpenVPN-Server gespeichert. Es gibt noch einige Aktionen, die mit diesen Dateien ausgeführt werden müssen, aber diese werden in einem späteren Schritt beschrieben. Vorerst können Sie mit der Konfiguration des OpenVPN fortfahren.

Schritt 7 — Konfigurieren von OpenVPN

Wie viele andere weit verbreitete Open-Source-Tools bietet auch OpenVPN eine Vielzahl von Konfigurationsoptionen an, mit denen Sie Ihren Server Ihren spezifischen Bedürfnissen anpassen können. In diesem Abschnitt erhalten Sie Anweisungen zum Einrichten eines OpenVPN auf der Grundlage einer der Beispielkonfigurationsdateien, die in der Dokumentation dieser Software enthalten sind.

Kopieren Sie zunächst die Beispieldatei
server.conf
als Ausgangspunkt für Ihre eigene Konfigurationsdatei:

        
          
  1. sudo cp /usr/share/dr./openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
  2. sudo gunzip /etc/openvpn/server/server.conf.gz

Öffnen Sie dice neue Datei zum Bearbeiten mit dem Texteditor Ihrer Wahl. Wir verwenden in unserem Beispiel nano:

        
          
  1. sudo nano /etc/openvpn/server/server.conf

Wir müssen einige Zeilen in dieser Datei ändern. Finden Sie zunächst den
HMAC-Abschnitt der Konfiguration, indem Sie nach der Anweisung
tls-auth
suchen. Diese Zeile sollte unkommentiert sein. Kommentieren Sie sie aus, indem Sie am Anfang der Zeile ein
;
einfügen. Fügen Sie dann hinter diese eine neue Zeile hinzu, dice nur den Wert
tls-crypt ta.key
enthält:

/etc/openvpn/server/server.conf

        
          ;tls-auth ta.primal 0 # This file is hush-hush
          tls-crypt ta.cardinal
        
      

Als Nächstes lokalisieren Sie den Abschnitt über kryptografische Chiffren, indem Sie nach den
zip-Zeilen suchen. Der Standardwert ist auf
AES-256-CBC
eingestellt. Die Chiffrierung mit
AES-256-GCM
bietet jedoch ein höheres Niveau an Verschlüsselung und Leistung und wird von modernen OpenVPN-Clients gut unterstützt. Wir kommentieren den Standardwert aus, indem wir am Anfang dieser Zeile ein
;-Zeichen einfügen. Nach dieser fügen wir eine weitere Zeile hinzu, die den aktualisierten Wert von
AES-256-GCM
enthält:

/etc/openvpn/server/server.conf

        
          ;cipher AES-256-CBC
          nix AES-256-GCM
        
      

Fügen Sie direkt hinter dieser Zeile eine
auth-Anweisung hinzu, um den Digestalgorithmus der HMAC-Nachricht auszuwählen. Dafür ist
SHA256
eine gute Wahl:

/etc/openvpn/server/server.conf

        
          auth SHA256
        
      

Suchen Sie als Nächstes nach der Zeile mit der Anweisung
dh, die Diffie-Hellman-Parameter definiert. Da wir alle Zertifikate so konfiguriert haben, dass sie die Elliptische-Kurven-Kryptografie verwenden, ist eine Diffie-Hellman-Seed-Datei nicht erforderlich. Kommentieren Sie dice bestehende Zeile aus, die wie
dh dh2048.pem
oder
dh dh.pem
aussieht. Der Dateiname für den Diffie-Hellman-Schlüssel kann anders sein als die in der Beispielkonfigurationsdatei des Servers. Fügen Sie dann nach dieser eine Zeile mit dem Inhalt
dh none
hinzu:

/etc/openvpn/server/server.conf

        
          ;dh dh2048.pem
          dh none
        
      

Als Nächstes möchten wir, dass OpenVPN nach seinem Start ohne Berechtigungen läuft. Daher müssen wir ihm sagen, dass es mit einem Benutzer
nobody** und einer Gruppe nobody** läuft. Um dies zu aktivieren, finden Sie die Zeilen mit
user nobody
und
group nogroup
und heben Sie die Auskommentierung auf, indem Sie das
;-Zeichen am Anfang jeder Zeile entfernen:

/etc/openvpn/server/server.conf

        user nobody group nogroup
        
      

(Optional) DNS-Änderungen mithilfe von Push button übertragen, um den gesamten Verkehr durch das VPN umzuleiten

Mit den obigen Einstellungen wird die VPN-Verbindung zwischen Ihrem Client und Server erstellt, die Verbindungen werden allerdings nicht zur Nutzung des Tunnels gezwungen. Wenn Sie das VPN verwenden möchten, um Ihren gesamten Client-Verkehr über das VPN zu leiten, sollten Sie wahrscheinlich einige zusätzliche Einstellungen mithilfe von Push an die Client-Computer übertragen.

Finden Sie hierzu dice Zeile mit
push "redirect-gateway def1 featherbed-dhcp"
und kommentieren Sie sie aus. Dadurch wird Ihr Client angewiesen, seinen gesamten Verkehr über Ihren OpenVPN-Server umzuleiten. Beachten Sie, dass die Aktivierung dieser Funktionalität Verbindungsprobleme mit anderen Netzwerkdiensten wie SSH verursachen kann:

/etc/openvpn/server/server.conf

        push button "redirect-gateway def1 bypass-dhcp"
        
      

Direkt unter dieser Zeile finden Sie den Abschnitt
dhcp-selection. Entfernen Sie erneut das
;
zu Beginn der beiden Zeilen, um sie auszukommentieren:

/etc/openvpn/server/server.conf

        push "dhcp-selection DNS
          208.67.222.222" push "dhcp-selection DNS
          208.67.220.220"
        
      

Diese Zeilen weisen Ihren Client an, die kostenlosen OpenDNS-Resolver unter den aufgelisteten IP-Adressen zu verwenden. Wenn Sie andere DNS-Resolver bevorzugen, können Sie diese an Stelle der hervorgehobenen IPs einsetzen.

Dadurch werden die Clients bei der Neukonfigurierung ihrer DNS-Einstellungen unterstützt, damit der VPN-Tunnel als Standard-Gateway verwendet werden kann.

(Optional) Anpassung des Ports und Protokolls

Standardmäßig verwendet der OpenVPN-Server Port
1194
und das UDP-Protokoll, um Customer-Verbindungen zu akzeptieren. Wenn Sie aufgrund von restriktiven Netzwerkumgebungen, in denen sich Ihre Clients eventuell befinden, einen anderen Port verwenden müssen, können Sie die Pick
port
ändern. Wenn Sie auf Ihrem OpenVPN-Server keine Web-Inhalte hosten, ist Port
443
eine gängige Wahl, da er üblicherweise von den Firewall-Regeln zugelassen wird.

Um OpenVPN so zu ändern, dass es auf Port 443 lauscht, öffnen Sie die Datei
server.conf
und suchen Sie die Zeile, die wie folgt aussieht:

/etc/openvpn/server/server.conf

        port 1194
        
      

Bearbeiten Sie sie entsprechend, damit der Port 443 ist:

/etc/openvpn/server/server.conf

        # Optional! port
          443
        
      

Häufig ist das Protokoll auch auf diesen Port beschränkt. Finden Sie in diesem Fall dice
proto-Zeile unterhalb der
port-Zeile und ändern Sie das Protokoll von
udp
zu
tcp:

/etc/openvpn/server/server.conf

        # Optional! proto
          tcp
        
      

Wenn Sie das Protokoll
tatsächlich
in TCP ändern, müssen Sie den Wert der Anweisung
explicit-get out-notify
von
i
auf

ändern, da diese Anweisung nur von UDP verwendet wird. Wenn dies während der Verwendung von TCP nicht befolgt wird, treten beim Starten des OpenVPN-Dienstes Fehler auf.

Finden Sie die Zeile
explicit-exit-notify
am Ende der Datei und ändern Sie den Wert auf
:

/etc/openvpn/server/server.conf

        # Optional! explicit-leave-notify
          
        
      

Wenn Sie keinen anderen Port und kein anderes Protokoll verwenden müssen, ist es am besten, diese Einstellungen in ihren Standardeinstellungen zu belassen.

(Optional) Auf nicht standardmäßige Anmeldedaten verweisen

Wenn Sie zuvor beim Befehl
./easyrsa gen-req server
einen anderen Namen gewählt haben, ändern Sie die Zeilen
cert
und
fundamental
in der Konfigurationsdatei
server.conf, damit sie auf die entsprechenden Dateien
.crt
und
.key
verweisen. Wenn Sie den Standardnamen,
server, verwendet haben, ist dies bereits korrekt festgelegt:

/etc/openvpn/server/server.conf

        cert
          server.crt central
          server.key
        
      

Wenn Sie dies abgeschlossen haben, speichern und schließen Sie die Datei.

Sie haben nun dice Konfiguration der allgemeinen Einstellungen Ihres OpenVPN abgeschlossen. Im nächsten Schritt passen wir die Netzwerkoptionen des Servers an.

Schritt 8 — Anpassen der Netzwerkkonfiguration des OpenVPN-Servers

Es gibt einige Aspekte der Netzwerkkonfiguration des Servers, die optimiert werden müssen, damit OpenVPN den Verkehr korrekt durch das VPN leiten kann. Als Erstes muss die
IP-Weiterleitung
angepasst werden, eine Methode zur Bestimmung, wohin der IP-Verkehr geleitet werden sollte. Diese Änderung ist für dice von Ihrem Server bereitgestellte VPN-Funktionalität von entscheidender Bedeutung.

Um die standardmäßige IP-Weiterleitungseinstellung Ihres OpenVPN-Servers anzupassen, öffnen Sie die Datei
/etc/sysctl.conf
mit
nano
oder Ihrem bevorzugten Editor:

        
          
  1. sudo nano /etc/sysctl.conf

Fügen Sie dann am Ende der Datei folgende Zeile hinzu:

/etc/sysctl.conf

        internet.ipv4.ip_forward = one
        
      

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Um dice Datei zu lesen und die Werte für die aktuelle Sitzung zu laden, geben Sie Folgendes ein:

        
          
  1. sudo sysctl -p
        
          

Output

net.ipv4.ip_forward = 1

Jetzt kann Ihr OpenVPN-Server eingehenden Datenverkehr von einem Ethernet-Gerät auf ein anderes weiterleiten. Diese Einstellung stellt sicher, dass der Server den Datenverkehr von Clients, dice sich über die virtuelle VPN-Schnittstelle verbinden, über seine anderen physischen Ethernet-Geräte hinausleiten kann. Diese Konfiguration leitet den gesamten Webverkehr von Ihrem Customer über dice IP-Adresse Ihres Servers und die öffentliche IP-Adresse Ihres Clients wird effektiv verborgen.

Popular:   Spartan Gaming VR setup and server

Im nächsten Schritt müssen Sie einige Firewall-Regeln konfigurieren, um sicherzustellen, dass der Verkehr zu und von Ihrem OpenVPN-Server korrekt fließt.

Schritt 9 — Konfigurieren der Firewall

Bis hierher haben Sie OpenVPN auf Ihrem Server installiert, konfiguriert und dice Schlüssel und Zertifikate generiert, die für Ihren Customer für den Zugriff auf das VPN benötigt werden. Sie haben OpenVPN jedoch noch keine Anweisungen gegeben, wohin eingehender Webverkehr von Clients gesendet werden soll. Sie können festlegen, wie der Server mit dem Client-Verkehr umgehen soll, indem Sie einige Firewall-Regeln und Leitungskonfigurationen festlegen.

Wenn Sie den Voraussetzungen am Anfang dieses Tutorials gefolgt sind, sollte
ufw
bereits installiert sein und auf Ihrem Server laufen. Um OpenVPN über dice Firewall zuzulassen, müssen Sie Tarnung aktivieren, ein iptables-Konzept, das Network Address Translation (NAT) bei Bedarf bereitstellt, um Client-Verbindungen korrekt weiterzuleiten.

Bevor dice Firewall-Konfigurationsdatei geöffnet wird, um Masquerading-Regeln hinzuzufügen, müssen Sie zunächst die öffentliche Netzwerkschnittstelle Ihres Computers finden. Dazu geben Sie Folgendes ein:

        
          
  1. ip route list default

Ihre öffentliche Schnittstelle ist die in der Ausgabe dieses Befehls enthaltene Zeichenfolge, die dem Wort „dev“ folgt. Dieses Ergebnis zeigt beispielsweise dice im Folgenden hervorgehobene Schnittstelle
eth0
an:

        
          

Output

default via 159.65.160.one dev eth0 proto static

Wenn Sie die mit Ihrer Standardroute verknüpfte Schnittstelle gefunden haben, öffnen Sie die Datei
/etc/ufw/before.rules, um die entsprechende Konfiguration hinzuzufügen:

        
          
  1. sudo nano /etc/ufw/before.rules

UFW-Regeln werden typischerweise mit dem Befehl
ufw
hinzugefügt. Regeln, die jedoch in der Datei
before.rules
aufgeführt sind, werden gelesen und implementiert, bevor die herkömmlichen UFW-Regeln geladen werden. Fügen Sie im oberen Teil der Datei die nachstehend hervorgehobenen Zeilen hinzu. Damit wird die Standardrichtlinie für die
POSTROUTING-Kette in der Tabelle
nat
festgelegt und für jeden vom VPN eingehenden Verkehr ein Masquerading ausgeführt. Denken Sie daran,

eth0

in der nachstehenden Zeile
-A POSTROUTING
durch die im obigen Befehl angegebene Schnittstelle zu ersetzen:

/etc/ufw/before.rules

        # # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: #   ufw-before-input #   ufw-before-output #   ufw-before-forward #
          # Offset OPENVPN RULES
          # NAT table rules
          *nat
          :POSTROUTING Accept [0:0]
          # Allow traffic from OpenVPN customer to
          eth0
            (change to the interface you discovered!)
          -A POSTROUTING -southward 10.viii.0.0/8 -o
          eth0
            -j MASQUERADE
          COMMIT
          # Finish OPENVPN RULES
          # Don't delete these required lines, otherwise there will exist errors *filter . . .
        
      

Wenn Sie fertig sind, speichern und schließen Sie dice Datei.

Als Nächstes müssen Sie UFW mitteilen, weitergeleitete Pakete standardmäßig zuzulassen. Dazu öffnen Sie die Datei
/etc/default/ufw:

        
          
  1. sudo nano /etc/default/ufw

Lokalisieren Sie dort die Anweisung
DEFAULT_FORWARD_POLICY
und ändern Sie den Wert von
DROP
auf
Have:

/etc/default/ufw

        DEFAULT_FORWARD_POLICY="Accept"
        
      

Wenn Sie fertig sind, speichern und schließen Sie dice Datei.

Passen Sie dann die Firewall an, um den Verkehr zu OpenVPN zuzulassen. Wenn Sie den Port und das Protokoll in der Datei
/etc/openvpn/server.conf
nicht geändert haben, müssen Sie den UDP-Verkehr auf Port
1194
öffnen. Wenn Sie den Port und/oder das Protokoll modifiziert haben, ersetzen Sie die hier ausgewählten Werte.

Sollten Sie vergessen haben, während der Ausführung des Tutorials in den Voraussetzungen den SSH-Port hinzuzufügen, fügen Sie ihn hier hinzu:

        
          
  1. sudo ufw allow 1194 /udp
  2. sudo ufw allow OpenSSH

Deaktivieren und reaktivieren Sie nach Hinzufügen dieser Regeln die UFW, um sie neu zu starten. Laden Sie die Änderungen von allen von Ihnen modifizierten Dateien:

        
          
  1. sudo ufw disable
  2. sudo ufw enable

Ihr Server ist jetzt so konfiguriert, dass der OpenVPN-Verkehr korrekt abgewickelt werden kann. Wenn die Firewall-Regeln eingerichtet sind, können wir den OpenVPN-Dienst auf dem Server starten.

Schritt ten — Starten des OpenVPN

OpenVPN läuft als
Systemd-Dienst, sodass wir
systemctl
verwenden können, um es zu verwalten. Wir konfigurieren OpenVPN, um beim Booten zu starten, sodass Sie sich jederzeit mit Ihrem VPN verbinden können, solange Ihr Server läuft. Aktivieren Sie dazu den OpenVPN-Dienst, indem Sie ihn zu
systemctl
hinzufügen:

        
          
  1. sudo systemctl -f enable openvpn-server@server.service

Starten Sie dann den OpenVPN-Dienst:

        
          
  1. sudo systemctl get-go openvpn-server@server.service

Überprüfen Sie nochmals mit dem folgenden Befehl, ob der OpenVPN-Dienst aktiv ist. Sie sollten in der Ausgabe
active (running)
sehen:

        
          
  1. sudo systemctl status openvpn-server@server.service
        
          

Output

● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 fifteen:39:59 UTC; 6s agone Docs: homo:openvpn(eight) https://community.openvpn.internet/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: ane.0M CGroup: /system.slice/organization-openvpn\x2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --condition /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 xv:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

Wir haben nun dice serverseitige Konfiguration für OpenVPN abgeschlossen. Als Nächstes konfigurieren Sie Ihren Client-Computer und verbinden sich mit dem OpenVPN-Server.

Schritt 11 — Erstellen der Customer-Konfigurationsinfrastruktur

Das Erstellen von Konfigurationsdateien für OpenVPN-Clients kann etwas komplex sein, da jeder Customer seine eigene Konfiguration haben muss, die sich mit den in der Konfigurationsdatei des Servers aufgeführten Einstellungen decken muss. Anstatt eine einzige Konfigurationsdatei zu erstellen, die nur auf einem Client verwendet werden kann, wird in diesem Schritt ein Prozess zur Erstellung einer Customer-Konfigurationsinfrastruktur beschrieben, mit der Sie dynamisch Konfigurationsdateien generieren können. Sie erstellen zunächst eine „Ground“-Konfigurationsdatei und dann ein Skript, mit dem Sie je nach Bedarf eindeutige Client-Konfigurationsdateien, Zertifikate und Schlüssel generieren können.

Beginnen Sie, indem Sie ein neues Verzeichnis anlegen, in dem Sie Client-Konfigurationsdateien in dem zuvor erstellten Verzeichnis
customer-configs
speichern:

        
          
  1. mkdir -p ~/client-configs/files

Kopieren Sie dann ein Client-Konfigurationsbeispiel als Basiskonfiguration in das Verzeichnis
client-configs:

        
          
  1. cp /usr/share/physician/openvpn/examples/sample-config-files/client.conf ~/client-configs/base of operations.conf

Öffnen Sie diese neue Datei mit
nano
oder Ihrem bevorzugten Texteditor:

        
          
  1. nano ~/client-configs/base of operations.conf

Lokalisieren Sie die Anweisung
remote. Damit wird der Client auf Ihre OpenVPN-Serveradresse verwiesen – die öffentliche IP-Adresse Ihres OpenVPN-Servers. Wenn Sie beschlossen haben, den Port zu ändern, auf dem der OpenVPN-Server lauscht, müssen Sie außerdem
1194
auf den von Ihnen ausgewählten Port ändern:

~/client-configs/base.conf

        . . . # The hostname/IP and port of the server. # You lot tin have multiple remote entries # to load balance between the servers. remote
          your_server_ip
          1194
          . . .
        
      

Vergewissern Sie sich, dass das Protokoll mit dem Wert übereinstimmt, den Sie in der Serverkonfiguration verwenden:

~/client-configs/base.conf

        proto
          udp
        
      

Als Nächstes kommentieren Sie dice Anweisungen
user
und
group
aus, indem Sie das
;-Zeichen am Anfang jeder Zeile entfernen:

~/customer-configs/base of operations.conf

        # Downgrade privileges later initialization (non-Windows only) user nobody group nogroup
        
      

Lokalisieren Sie die Anweisungen, dice
ca,
cert
und
key
festlegen. Kommentieren Sie diese Anweisungen aus, da Sie die Zertifikate und Schlüssel in der Datei selbst hinzufügen werden:

~/client-configs/base.conf

        # SSL/TLS parms. # See the server config file for more # description. It'south best to use # a separate .crt/.central file pair # for each client. A single ca # file can be used for all clients.
          ;ca ca.crt
          ;cert customer.crt
          ;central customer.fundamental
        
      

Kommentieren Sie in ähnlicher Weise die Anweisung
tls-auth
aus, da Sie
ta.fundamental
direkt in die Customer-Konfigurationsdatei einfügen werden (und der Server zur Nutzung von
tls-crypt
eingerichtet ist):

~/customer-configs/base.conf

        # If a tls-auth fundamental is used on the server # then every client must too have the key.
          ;tls-auth ta.central 1
        
      

Verwenden Sie dieselben Einstellungen für
cipher
und
auth, die Sie in der Datei
/etc/openvpn/server/server.conf
festgelegt haben:

~/client-configs/base.conf

        
          cipher AES-256-GCM
          auth SHA256
        
      

Fügen Sie dann die Anweisung
central-direction
an einer beliebigen Stelle in der Datei hinzu. Sie
müssen
diesen Wert auf „one“ festlegen, damit das VPN auf dem Client-Computer korrekt funktioniert:

~/client-configs/base.conf

        
          key-direction ane
        
      

Fügen Sie abschließend ein paar
auskommentierte
Zeilen hinzu, um verschiedene Methoden zu bearbeiten, die Linux-basierte VPN-Clients zur DNS-Auflösung verwenden. Sie fügen zwei ähnliche, aber separate Sets auskommentierte Zeilen hinzu. Das erste Set ist für Clients, die für dice Verwaltung von DNS
nicht
systemd-resolved
verwenden. Diese Clients verlassen sich auf das Dienstprogramm
resolvconf, um DNS-Informationen für Linux-Clients zu aktualisieren.

~/client-configs/base.conf

        
          ; script-security 2
          ; up /etc/openvpn/update-resolv-conf
          ; downwards /etc/openvpn/update-resolv-conf
        
      

Fügen Sie jetzt ein weiteres Zeilenset für Clients hinzu, die für DNS-Auflösung
systemd-resolved
verwenden:

~/client-configs/base.conf

        
          ; script-security 2
          ; up /etc/openvpn/update-systemd-resolved
          ; down /etc/openvpn/update-systemd-resolved
          ; down-pre
          ; dhcp-option DOMAIN-Road .
        
      

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Später in Schritt 13 – Installieren der Client-Konfiguration dieses Tutorials lernen Sie, wie DNS-Auflösung bei Linux-Clients funktioniert und welcher Abschnitt auskommentiert werden muss.

Als Nächstes erstellen wir ein Skript, das Ihre Basiskonfiguration mit dem entsprechenden Zertifikat, Schlüssel und den Verschlüsselungsdateien kompiliert und platzieren dice generierte Konfiguration dann in das Verzeichnis
~/client-configs/files. Öffnen Sie eine neue Datei namens
make_config.sh
im Verzeichnis
~/client-configs:

        
          
  1. nano ~/client-configs/make_config.sh

Fügen Sie der Datei den folgenden Inhalt hinzu:

~/customer-configs/make_config.sh

        #!/bin/bash  # First argument: Client identifier  KEY_DIR=~/client-configs/keys OUTPUT_DIR=~/customer-configs/files BASE_CONFIG=~/customer-configs/base of operations.conf  true cat ${BASE_CONFIG} \     <(echo -e '<ca>') \     ${KEY_DIR}/ca.crt \     <(echo -east '</ca>\n<cert>') \     ${KEY_DIR}/.crt \     <(echo -e '</cert>\n<key>') \     ${KEY_DIR}/${i}.key \     <(echo -e '</key>\northward<tls-crypt>') \     ${KEY_DIR}/ta.key \     <(echo -e '</tls-crypt>') \     > ${OUTPUT_DIR}/${ane}.ovpn
        
      

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Bevor Sie fortfahren, markieren Sie diese Datei als ausführbar, indem Sie Folgendes eingeben:

        
          
  1. chmod 700 ~/customer-configs/make_config.sh

Dieses Skript erstellt eine Kopie der von Ihnen angelegten Datei
base.conf, sammelt alle für Ihren Customer erstellten Zertifikate und Schlüsseldateien, extrahiert ihre Inhalte, fügt sie der Kopie der Basiskonfigurationsdatei an und exportiert alle Inhalte in eine neue Client-Konfigurationsdatei. Das bedeutet, dass alle erforderlichen Informationen an einem Ort gespeichert werden und die Konfiguration des Clients, die Zertifikate und Schlüsseldateien nicht getrennt verwaltet werden müssen. Der Vorteil besteht darin, dass Sie, falls Sie einmal einen Client hinzufügen müssen, einfach dieses Skript ausführen können, um rasch dice neue Konfigurationsdatei zu erstellen. Dabei wird sichergestellt, dass alle wichtigen Informationen an einem einzigen, einfach zugänglichen Ort gespeichert werden.

Bitte beachten Sie, dass bei jedem Hinzufügen eines neuen Clients neue Schlüssel und Zertifikate für ihn generiert werden müssen, bevor Sie dieses Skript ausführen und dice entsprechende Konfigurationsdatei generieren können. Im nächsten Schritt können Sie die Verwendung dieses Skripts üben.

Schritt 12 — Generieren von Client-Konfigurationen

Durch Befolgung der Anweisungen im Leitfaden haben Sie in Schritt half-dozen ein Client-Zertifikat und einen Schlüssel namens
client1.crt
bzw.
client1.primal
erstellt. Sie können eine Konfigurationsdatei für diese Anmeldedaten generieren, indem Sie in das Verzeichnis
~/client-configs
wechseln und das am Ende des vorherigen Schrittes erstellte Skript ausführen:

        
          
  1. cd ~/client-configs
  2. ./make_config.sh client1

Dadurch wird eine Datei namens
client1.ovpn
in Ihrem Verzeichnis
~/client-configs/files
erstellt:

        
          
  1. ls ~/client-configs/files
        
          

Output

client1.ovpn

Sie müssen diese Datei auf das Gerät übertragen, das Sie als Client verwenden wollen. Das könnte beispielsweise Ihr lokaler Computer oder ein mobiles Gerät sein.

Dice genauen Anwendungen, die zur Durchführung dieser Übertragung eingesetzt werden, hängen zwar vom Betriebssystem Ihres Geräts und Ihren persönlichen Präferenzen ab, aber die Verwendung von SFTP (SSH File Transfer Protocol) oder SCP (Secure Copy) im Backend ist ein zuverlässiges und sicheres Verfahren. Damit werden die VPN-Authentifizierungsdateien Ihres Clients über eine verschlüsselte Verbindung übertragen.

Hier sehen Sie das Beispiel eines SFTP-Befehls, den Sie von Ihrem lokalen Estimator (macOS oder Linux) ausführen können. Damit wird die Datei

client1.ovpn

kopiert, dice wir im letzten Schritt in Ihrem Stammverzeichnis erstellt haben:

        
          
  1. sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

Hier sind einige Tools und Tutorials für die sichere Übertragung von Dateien vom OpenVPN-Server auf einen lokalen Computer:

  • WinSCP
  • Nutzung von SFTP zur sicheren Übertragung von Dateien mit einem Remote-Server
  • Nutzung von Filezilla zur sicheren Übertragung und Verwaltung von Dateien auf Ihrem VPS

Schritt xiii — Installieren der Customer-Konfiguration

Dieser Abschnitt behandelt die Installation eines Client-VPN-Profils auf Windows, macOS, Linux, iOS und Android. Keine dieser Client-Anleitungen bauen aufeinander auf. Daher können Sie je nach verwendetem Gerät direkt zur entsprechenden Anleitung navigieren.

Dice OpenVPN-Verbindung lid den gleichen Namen wie dice von Ihnen benannte Datei
.ovpn. In diesem Tutorial bedeutet dies, dass dice Verbindung den Namen
client1.ovpn
erhält, was sich mit der von Ihnen erzeugten ersten Client-Datei deckt.

Popular:   Nakama Server Runtime Code Project Setup using Lua

Windows

Installation

Laden Sie die OpenVPN-Client-Anwendung für Windows von der OpenVPN-Downloadseite herunter. Wählen Sie das entsprechende Installationsprogramm für Ihre Windows-Version aus.

Anmerkung: OpenVPN benötigt für die Installation Administratorrechte.

Nach der Installation von OpenVPN kopieren Sie die Datei
.ovpn
auf:

        C:\Program Files\OpenVPN\config
        
      

Beim Starten von OpenVPN lokalisiert es automatisch das Profil und stellt es zur Verfügung.

Sie müssen OpenVPN bei jedem Einsatz, auch durch Administratorkonten, als Administrator ausführen. Wenn Sie nicht bei jeder Verwendung des VPN mit der rechten Maustaste klicken und
Als Administrator ausführen
auswählen möchten, müssen Sie von einem Administratorkonto aus eine Voreinstellung vornehmen. Das bedeutet auch, dass Standardbenutzer zur Verwendung von OpenVPN das Passwort des Administrators eingeben müssen. Andererseits können Standardbenutzer nur dann eine korrekte Verbindung mit dem Server herstellen, wenn die OpenVPN-Anwendung auf dem Client Administrationsrechte hat. Somit sind die höheren Berechtigungen notwendig.

Um die OpenVPN-Anwendung so einzustellen, dass sie immer als Administrator ausgeführt wird, klicken Sie mit der rechten Maustaste auf das entsprechende Verknüpfungssymbol und gehen zu
Eigenschaften. Klicken Sie im unteren Teil der Registerkarte
Kompatibilität
auf die Schaltfläche
Einstellungen für alle Benutzer ändern. Aktivieren Sie im neuen Fenster
Programm als Administrator ausführen.

Verbindungsherstellung

Jedes Mal, wenn Sie die OpenVPN-GUI starten, fragt Windows Sie, ob das Programm Änderungen an Ihrem Figurer vornehmen darf. Klicken Sie auf
Ja. Durch das Starten der OpenVPN-Customer-Anwendung wird nur das Applet in die Taskleiste eingefügt, damit Sie je nach Bedarf die Verbindung mit dem VPN herstellen und trennen können; es stellt die VPN-Verbindung nicht tatsächlich her.

Sobald OpenVPN gestartet wird, stellen Sie eine Verbindung her, indem Sie zum Taskleisten-Applet navigieren und mit der rechten Maustaste auf das OpenVPN-Applet-Symbol klicken. Dadurch wird das Kontextmenü geöffnet. Wählen Sie
client1
oben im Menü (hierbei handelt es sich um Ihr
client1.ovpn-Profil) und anschließend
Verbinden.

Ein Statusfenster wird geöffnet und zeigt die Protokollausgabe an, während die Verbindung hergestellt wird. Sobald der Client verbunden ist, erscheint eine Meldung.

Trennen Sie die Verbindung mit dem VPN in der gleichen Weise: Gehen Sie zum Taskleisten-Applet, klicken Sie mit der rechten Maustaste auf das OpenVPN-Applet-Symbol, wählen Sie das Customer-Profil und klicken Sie auf
Verbindung trennen.

macOS

Installation

Tunnelblick ist ein kostenloser Open-Source-OpenVPN-Client für macOS. Sie können das neueste Datenträgerabbild von der Tunnelblick-Downloadseite herunterladen. Doppelklicken Sie auf dice heruntergeladene Datei
.dmg
und befolgen Sie die Aufforderungen zur Installation.

Am Ende des Installationsprozesses fragt Tunnelblick Sie, ob Sie Konfigurationsdateien haben. Antworten Sie
Ich habe Konfigurationsdateien
und lassen Sie Tunnelblick den Vorgang beenden. Öffnen Sie ein Finder-Fenster und doppelklicken Sie auf
client1.ovpn. Tunnelblick installiert das Client-Profil. Administratorrechte sind erforderlich.

Verbindungsherstellung

Starten Sie Tunnelblick, indem Sie auf das Tunnelblick-Symbol im Ordner
Anwendungen
doppelklicken. Nach dem Starten von Tunnelblick befindet sich oben rechts am Bildschirm in der Menüleiste ein Tunnelblick-Symbol zur Steuerung von Verbindungen. Klicken Sie auf das Symbol und dann auf den Menüpunkt
Connect client1, um die VPN-Verbindung herzustellen.

Linux

Installation

Wenn Sie Linux verwenden, gibt es eine Vielzahl von Tools, die Sie je nach Distribution verwenden können. Ihre Desktop-Umgebung oder Ihr Fenstermanager enthält möglicherweise auch Verbindungs-Utilitys.

Die universellste Art der Verbindungsherstellung besteht jedoch darin, einfach dice OpenVPN-Software zu verwenden.

Unter Ubuntu oder Debian können Sie sie wie auf dem Server installieren, indem Sie Folgendes eingeben:

        
          
  1. sudo apt update
  2. sudo apt install openvpn

Unter CentOS können Sie dice EPEL-Repositorys aktivieren und dann installieren, indem Sie Folgendes eingeben:

        
          
  1. sudo dnf install epel-release
  2. sudo dnf install openvpn

Konfigurieren von Clients, dice
systemd-resolved
verwenden

Ermitteln Sie zuerst, ob Ihr System
systemd-resolved
verwendet, um DNS-Auflösung zu bearbeiten, indem Sie dice Datei
/etc/resolv.conf
überprüfen:

        
          
  1. cat /etc/resolv.conf
        
          

Output

# This file is managed past man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

Wenn Ihr System and then konfiguriert ist, dass für DNS-Auflösung
systemd-resolved
verwendet wird, lautet die IP-Adresse nach der Selection
nameserver
127.0.0.53. Es sollte in der Datei auch Kommentare geben (wie der angezeigten Ausgabe), die erklären, wie
systemd-resolved
die Datei verwaltet. Wenn Sie eine andere IP-Adresse haben als
127.0.0.53, dann nutzt Ihr System
systemd-resolved
wahrscheinlich nicht und Sie können mit dem nächsten Abschnitt zum Konfigurieren von Linux-Clients fortfahren, die stattdessen ein Skript
update-resolv-conf
haben.

Um diese Clients zu unterstützen, installieren Sie zuerst das Paket
openvpn-systemd-resolved. Es bietet Skripts, die
systemd-resolved
dazu zwingen, den VPN-Server für die DNS-Auflösung zu verwenden.

        
          
  1. sudo apt install openvpn-systemd-resolved

Nachdem das Paket installiert ist, konfigurieren Sie den Client so, dass er es verwendet und alle DNS-Abfragen über dice VPN-Schnittstelle sendet. Öffnen Sie die VPN-Datei des Clients:

        
          
  1. nano client1.ovpn

Heben Sie jetzt dice Auskommentarierung der folgenden Zeilen, dice Sie zuvor hinzugefügt haben, auf:

client1.ovpn

        script-security 2 upward /etc/openvpn/update-systemd-resolved downwardly /etc/openvpn/update-systemd-resolved down-pre dhcp-option DOMAIN-ROUTE .
        
      

Konfigurieren von Clients, die
update-resolv-conf
verwenden

Wenn Ihr System nicht
systemd-resolved
verwendet, um DNS zu verwalten, überprüfen Sie, ob Ihre Distribution ein Skript
/etc/openvpn/update-resolv-conf
enthält:

        
          
  1. ls /etc/openvpn
        
          

Output

update-resolv-conf

Wenn Ihr Customer die Datei
update-resolv-conf
enthält, bearbeiten Sie als Nächstes die OpenVPN-Client-Konfigurationsdatei, die Sie zuvor übertragen haben:

        
          
  1. nano client1.ovpn

Heben Sie die Auskommentierung der drei Zeilen, die Sie hinzugefügt haben, um die DNS-Einstellungen anzupassen, auf:

client1.ovpn

        script-security two up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf
        
      

Wenn Sie CentOS verwenden, ändern Sie dice Anweisung
group
von
nogroup
auf
nobody, um sie an dice verfügbaren Gruppen der Distribution anzugleichen:

client1.ovpn

        grouping
          nobody
        
      

Speichern und schließen Sie die Datei.

Verbindungsherstellung

Jetzt können Sie eine Verbindung zum VPN herstellen, indem Sie mit dem Befehl
openvpn
auf die Client-Konfigurationsdatei zeigen:

        
          
  1. sudo openvpn --config client1.ovpn

Dies sollte Sie mit Ihrem VPN verbinden.

Anmerkung:
Wenn Ihr Customer
systemd-resolved
zum Verwalten von DNS verwendet, überprüfen Sie, ob die Einstellungen korrekt angewendet werden, indem Sie den Befehl
systemd-resolve --condition
wie folgt ausführen:

          
            
  1. systemd-resolve --condition tun0

Sie sollten eine Ausgabe wie dice folgende sehen:

          
            

Output

Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

Wenn Sie die IP-Adressen der DNS-Server, die Sie auf dem OpenVPN-Server konfiguriert haben, zusammen mit der
~.-Einstellung für
DNS Domain
in der Ausgabe sehen, dann haben Sie Ihren Customer richtig so konfiguriert, dass er die DNS-Auflösung des VPN-Servers verwendet. Sie können auch überprüfen, ob Sie DNS-Abfragen über das VPN senden, indem Sie eine Site wie DNS leak exam.com verwenden.

iOS

Installation

Suchen Sie im iTunes App Store nach OpenVPN Connect, der offiziellen iOS OpenVPN-Client-Anwendung, und installieren Sie sie. Um Ihre iOS-Customer-Konfiguration auf das Gerät zu übertragen, schließen Sie es direkt an einen Calculator an.

Der Vorgang zum Abschließen der Übertragung mit iTunes wird hier beschrieben. Öffnen Sie iTunes auf dem Computer und klicken Sie auf
iPhone
>
Apps. Scrollen Sie nach unten zum Abschnitt
File Sharing
und klicken Sie auf die OpenVPN-App. Das leere Fenster auf der rechten Seite,
OpenVPN-Dokumente, dient zum Freigeben von Dateien. Ziehen Sie dice Datei
.ovpn
in das Fenster OpenVPN-Dokumente.

Starten Sie jetzt die OpenVPN-App auf dem iPhone. Sie erhalten eine Benachrichtigung, dass ein neues Profil zum Import bereit ist. Tippen Sie auf das grüne Pluszeichen, um es zu importieren.

Die OpenVPN iOS-App zeigt ein neues Profil an, das zum Import bereit ist
Verbindung
wird hergestellt

OpenVPN kann jetzt mit dem neuen Profil verwendet werden. Starten Sie die Verbindung, indem Sie dice Gustation
Connect
in die Position
On
schieben. Trennen Sie die Verbindung, indem Sie dieselbe Gustation in die Position
Off
schieben.

Anmerkung: Der VPN-Switch unter
Einstellungen
kann nicht zur Verbindung mit dem VPN verwendet werden. Wenn Sie es versuchen, erhalten Sie eine Mitteilung, dice Verbindung nur mit der OpenVPN-App herzustellen.

Die mit dem VPN verbundene OpenVPN iOS-App

Android

Installation

Öffnen Sie den Google Play Store. Suchen und installieren Sie Android OpenVPN Connect, dice offizielle Android OpenVPN-Client-Anwendung.

Sie können das Profil
.ovpn
übertragen, indem Sie das Android-Gerät per USB an Ihren Computer anschließen und dice Datei kopieren. Wenn Sie einen SD-Kartenleser haben, können Sie auch die SD-Karte des Geräts entfernen, das Profil auf sie kopieren und dann die Karte wieder in das Android-Gerät einlegen.

Starten Sie die OpenVPN-App und tippen Sie auf das Menü
FILE, um das Profil zu importieren.

Die Menüauswahl für den Import des Profils in der OpenVPN-App für Android

Navigieren Sie dann zum Speicherort des Profils (im Screenshot wird
/storage/emulated/0/openvpn
verwendet) und wählen Sie Ihre Datei
.ovpn
aus. Tippen Sie auf die Schaltfläche
IMPORT, um das Importieren dieses Profils zu beenden.

Die OpenVPN-App für Android, die das zu importierende VPN-Profil auswählt

Verbindung
wird hergestellt Sobald das Profil hinzugefügt wurde, sehen Sie einen Bildschirm wie diesen:

Die OpenVPN-App für Android mit dem neu hinzugefügten Profil

Tippen Sie zum Verbinden auf die Umschalttaste in der Nähe des Profils, das Sie verwenden möchten. Sie sehen Echtzeitdaten zu Ihrer Verbindung sowie zu dem über Ihren OpenVPN-Server geleiteten Datenverkehr:
Die OpenVPN-App für Android, die mit dem VPN verbunden ist

Zum Trennen der Verbindung tippen Sie einfach erneut auf die Umschalttaste oben links. Sie werden aufgefordert, zu bestätigen, dass Sie die Verbindung zu Ihrem VPN trennen möchten.

Schritt 14 — Testen Ihrer VPN-Verbindung (optional)

Anmerkung:
Diese Methode zum Testen Ihrer VPN-Verbindung funktioniert nur dann, wenn Sie sich im Schritt seven bei der Bearbeitung der Datei
server.conf
für OpenVPN dazu entschieden haben, den gesamten Verkehr über das VPN zu leiten.

Sobald alles installiert ist, wird durch eine einfache Überprüfung bestätigt, dass alles ordnungsgemäß funktioniert. Öffnen Sie einen Browser, ohne dass eine VPN-Verbindung aktiviert ist, und rufen Sie DNSLeakTest auf.

Dice Site gibt die von Ihrem Internetdienstanbieter zugewiesene IP-Adresse zurück und zeigt, wie Sie dem Balance der Welt erscheinen. Um Ihre DNS-Einstellungen über dieselbe Website zu überprüfen, klicken Sie auf
Erweiterter Test. Dann erfahren Sie, welche DNS-Server Sie verwenden.

Verbinden Sie nun den OpenVPN-Client mit dem VPN Ihres Droplets und aktualisieren Sie den Browser. Jetzt sollte eine völlig andere IP-Adresse (die Ihres VPN-Servers) angezeigt werden. So sehen Sie für die Welt aus. Erneut werden mit
Erweiterter Test
von DNSLeakTest Ihre DNS-Einstellungen überprüft, und es wird bestätigt, dass Sie jetzt die von Ihrem VPN per Push übertragenen DNS-Resolver verwenden.

Schritt fifteen — Sperren von Client-Zertifikaten

Gelegentlich müssen Sie möglicherweise ein Customer-Zertifikat sperren, um den weiteren Zugriff auf den OpenVPN-Server zu verhindern.

Folgen Sie dazu dem Beispiel im Abschnitt
Sperren eines Zertifikats
im voraussetzenden Tutorial Erstellen und Konfigurieren einer Zertifizierungsstelle unter Ubuntu twenty.04.

Sobald Sie ein Zertifikat für einen Client mit diesen Anweisungen widerrufen haben, müssen Sie dice generierte Datei
crl.pem
in das Verzeichnis
/etc/openvpn/server
ihres OpenVPN-Servers kopieren:

        
          
  1. sudo cp /tmp/crl.pem /etc/openvpn/server/

Öffnen Sie als Nächstes dice OpenVPN-Serverkonfigurationsdatei:

        
          
  1. sudo nano /etc/openvpn/server/server.conf

Fügen Sie am Ende der Datei die Option
crl-verify
hinzu, mit der der OpenVPN-Server angewiesen wird, die Zertifikatsperrliste zu überprüfen, die wir bei jedem Verbindungsversuch erstellt haben:

/etc/openvpn/server/server.conf

        crl-verify crl.pem
        
      

Speichern und schließen Sie dice Datei.

Starten Sie zum Abschluss OpenVPN neu, um die Zertifikatsperre zu implementieren:

        
          
  1. sudo systemctl restart openvpn-server@server.service

Der Client sollte mit den alten Anmeldedaten keine Verbindung mehr zum Server herstellen können.

Um weitere Clients zu sperren, gehen Sie wie folgt vor:

  1. Sperren Sie das Zertifikat mit dem Befehl
    ./easyrsa revoke
    client_name
  2. Generieren Sie eine neue CRL
  3. Übertragen Sie die neue Datei
    crl.pem
    auf Ihren OpenVPN-Server und kopieren Sie sie in das Verzeichnis
    /etc/openvpn/server/, um die alte Liste zu überschreiben
  4. Starten Sie den OpenVPN-Dienst neu.

Mit diesem Vorgang können Sie alle zuvor für Ihren Server ausgestellten Zertifikate sperren.

Zusammenfassung

Sie sollten nun über ein voll funktionsfähiges virtuelles privates Netzwerk verfügen, das auf Ihrem OpenVPN-Server läuft. Sie können im Net surfen und Inhalte herunterladen, ohne sich Sorgen machen zu müssen, dass böswillige Akteure Ihre Aktivitäten verfolgen.

Sie können noch verschiedene weitere Schritte ausführen, um Ihr OpenVPN anzupassen. Beispielsweise können Sie Ihren Client and so konfigurieren, dass er sich automatisch mit dem VPN verbindet oder client-spezifische Regeln und Zugriffsrichtlinien konfigurieren. Konsultieren Sie für diese und andere Anpassungen des OpenVPN die offizielle OpenVPN-Dokumentation.

Um weitere Clients zu konfigurieren, müssen Sie nur den Schritten
half dozen
und
11 – 13
für jedes zusätzliche Gerät folgen. Um den Zugriff auf Clients zu sperren, führen Sie einfach Schritt
15
aus.

How to Setup OpenVPN for Android | OpenVPN Server Configuration Correctly!

Source: https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-an-openvpn-server-on-ubuntu-20-04-de