OpenVPN-Server auf CentOS 8 einrichten
EPEL-Repository installieren
Die neuesten OpenVPN-Pakete werden von den EPEL-Repositories auf CentOS 8 und anderen ähnlichen Derivaten bereitgestellt. EPEL kann auf CentOS 8 installiert werden, indem Sie den folgenden Befehl ausführen:
dnf install epel-release -y
Installieren Sie OpenVPN auf CentOS 8
Sobald die EPEL-Repos vorhanden sind, können Sie jetzt das OpenVPN-Paket auf CentOS 8 installieren, indem Sie den folgenden Befehl ausführen:
dnf install openvpn
Installieren Sie das Easy-RSA-CA-Dienstprogramm unter CentOS 8
Das Easy-RSA-Paket ist ein Shell-basiertes CA-Dienstprogramm, das verwendet wird, um SSL-Schlüsselpaare zu generieren, die zum Sichern von VPN-Verbindungen verwendet werden.
dnf install easy-rsa
OpenVPN-Public-Key-Infrastruktur erstellen
Der erste Schritt beim Einrichten eines OpenVPN-Servers besteht darin, eine PKI zu erstellen, die aus öffentlichen und privaten Schlüsseln für den OpenVPN-Server und die Verbindungsclients sowie einem Master-Zertifizierungsstellenzertifikat und einem privaten Schlüssel zum Signieren des OpenVPN-Servers und der Clientzertifikate besteht. Wenn möglich, sollten Sie die PKI aus Sicherheitsgründen auf einem separaten Server erstellen, auf dem OpenVPN ausgeführt wird.
PKI initialisieren
Easy-RSA wird für das PKI-Management verwendet. Die Easy-RSA-Skripte werden unter /usr/share/easy-rsa
Verzeichnis.
Damit Easy-RSA bei einem Upgrade keine eventuell vorgenommene Konfiguration überschreibt, kopieren Sie die Skripte in ein anderes Verzeichnis, am besten unter /etc
Verzeichnis.
mkdir /etc/easy-rsa
cp -air /usr/share/easy-rsa/3/* /etc/easy-rsa/
Sobald die Skripte vorhanden sind, navigieren Sie zum Verzeichnis und initialisieren Sie die PKI.
cd /etc/easy-rsa/
./easyrsa init-pki
Generieren Sie das Zertifikat und den Schlüssel der Zertifizierungsstelle (CA)
Generieren Sie als Nächstes das CA-Zertifikat und den Schlüssel, die zum Signieren von Zertifikaten verwendet werden, indem Sie die folgenden Befehle im obigen Easy-RSA-Verzeichnis ausführen.
./easyrsa build-ca
Dadurch werden Sie zur Eingabe der CA-Schlüsselpassphrase und des allgemeinen Servernamens aufgefordert.
Using SSL:openssl OpenSSL 1.1.1c FIPS 28 May 2019Enter New CA Key Passphrase:ENTER PASSWORD Neuen CA-Schlüssel-Passsatz erneut eingeben:PASSWORT WIEDER EINGEBEN Generieren eines privaten RSA-Schlüssels, 2048 Bit langer Modulus (2 Primzahlen)................................. ................................++++++.++++++e ist 65537 (0x010001)Kann nicht /etc/easy-rsa/pki/.rnd in RNG140160794502976 laden:Fehler:2406F079:Zufallszahlengenerator:RAND_load_file:Datei kann nicht geöffnet werden:crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/ .rndSie werden gleich aufgefordert, Informationen einzugeben, die in Ihre Zertifikatsanforderung aufgenommen werden. Was Sie gleich eingeben werden, ist ein sogenannter Distinguished Name oder DN. Es gibt einige Felder, aber Sie können einige Felder leer lassen ist ein Standardwert. Wenn Sie „.“ eingeben, bleibt das Feld leer.-----Allgemeiner Name (z. B.:Ihr Benutzer-, Host- oder Servername) [Easy-RSA CA]:Kifarunix -CA CA-Erstellung abgeschlossen und Sie können jetzt Zertifikatsanfragen importieren und signieren. Ihre neue CA-Zertifikatsdatei zur Veröffentlichung befindet sich unter:/etc/easy-rsa/pki/ca.crt
Das CA-Zertifikat wird unter /etc/easy-rsa/pki/ca.crt
gespeichert .
Diffie-Hellman-Parameter generieren
Führen Sie im selben Easy-RSA-Verzeichnis wie oben den folgenden Befehl aus, um eine Diffie-Hellman-Schlüsseldatei zu generieren, die für den Schlüsselaustausch während des TLS-Handshakes mit verbindenden Clients verwendet werden kann.
./easyrsa gen-dh
Es dauert einige Zeit, bis der Befehl abgeschlossen ist. Anschließend speichert es die DH-Parameter in /etc/easy-rsa/pki/dh.pem
Datei.
OpenVPN-Serverzertifikat und -schlüssel generieren
Um ein Zertifikat und einen privaten Schlüssel für den OpenVPN-Server zu generieren, führen Sie den folgenden Befehl aus:
cd /etc/easy-rsa
./easyrsa build-server-full server nopass
Wenn der Befehl ausgeführt wird, werden Sie aufgefordert, die oben erstellte Passphrase für den CA-Schlüssel einzugeben.
nopass
deaktiviert die Verwendung von Passphrasen.
Hash-basierten Message Authentication Code (HMAC)-Schlüssel generieren
Um einen vorinstallierten TLS/SSL-Authentifizierungsschlüssel zu generieren, der zum Hinzufügen einer zusätzlichen HMAC-Signatur zu allen SSL/TLS-Handshake-Paketen verwendet wird, um DoS-Angriffe und UDP-Port-Flooding zu vermeiden, führen Sie den folgenden Befehl aus:
openvpn --genkey - -secret /etc/easy-rsa/pki/ta.key
Generieren Sie ein Widerrufszertifikat
Um ein zuvor signiertes Zertifikat ungültig zu machen, müssen Sie ein Sperrzertifikat generieren.
./easyrsa gen-crl
Das Sperrzertifikat wird als /etc/easy-rsa/pki/crl.pem
gespeichert .
Serverzertifikate und -schlüssel in das Serververzeichnis kopieren
Kopieren Sie als Nächstes alle generierten Zertifikate/Schlüssel in das Konfigurationsverzeichnis des OpenVPN-Servers.
cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/
OpenVPN-Client-Zertifikat und -Schlüssel generieren
Um das OpenVPN-Client-Zertifikat und den privaten Schlüssel zu generieren, führen Sie den folgenden Befehl aus:
cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
wo koromicha ist der Name des Clients, für den das Zertifikat und die Schlüssel generiert werden. Verwenden Sie immer einen eindeutigen allgemeinen Namen für jeden Client, für den Sie Zertifikate und Schlüssel generieren.
Um für den zweiten Client
./easyrsa build-client-full johndoe nopasszu generieren
Kopieren Sie Client-Zertifikate und -Schlüssel in das Client-Verzeichnis
Erstellen Sie für jeden Client ein Verzeichnis im Verzeichnis des OpenVPN-Clients
mkdir /etc/openvpn/client/{koromicha,johndoe}
Kopieren Sie als Nächstes alle vom Client generierten Zertifikate/Schlüssel und das CA-Zertifikat in das Konfigurationsverzeichnis des OpenVPN-Clients. Sie können
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/
OpenVPN-Server auf CentOS 8 konfigurieren
OpenVPN wird mit einer Beispielkonfigurationsdatei in seinem Dokumentationsverzeichnis geliefert. Kopieren Sie die Datei nach /etc/openvpn/server/
und passen Sie es an Ihre Bedürfnisse an.
cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/
Öffnen Sie die Konfiguration zur Änderung.
vim /etc/openvpn/server/server.conf
Die Datei ist stark kommentiert. Lesen Sie die Kommentare für alle Konfigurationsoptionen.
Unten sind unsere Konfigurationsoptionen in der einfachsten Form ohne Kommentare aufgeführt 255.255.255.0ifconfig-pool-persist ipp.txtpush „redirect-gateway def1 bypass-dhcp“push „dhcp-option DNS 208.67.222.222“push „dhcp-option DNS 192.168.10.3“client-to-clientkeepalive 10 120tls-auth ta .key 0 # Diese Datei ist secretcipher AES-256-CBCcomp-lzouser niemandgruppe niemandpersist-keypersist-tunstatus /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3explicit-exit-notify 1auth SHA512
Speichern und beenden Sie die Konfiguration, sobald Sie mit der Änderung fertig sind.
Möchten Sie Ihren OpenVPN-Clients feste/statische IP-Adressen zuweisen? Folgen Sie der Anleitung unten;
Weisen Sie OpenVPN-Clients statische IP-Adressen zu
Protokollverzeichnis erstellen;
mkdir /var/log/openvpn/
Erkunden Sie die Konfiguration und nehmen Sie weitere Feinabstimmungen vor, um sie an Ihre Bedürfnisse anzupassen.
OpenVPN-Server-Routing konfigurieren
Um sicherzustellen, dass der Datenverkehr vom Client über die IP-Adresse des Servers geleitet wird (hilft, die IP-Adresse des Clients zu maskieren), müssen Sie die IP-Weiterleitung auf dem OpenVPN-Server aktivieren;
echo "net.ipv4.ip_forward =1">> /etc/sysctl.conf
Führen Sie den folgenden Befehl aus, um die Änderungen zu übernehmen, ohne den Server neu zu starten.
sysctl --system
OpenVPN-Dienstport durch Firewall zulassen
firewall-cmd --add-port=1194/udp --permanent
Aktivieren Sie IP-Masquerading
firewall-cmd --add-masquerade --permanent
Leiten Sie den im angegebenen OpenVPN-Subnetz empfangenen Datenverkehr, in unserem Fall beispielsweise 10.8.0.0/24, an eine Schnittstelle weiter, über die Pakete gesendet werden.
Um die Schnittstelle zu finden, über die Pakete gesendet werden, führen Sie den folgenden Befehl aus:
ip route get 8.8.8.8
8.8.8.8 über 192.168.43.1 dev enp0s3 src 192.168.43.73 uid 0
Der Schnittstellenname und das definierte Subnetz können für Ihren Fall unterschiedlich sein. Ersetzen Sie sie entsprechend.
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp0s 3 -j MASKERADE
Laden Sie firewalld neu, damit die Änderungen wirksam werden.
firewall-cmd --reload
Starten Sie OpenVPN und legen Sie fest, dass es beim Systemstart ausgeführt wird.
systemctl enable --now [email protected]
Wenn der OpenVPN-Dienst ausgeführt wird, erstellt er eine Tunneling-Schnittstelle, tun0;
ip add s
4:tun0:mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0 valid_lft forever Preferred_lft forever inet6 fe80 ::2ed5:8f74:c456:96b7/64 Geltungsbereich Link stable-privacy gültig_lft für immer bevorzugt_lft für immer
Überprüfen der Protokolle;
tail /var/log/openvpn/openvpn.log
/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDPv4 link local (bound): [AF_INET][undef]:1194
UDPv4 link remote: [AF_UNSPEC]
GID set to nobody
UID set to nobody
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0
IFCONFIG POOL LIST
Initialization Sequence Completed
Ihr OpenVPN-Server ist jetzt betriebsbereit. Damit sind wir am Ende unseres Leitfadens zur Installation und Einrichtung von OpenVPN Server unter CentOS 8 angelangt.
Sie können jetzt mit der Konfiguration von OpenVPN-Clients fortfahren;
Installieren und konfigurieren Sie den OpenVPN-Client unter CentOS 8/Ubuntu 18.04
Konfigurieren Sie die OpenVPN-LDAP-basierte Authentifizierung.
Konfigurieren Sie die OpenVPN-LDAP-basierte Authentifizierung
Verwandte Anleitung
Konfigurieren Sie IPSEC VPN mit StrongSwan auf Ubuntu 18.04
Konfigurieren Sie den strongSwan VPN-Client auf Ubuntu 18.04/CentOS 8
Stellen Sie eine Verbindung zu Cisco VPN her, indem Sie die PCF-Datei auf Ubuntu verwenden