GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren Sie OpenVPN-Server und -Client mit Easy-RSA 3 auf CentOS 8

OpenVPN ist eine Open-Source-Anwendung, mit der Sie ein sicheres privates Netzwerk über das öffentliche Internet erstellen können. OpenVPN implementiert ein virtuelles privates Netzwerk (VPN), um eine sichere Verbindung herzustellen. OpenVPN verwendet die OpenSSL-Bibliothek zur Bereitstellung der Verschlüsselung und bietet mehrere Authentifizierungsmechanismen, wie z. B. zertifikatbasierte, vorinstallierte Schlüssel und Benutzername/Passwort-Authentifizierung.

In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie OpenVPN auf CentOS 8 Server installieren und konfigurieren. Und wir werden die zertifikatsbasierte OpenVPN-Authentifizierung implementieren.

Voraussetzungen

  • CentOS 8-Server
  • Root-Rechte

Was werden wir tun?

  • Installieren Sie OpenVPN und Easy-RSA
  • Easy-RSA 3-Variablen konfigurieren
  • OpenVPN-Schlüssel erstellen
  • OpenVPN-Server konfigurieren
  • Firewalld konfigurieren und Portweiterleitung aktivieren
  • Client-Setup
  • Testen

Schritt 1 – OpenVPN und Easy-RSA installieren

Zuerst fügen wir das EPEL-Repository (Extra Package for Enterprise Linux) hinzu, installieren das neueste OpenVPN-Paket und laden das easy-rsa-Skript auf das CentOS 8-System herunter.

Installieren Sie das EPEL-Repository mit dem folgenden dnf-Befehl.

dnf install epel-release

Installieren Sie danach das neueste OpenVPN-Paket 2.4.7.

dnf install openvpn

Sobald die Installation abgeschlossen ist, gehen Sie zu „/etc/openvpn“ und laden Sie das easy-rsa-Skript mit dem untenstehenden wget-Befehl herunter.

cd /etc/openvpn/
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

Extrahieren Sie nun die Datei ‚EasyRSA-unix-v3.0.6.tgz‘ und benennen Sie das Verzeichnis in ‚easy-rsa‘ um.

tar -xf EasyRSA-unix-v3.0.6.tgz
mv EasyRSA-v3.0.6/ easy-rsa/; rm -f EasyRSA-unix-v3.0.6.tgz

Das OpenVPN-Paket und das easy-rsa-Skript wurden auf dem CentOS 8-System installiert.

Schritt 2 – Easy-RSA 3 konfigurieren

In diesem Schritt konfigurieren wir easy-rsa 3, indem wir eine neue „vars“-Datei erstellen. Die 'vars'-Datei enthält die Easy-RSA 3-Einstellungen.

Gehen Sie in das Verzeichnis „/etc/openvpn/easy-rsa/“ und erstellen Sie mit dem vim-Editor ein neues vars-Skript.

cd /etc/openvpn/easy-rsa/
vim vars

Fügen Sie die vars easy-rsa 3-Konfigurationen unten ein.

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "ID"
set_var EASYRSA_REQ_PROVINCE    "Jakarta"
set_var EASYRSA_REQ_CITY        "Jakarta"
set_var EASYRSA_REQ_ORG         "hakase-labs CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL       "[email protected]"
set_var EASYRSA_REQ_OU          "HAKASE-LABS EASY CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE       7500
set_var EASYRSA_CERT_EXPIRE     365
set_var EASYRSA_NS_SUPPORT      "no"
set_var EASYRSA_NS_COMMENT      "HAKASE-LABS CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

Speichern und beenden.

Hinweis:

  • Ändern Sie die Werte der Variablen nach Bedarf.
  • Erhöhen Sie die 'EASYRSA_KEY_SIZE' für mehr Sicherheit.
  • Ändern Sie „EASYRSA_CA_EXPIRE“ und „EASYRSA_CERT_EXPIRE“.

Machen Sie nun die 'vars'-Datei ausführbar, indem Sie die Berechtigung der Datei ändern.

chmod +x vars

Die Konfiguration von easy-rsa 3 ist abgeschlossen.

Schritt 3 – OpenVPN-Schlüssel erstellen

In diesem Schritt erstellen wir die OpenVPN-Schlüssel basierend auf der von uns erstellten easy-rsa 3 'vars'-Datei. Wir werden den CA-Schlüssel, Server- und Client-Schlüssel, DH- und CRL-PEM-Datei erstellen.

Wir werden all diese Schlüssel mit der Befehlszeile ‚easyrsa‘ erstellen. Gehen Sie in das Verzeichnis ‚/etc/openvpn/easy-rsa/‘.

cd /etc/openvpn/easy-rsa/3/

- Initialisierung und Build-CA

Bevor wir den Server- und Client-Schlüssel erstellen, müssen wir das PKI-Verzeichnis (Public Key Infrastructure) initialisieren und den CA-Schlüssel erstellen.

Initiieren Sie das PKI-Verzeichnis und erstellen Sie den CA-Schlüssel mit dem folgenden Befehl.

./easyrsa init-pki
./easyrsa build-ca

Geben Sie nun das Passwort für Ihren CA-Schlüssel ein und Sie erhalten Ihre 'ca.crt'- und 'ca.key'-Dateien im Verzeichnis 'pki'.

- Serverschlüssel erstellen

Jetzt wollen wir den Serverschlüssel erstellen, und wir werden den Serverschlüssel mit dem Namen „hakase-server“ erstellen.

Erstellen Sie den Serverschlüssel „hakase-server“ mit dem folgenden Befehl.

./easyrsa gen-req hakase-server nopass

Hinweis:

  • nopass =Option zum Deaktivieren des Passworts für den 'hakase-server'-Schlüssel.

Und signieren Sie den Schlüssel „hakase-server“ mit unserem CA-Zertifikat.

./easyrsa sign-req server hakase-server

Sie werden nach dem 'CA'-Passwort gefragt, geben Sie das Passwort ein und drücken Sie die Eingabetaste. Und Sie erhalten die Zertifikatsdatei „hakase-server.crt“ im Verzeichnis „pki/issued/“.

Überprüfen Sie die Zertifikatsdatei mit dem OpenSSL-Befehl und vergewissern Sie sich, dass kein Fehler vorliegt.

openssl verify -CAfile pki/ca.crt pki/issued/hakase-server.crt

Alle Serverzertifikatschlüssel wurden erstellt. Der private Schlüssel des Servers befindet sich unter „pki/private/hakase-server.key“ und das Serverzertifikat unter „pki/issued/hakase-server.crt“.

- Kundenschlüssel erstellen

Jetzt müssen wir Schlüssel für den Client erstellen. Wir werden einen neuen Kundenschlüssel mit dem Namen „client01“ generieren.

Generieren Sie den Schlüssel „client01“ mit dem folgenden Befehl.

./easyrsa gen-req client01 nopass

Signieren Sie nun den Schlüssel „client01“ mit unserem CA-Zertifikat wie unten beschrieben.

./easyrsa sign-req client client01

Geben Sie „Ja“ ein, um die Client-Zertifikatsanforderung zu bestätigen, und geben Sie dann das CA-Passwort ein.

Das Client-Zertifikat mit dem Namen „client01“ wurde generiert. Überprüfen Sie das Client-Zertifikat mit dem Befehl openssl.

openssl verify -CAfile pki/ca.crt pki/issued/client01.crt

Stellen Sie sicher, dass kein Fehler vorliegt.

- Diffie-Hellman-Schlüssel erstellen

Der Diffie-Hellman-Schlüssel wird für eine bessere Sicherheit benötigt. Und wir werden den „2048“ DH-Schlüssel basierend auf der „vars“-Konfigurationsdatei generieren, die oben erstellt wurde.

Generieren Sie den Diffie-Hellman-Schlüssel mit dem folgenden Befehl.

./easyrsa gen-dh

Und der DH-Schlüssel wurde generiert und befindet sich im Verzeichnis „pki“.

- Optional:Generieren Sie den CRL-Schlüssel

Der Schlüssel CRL (Certificate Revoking List) wird zum Widerrufen des Client-Schlüssels verwendet. Wenn Sie mehrere Client-Zertifikate von Clients auf Ihrem VPN-Server haben und einen Schlüssel entfernen möchten, müssen Sie ihn nur mit dem Befehl easy-rsa widerrufen.

Wenn Sie einen Schlüssel widerrufen möchten, führen Sie den folgenden Befehl aus.

./easyrsa revoke someone

Und generieren Sie dann den CRL-Schlüssel.

./easyrsa gen-crl

Die CRL-PEM-Datei wurde im Verzeichnis „pki“ generiert – das Folgende ist ein Beispiel auf meinem Server.

- Zertifikatsdateien kopieren

Alle Zertifikate wurden generiert, kopieren Sie nun die Zertifikatsdateien und PEM-Dateien.

Kopieren Sie den Serverschlüssel und das Zertifikat.

cp pki/ca.crt /etc/openvpn/server/
cp pki/issued/hakase-server.crt /etc/openvpn/server/
cp pki/private/hakase-server.key /etc/openvpn/server/

Kopieren Sie den client01-Schlüssel und das Zertifikat.

cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client01.crt /etc/openvpn/client/
cp pki/private/client01.key /etc/openvpn/client/

Kopieren Sie DH- und CRL-Schlüssel.

cp pki/dh.pem /etc/openvpn/server/
cp pki/crl.pem /etc/openvpn/server/

Alle Zertifikate für Server und Client wurden in jedes Verzeichnis kopiert.

Schritt 4 - OpenVPN konfigurieren

In diesem Schritt erstellen wir eine neue Konfiguration „server.conf“ für den OpenVPN-Server.

Gehen Sie in das Verzeichnis „/etc/openvpn/server/“ und erstellen Sie mit vim eine neue Konfigurationsdatei „server.conf“.

cd /etc/openvpn/server/
vim server.conf

Fügen Sie dort die folgende OpenVPN-Serverkonfiguration ein.

# OpenVPN Port, Protocol, and the Tun
port 1194
proto udp
dev tun

# OpenVPN Server Certificate - CA, server key and certificate
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/hakase-server.crt
key /etc/openvpn/server/hakase-server.key

#DH and CRL key
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem

# Network Configuration - Internal network
# Redirect all Connection through OpenVPN Server
server 10.5.0.0 255.255.255.0
push "redirect-gateway def1"

# Using the DNS from https://dns.watch
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"

#Enable multiple clients to connect with the same certificate key
duplicate-cn

# TLS Security
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache

# Other Configuration
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nobody

# OpenVPN Log
log-append /var/log/openvpn.log
verb 3
an

Speichern und beenden.

Und die OpenVPN-Serverkonfiguration wurde erstellt.

Schritt 5 – Portweiterleitung aktivieren und Routing in Firewalld konfigurieren

In diesem Schritt aktivieren wir das Kernelmodul für die Portweiterleitung und konfigurieren das Routing „Firewalld“ für OpenVPN.

Aktivieren Sie das Kernelmodul für die Portweiterleitung, indem Sie die folgenden Befehle ausführen.

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

Als nächstes konfigurieren Sie das Routing mit Firewalld für OpenVPN.

Fügen Sie den OpenVPN-Dienst zur „öffentlichen“ und „vertrauenswürdigen“ Firewall-Zone hinzu.

firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-service=openvpn

Fügen Sie danach 'tun0' zur 'vertrauenswürdigen' Zone hinzu.

firewall-cmd --permanent --zone=trusted --add-interface=tun0

Aktivieren Sie nun „MASQUERADE“ auf der standardmäßigen „öffentlichen“ Zone firewalld.

firewall-cmd --permanent --add-masquerade

Aktivieren Sie NAT für die interne OpenVPN-IP-Adresse „10.5.0.0/24“ zur externen IP-Adresse „SERVERIP“.

SERVERIP=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s  10.5.0.0/24 -o $SERVERIP -j MASQUERADE

Und Firewall neu laden.

firewall-cmd --reload

Die Konfiguration der Portweiterleitung und des Firewalld-Routings ist abgeschlossen, starten Sie den OpenVPN-Dienst und aktivieren Sie ihn so, dass er bei jedem Systemstart automatisch gestartet wird.

systemctl start ope[email protected]
systemctl enable [email protected]

Überprüfen Sie danach den OpenVPN-Dienst mit den folgenden Befehlen.

netstat -plntu
systemctl status [email protected]

Und Sie erhalten das Ergebnis wie folgt.

Als Ergebnis läuft der OpenVPN-Dienst auf dem UDP-Protokoll mit dem Standardport „1194“.

Schritt 6 – Einrichtung des OpenVPN-Clients

Gehen Sie in das Verzeichnis „/etc/openvpn/client“ und erstellen Sie mit vim eine neue OpenVPN-Client-Konfigurationsdatei „client01.ovpn“.

cd /etc/openvpn/client
vim client01.ovpn

Fügen Sie dort die folgende OpenVPN-Client-Konfiguration ein.

client
dev tun
proto udp

remote xxx.xxx.xxx.xxx 1194

ca ca.crt
cert client01.crt
key client01.key

cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

Speichern und beenden.

Komprimieren Sie nun das Verzeichnis „/etc/openvpn/client“ in eine „zip“- oder „tar.gz“-Datei und laden Sie die komprimierte Datei mit SCP von Ihrem lokalen Computer herunter.

Komprimieren Sie das Verzeichnis „/etc/openvpn/client“ in die Datei „client01.tar.gz“.

cd /etc/openvpn/
tar -czvf client01.tar.gz client/*

Jetzt können Sie die komprimierte OpenVPN-Datei mit dem FTP-Server oder dem Befehl scp wie unten beschrieben herunterladen.

scp [email protected]:/etc/openvpn/client01.tar.gz .

Schritt 7 – Mit OpenVPN verbinden

Testen auf den Clients.

- Unter Linux

Installieren Sie das OpenVPN-Paket und wenn Sie eine GUI-Konfiguration wünschen, installieren Sie OpenVPN network-manager.

sudo apt install openvpn network-manager-openvpn network-manager-openvpn-gnome -y

Wenn Sie eine Verbindung über eine Terminal-Shell herstellen möchten, führen Sie den folgenden OpenVPN-Befehl aus.

openvpn --config client01.ovpn

Wenn Sie mit OpenVPN verbunden sind, öffnen Sie eine neue Terminal-Registerkarte und überprüfen Sie die Verbindung mit dem Curl-Befehl.

curl ifconfig.io

Und Sie erhalten die IP-Adresse des OpenVPN-Servers.

- Unter Mac OS

Laden Sie Tunnelblick herunter und installieren Sie es.

Extrahieren Sie die Datei „client01.tar.gz“ und benennen Sie das Verzeichnis „client“ in „client01.tblk“ um.

tar -xzvf client01.tar.gz
mv client client01.tblk

Doppelklicken Sie auf „client01.tblk“ und der Tunnelblick erkennt automatisch die OpenVPN-Konfiguration und importiert sie dann.

Verbinden Sie sich nun durch den Tunnelblick in der oberen Leiste.

- Unter Windows

Laden Sie den OpenVPN-Client für Windows herunter und importieren Sie die Konfiguration.


Cent OS
  1. So installieren und verwenden Sie TeamSpeak Server unter CentOS 7

  2. So installieren Sie OpenVPN auf CentOS/RHEL 8

  3. So installieren und konfigurieren Sie Gitlab unter CentOS 8

  4. So installieren und hosten Sie einen OpenVPN-Server mit Docker

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

So installieren und konfigurieren Sie den VNC-Server unter CentOS 7

Installieren Sie den PXE-Server und konfigurieren Sie den PXE-Client unter CentOS 7

So installieren und konfigurieren Sie Memcached unter CentOS 8

So installieren Sie CentOS 7 Server und Desktop

So installieren und konfigurieren Sie den DHCP-Server auf Centos 8

So installieren und konfigurieren Sie den OpenVPN-Server in CentOS 8/7