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

So installieren Sie OpenVPN-Server und -Client mit Easy-RSA 3 unter CentOS 7

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, wie Sie OpenVPN unter CentOS 7.6 Schritt für Schritt installieren und konfigurieren. Und wir werden die zertifikatsbasierte OpenVPN-Authentifizierung implementieren.

Voraussetzungen

  • CentOS 7.6
  • Root-Rechte

Was werden wir tun?

  1. Installieren Sie OpenVPN und Easy-RSA
  2. Easy-RSA 3-Variablen konfigurieren
  3. OpenVPN-Schlüssel erstellen
  4. OpenVPN-Server konfigurieren
  5. Firewalld konfigurieren und Portweiterleitung aktivieren
  6. Client-Setup
  7. Testen

Schritt 1 – OpenVPN und Easy-RSA installieren

In diesem Tutorial verwenden wir die neueste Version des Centos-Servers (7.5) und OpenVPN 2.4 mit easy-rsa 3. Stellen Sie vor der Installation der OpenVPN- und easy-rsa-Pakete sicher, dass das Repository „epel“ vorhanden ist ist auf dem System installiert. Wenn Sie es nicht haben, installieren Sie das epel-Repository mit dem folgenden Befehl yum.

yum install epel-release -y

Installieren Sie nun OpenVPN 2.4 mit easy-rsa 3 auf dem System.

yum install openvpn easy-rsa -y

Überprüfen Sie nach Abschluss der Installation die openvpn- und easy-rsa-Version.

openvpn --version
ls -lah /usr/share/easy-rsa/

OpenVPN 2.4 mit easy-rsa 3 wurde installiert.

Schritt 2 – Easy-RSA 3 konfigurieren

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

Gehen Sie in das Verzeichnis „/etc/openvpn/“ und kopieren Sie das Skript „easy-rsa“.

cd /etc/openvpn/
cp -r /usr/share/easy-rsa /etc/openvpn/

Gehen Sie nun in das Verzeichnis ‚easy-rsa/3/‘ und erstellen Sie mit vim eine neue vars-Datei.

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

Fügen Sie die vars easy-rsa 3-Konfiguration 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-1.0.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 vars-Datei für die Easy-RSA 3-Einstellung wurde erstellt.

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/3‘.

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

Initialisierungs- und Build-CA

Bevor wir Schlüssel erstellen, müssen wir das PKI-Verzeichnis 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:

  • Nein =Option zum Deaktivieren des Passworts für den Schlüssel „hakase-server“.

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“.

Clientschlü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

Diffie-Hellman-Schlüssel erstellen

Diese Aktion wird viel Zeit in Anspruch nehmen, abhängig von der gewählten Schlüssellänge und der verfügbaren Entropie auf dem Server. Wir werden den Längenschlüssel verwenden, den wir in der 'vars'-Datei definieren.

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

./easyrsa gen-dh

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 auf Ihrem VPN-Server haben und einige Schlüssel widerrufen möchten, müssen Sie dies 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 – im Folgenden sehen Sie 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/

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/“ und erstellen Sie mit vim eine neue Konfigurationsdatei „server.conf“.

cd /etc/openvpn/
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.10.1.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 client to connect with 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
comp-lzo yes
daemon
user nobody
group nobody

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

Speichern und beenden.

Die Konfiguration für OpenVPN wurde erstellt.

Schritt 5 – Aktivieren Sie die Portweiterleitung und konfigurieren Sie die Routing-Firewalld

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 zum Firewalld-Listendienst hinzu und fügen Sie die 'tun0'-Schnittstelle zur vertrauenswürdigen Firewalld-Zone hinzu.

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

Aktivieren Sie 'MASQUERADE' auf der 'vertrauenswürdigen' Zone firewalld.

firewall-cmd --permanent --zone=trusted --add-masquerade

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

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

Und Firewall neu laden.

firewall-cmd --reload

Die Portweiterleitung und das Firewalld-Routing wurden abgeschlossen, starten Sie jetzt den openvpn-Dienst und aktivieren Sie ihn so, dass er bei jedem Systemstart automatisch gestartet wird.

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

Überprüfen Sie es mit den folgenden Befehlen.

netstat -plntu
systemctl status [email protected]

Der OpenVPN-Server ist auf UDP-Protokollport „1194“ eingerichtet und läuft.

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 139.xx.xx.xx 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 lzo
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/*

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

Schritt 7 – Testen von OpenVPN

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 einen neuen Terminal-Tab 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