GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie ein VPN mit OpenVPN unter Ubuntu 18.04 ein und konfigurieren es

Ein VPN ist ein virtuelles privates Netzwerk, mit dem Sie auch von einem nicht vertrauenswürdigen Netzwerk aus auf das Internet oder bestimmte Dienste zugreifen können. Im Grunde ist es so, als wären Sie physisch mit einem privaten Netzwerk verbunden:Sie können beispielsweise auf Ihr Bankkonto zugreifen oder Zahlungen vornehmen, ohne befürchten zu müssen, dass jemand den von Ihrem Gerät generierten Datenverkehr abfängt.

OpenVPN ist ein VPN, das auf den Protokollen TLS (Transport Layer Security) und SSL (Secure Sockets Layer) basiert. OpenVPN verwendet einige Zertifikate, um den Datenverkehr zwischen dem Server und dem Client zu verschlüsseln.

In diesem Tutorial erfahren Sie, wie Sie OpenVPN auf einem Server mit Ubuntu 18.04 konfigurieren.

Um dieses Tutorial zu implementieren, werden ein Server-Rechner und ein weiterer Rechner benötigt, der als CA (Certification Authority) fungiert und die Gültigkeit der Zertifikate bewertet.

Sie müssen sich über eine SSH-Verbindung mit Ihrem Server und Ihrer Zertifizierungsstelle verbinden. Wenn Sie dies noch nicht getan haben, wird empfohlen, unseren Leitfaden zu befolgen, um eine sichere Verbindung mit dem SSH-Protokoll herzustellen.

OpenVPN installieren

Greifen Sie auf Ihren Server zu.

OpenVPN ist bereits im offiziellen Ubuntu-Repository von Ubuntu verfügbar, daher muss nichts weiter hinzugefügt werden.

Typ:

sudo apt update
sudo apt install openvpn

Zu diesem Zeitpunkt wurde OpenVPN erfolgreich auf Ihrem Server installiert.

EasyRSA installieren

Fahren Sie fort, indem Sie EasyRSA auf Ihren Server und auf Ihre Zertifizierungsstelle herunterladen, indem Sie auf beiden Computern Folgendes eingeben:

wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz

Die neueste Version kann von https://github.com/OpenVPN/easy-rsa/releases

heruntergeladen werden
$ cd ~
$ sudo tar xvf EasyRSA-3.0.4.tgz

Der Name kann je nach heruntergeladener Version unterschiedlich sein

Konfiguration des Servers

Schließen Sie die Serverkonfiguration ab, indem Sie Folgendes eingeben:

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ sudo gzip -d /etc/openvpn/server.conf.gz
$ sudo nano /etc/openvpn/server.conf
  • Suchen Sie den Abschnitt, der sich auf HMAC bezieht ("tls-auth"). Wenn die Zeile kommentiert ist, entfernen Sie das ";".

  • Suchen Sie den Abschnitt über Verschlüsselung ("cipher"). Wenn kommentiert, entfernen Sie das ";". Fügen Sie direkt unter .

    eine neue Zeile mit dem Text "auth SHA256" hinzu
  • Suchen Sie den Abschnitt „dh“, der die Diffie-Hellman-Parameter definiert, und entfernen Sie „2048“ aus dem Namen („dh dh.pem“ sollte sein erhalten).

  • Suchen Sie die Abschnitte „Benutzer“ und „Gruppe“ und entfernen Sie das „;“ um die Zeilen zu entkommentieren.

EasyRSA auf der CA konfigurieren

Nach der Installation von EasyRSA wurde auf Ihrer CA eine Konfigurationsdatei zum Definieren der Variablen für Ihre CA erstellt. Geben Sie ein:

$ cd ~/EasyRSA-3.0.4/
$ cp vars.example vars
$ nano vars

Entfernen Sie das "#" zu den Anweisungen in der Abbildung unten:

Starten Sie das Skript "easyrsa", um die Public Key Infrastructure (PKI) zu initialisieren:

$ sudo ./easyrsa init-pki
$ sudo ./easyrsa build-ca nopass

mit diesem Befehl werden zwei Dateien erstellt:

  • ca.crt:öffentliches CA-Zertifikat, das von Servern und Clients verwendet wird, um sich gegenseitig mitzuteilen, dass sie Teil desselben vertrauenswürdigen Netzwerks sind.

  • ca.key:privater Schlüssel, den der CA-Rechner verwendet, um Schlüssel und Zertifikate für Server und Clients zu signieren. Diese Datei darf nur auf dem CA-Rechner aufbewahrt werden (auf den Dritte keinen Zugriff haben), andernfalls kann die Netzwerksicherheit gefährdet werden.

Sie müssen einen Namen eingeben. Lassen Sie es leer und drücken Sie die Eingabetaste.

Anfordern eines Serverzertifikats von der CA

Nachdem der CA-Rechner nun konfiguriert ist, lassen Sie den Server einen privaten Schlüssel und eine Zertifikatsanforderung generieren und sie zum Signieren an den CA-Rechner senden:

$ cd ~/EasyRSA-3.0.4
$ ./easyrsa init-pki
$ ./easyrsa gen-req server nopass

Belassen Sie der Einfachheit halber "server" als Namen für die Maschine, um später mehrere Änderungen zu vermeiden.

Sie haben gerade einen privaten Schlüssel für den Server und eine Zertifikatsanforderung namens "server.req" erstellt:

$ sudo cp ~/EasyRSA-v3.0.6/pki/private/server.key /etc/openvpn/

Kopieren Sie die server.req-Datei auf den CA-Rechner:

$ sudo scp ~/EasyRSA-3.0.4/pki/reqs/server.req [email protected]_CA_ip:/tmp

Generieren und Signieren des Zertifikats

Importieren Sie auf Ihrer CA im EasyRSA-Ordner die gerade kopierte Datei und signieren Sie sie:

$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/server.req server
$ sudo ./easyrsa sign-req server server

Geben Sie „yes“ ein und drücken Sie die Eingabetaste.

Übertragen Sie das signierte Zertifikat und die ca.crt an den VPN-Server:

$ sudo scp pki/issued/server.crt [email protected]_server_ip:/tmp
$ sudo scp pki/ca.crt [email protected]_server_ip:/tmp

Dann in deinem Server

kopiere die erhaltenen Dateien in die entsprechenden Verzeichnisse:

$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
$ cd ~/EasyRSA-3.0.4/

Generieren Sie einen starken Austauschschlüssel basierend auf Diffie-Hellman.

$ sudo ./easyrsa gen-dh
$ sudo openvpn --genkey --secret ta.key

Kopieren Sie die generierten Dateien in den Ordner "/etc/openvpn/"

$ sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
$ sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/

Konfiguration eines Clients

Erstellen Sie einen Ordner zum Speichern von Zertifikaten und Schlüsseln des Clients (da diese Anleitung nur einen Client darstellt, wird er hier „Client1“ genannt, aber der Vorgang muss für jeden Client wiederholt werden, wobei ein anderer verwendet wird Konfession)

$ sudo mkdir -p ~/client-configs/keys
$ sudo chmod -R 700 ~/client-configs
$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa gen-req client1 nopass

Drücken Sie die Eingabetaste, um den vorgeschlagenen Standardnamen zu akzeptieren.

$ sudo cp pki/private/client1.key ~/client-configs/keys/

Kopieren Sie den Schlüssel des Clients in den zuvor erstellten Ordner.

$ sudo scp pki/reqs/client1.req [email protected]_CA_IP:/tmp

Senden Sie die client1.req-Datei an den CA-Rechner.

Importieren Sie die Zertifikatsanforderung auf Ihre CA:

$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/client1.req client1
$ sudo ./easyrsa sign-req client client1

Geben Sie "yes" ein, um die Signatur zu autorisieren.

Lade client1.crt auf deinen Server hoch:

scp pki/issued/client1.crt [email protected]_SERVER:/tmp

Kopieren Sie auf Ihrem Server die folgenden Dateien in die entsprechenden Ordner.

$ sudo mkdir -p ~/client-configs/keys

$ sudo chmod -R 700 ~/client-configs

$ sudo cp /tmp/client1.crt ~/client-configs/keys/

$ sudo cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/

$ sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/

Nun sind sowohl die Zertifikate als auch die Schlüssel von Server und Client generiert.

IP-Routing und Firewall konfigurieren

IP-Weiterleitungsregeln ändern:

$ sudo nano /etc/sysctl.conf

Suchen Sie den Abschnitt "net.ipv4.ip_forward" und entfernen Sie das "#", damit die Anweisung "nicht kommentiert" wird.

Ändern Sie einige Firewall-Regeln, um Client-Verbindungen korrekt weiterzuleiten.

$ ip route | grep default

Speichern Sie den Namen nach "dev" (in der Abbildung unten "eth0" genannt):

$ sudo nano /etc/ufw/before.rules

Fügen Sie die Befehle wie in der Abbildung unten hinzu und ersetzen Sie "eth0" durch den Namen Ihrer Netzwerkschnittstelle.

# START OPENVPN RULES

# NAT table rules

*nat

:POSTROUTING ACCEPT [0:0] 

# Allow traffic from OpenVPN client to eth0 

-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE

COMMIT

# END OPENVPN RULES

Speichern und beenden. Bearbeiten Sie nun die UFW-Konfigurationsdatei:

$ sudo nano /etc/default/ufw

Ändern Sie den Wert des Parameters "DEFAULT_FORWARD_POLICY" mit "ACCEPT".

$ sudo ufw allow 1194/udp

Port 1194 für UDP-Verkehr hinzufügen.

$ sudo ufw allow OpenSSH

Starten Sie UFW neu:

$ sudo ufw disable

$ sudo ufw enable

Starten Sie den OpenVPN-Dienst:

$ sudo systemctl start openvpn

Prüfen Sie den Dienststatus:

$ sudo systemctl status openvpn

Dienst beim Serverstart festlegen.

$ sudo systemctl enable openvpn

Erstellen Sie die Konfigurationsdatei für den Client:

$ sudo mkdir -p ~/client-configs/files
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
$ sudo nano ~/client-configs/base.conf

Suchen Sie den Abschnitt "remote" und vergewissern Sie sich, dass dort "remote IP_Server 1194" steht

  • IP_Server:Schreiben Sie die Server-IP

  • 1194:zuvor ausgewählter Port.

Suchen Sie den Abschnitt "proto", um sicherzustellen, dass der Server auf UDP eingestellt ist (Sie finden die TCP-Zeile mit einem ";" kommentiert).

Suchen Sie die Abschnitte "Benutzer" und "Gruppe" und entfernen Sie das ";" ihnen "keine Kommentare" zu machen.

Suchen Sie die Abschnitte "ca.crt" - "client.crt" - "client.key" - "ta.key" und kommentieren Sie diese mit einem "#" am Anfang jeder Zeile.

Suchen Sie den Abschnitt "cipher" und fügen Sie die Anweisung "auth SHA256" unter der Anweisung "cipher AES-256-CBC" hinzu.

Fügen Sie an beliebiger Stelle die Anweisung "Tastenrichtung 1" hinzu.

Fügen Sie diese kommentierten Zeilen jederzeit hinzu. Wenn der Client ein Linux-Rechner ist, machen Sie "keine Kommentare".

# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Speichern und beenden.

Generieren der Konfiguration für Clients

Erstellen Sie auf Ihrem Server ein Skript, um die Konfiguration eines Clients automatisch zu kompilieren.

nano ~/client-configs/make_config.sh

Kopieren Sie den Text und fügen Sie ihn ein:

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/client-configs/keys

OUTPUT_DIR=~/client-configs/files

BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \

    <(echo -e '<ca>') \

    ${KEY_DIR}/ca.crt \

    <(echo -e '</ca>\n<cert>') \

    ${KEY_DIR}/${1}.crt \

    <(echo -e '</cert>\n<key>') \

    ${KEY_DIR}/${1}.key \

    <(echo -e '</key>\n<tls-auth>') \

    ${KEY_DIR}/ta.key \

    <(echo -e '</tls-auth>') \

    > ${OUTPUT_DIR}/${1}.ovpn

Speichern und beenden.

chmod 700 ~/client-configs/make_config.sh

Versuchen Sie jetzt die Client "Konfiguration" zu generieren.

$ cd ~/client-configs
$ sudo ./make_config.sh client1

Eine Datei namens „client1.ovpn“ wird erstellt.

Übertragen Sie nun diese Datei auf das gewünschte Gerät. Es wird von der VPN-Software für die Verbindung verwendet.

Widerrufen von Client-Zertifikaten

$ cd EasyRSA-3.0.4/
$ sudo ./easyrsa revoke client1

client1 ist der Name des Mandanten, dem Berechtigungen entzogen werden sollen

Geben Sie zur Bestätigung "yes" ein.
Generieren Sie die crl.pem-Datei und laden Sie sie auf Ihren Server hoch:

$ sudo ./easyrsa gen-crl
$ sudo scp ~/EasyRSA-3.0.4/pki/crl.pem [email protected]_Server:/tmp

Aktualisieren Sie die Konfiguration Ihres Servers, um den Widerruf zu überprüfen.

$ sudo cp /tmp/crl.pem /etc/openvpn
$ sudo nano /etc/openvpn/server.conf

Fügen Sie am Ende der Datei "crl-verify crl.pem" hinzu.

Speichern und beenden.

$ sudo systemctl restart [email protected]

Starten Sie den Server neu, um die Änderungen zu implementieren.


Linux
  1. So installieren und konfigurieren Sie den Algo VPN-Server unter Ubuntu 20.04

  2. So richten Sie eine Zertifizierungsstelle unter Ubuntu 22.04 ein und konfigurieren sie

  3. So installieren und konfigurieren Sie den OpenVPN-Server unter Ubuntu 20.04

  4. Wie installiere und konfiguriere ich Fail2ban auf Ubuntu?

  5. So installieren und konfigurieren Sie Elasticsearch unter Ubuntu 18.04

So richten Sie einen OpenVPN-Server unter Ubuntu 22.04 ein und konfigurieren ihn

So richten Sie ein IPsec-basiertes VPN mit Strongswan unter Debian und Ubuntu ein

So installieren und konfigurieren Sie Memcached unter Ubuntu Linux

So installieren und konfigurieren Sie ModEvasive mit Apache unter Ubuntu 18.04

So richten Sie einen Seafile-Server mit Nginx unter Ubuntu 18.04 ein

So verbinden Sie sich mit OpenVPN mit einem VPN