OpenVPN-Server auf Rocky Linux 8 einrichten
EPEL-Repository installieren
Die neuesten OpenVPN-Pakete werden von den EPEL-Repositories auf Rocky Linux 8 und anderen ähnlichen Derivaten bereitgestellt. EPEL kann unter Rocky Linux 8 installiert werden, indem der folgende Befehl ausgeführt wird;
dnf install epel-release -y
Installieren Sie OpenVPN auf Rocky Linux 8
Sobald die EPEL-Repositorys vorhanden sind, können Sie jetzt das OpenVPN-Paket auf Rocky Linux 8 installieren, indem Sie den folgenden Befehl ausführen:
dnf installiere openvpn
Installieren Sie das Easy-RSA-CA-Dienstprogramm unter Rocky Linux 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.
Um sicherzustellen, dass Easy-RSA im Falle eines Upgrades keine vorgenommene Konfiguration überschreibt, kopieren Sie die Skripte in ein anderes Verzeichnis, vorzugsweise 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
Beispielbefehlsausgabe;
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/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.1g FIPS 21 Apr 2020Enter New CA Key Passphrase:Re-Enter New CA Key Passphrase:Generating RSA private key, 2048 bit langer Modul (2 Primzahlen) ..........................................++++ +................................................ ...+++++e ist 65537 (0x010001) Sie werden gleich aufgefordert, Informationen einzugeben, die in Ihre Zertifikatsanforderung aufgenommen werden. Was Sie gleich eingeben werden, ist ein sogenannter Distinguished Name oder DN ziemlich viele Felder, aber Sie können einige leer lassen. Für einige Felder gibt es einen Standardwert. Wenn Sie '.' eingeben, bleibt das Feld leer. ----- Gemeinsamer Name (z. B.:Ihr Benutzer, Host oder Server Name) [Easy-RSA CA]:Die Kifarunix-Demo-CACA-Erstellung ist 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
Die CA-Datei ist /etc/easy-rsa/pki/ca.crt
.
Diffie-Hellman-Parameter generieren
Während Sie sich im gleichen Easy-RSA-Verzeichnis wie oben befinden, führen Sie 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 werden die DH-Parameter in /etc/easy-rsa/pki/dh.pem
gespeichert 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 in Zertifikaten. ...................+++++Neuen privaten Schlüssel nach '/etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.4TRoOP schreiben '-----Using configuration from /etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.jTJJ7fEnter pass phrase for /etc/easy-rsa/pki/private/ca.key:Check that the Anforderung stimmt mit der Signatur übereinSignatur okDer Distinguished Name des Subjekts lautet wie folgtCommonName :ASN.1 12:'Server'Zertifikat muss bis 3. Oktober 18:03:20 2023 GMT (825 Tage)zertifiziert werden Datenbank mit 1 neuen Einträgen ausschreibenDatenbank aktualisiert vor>
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
Using SSL:openssl OpenSSL 1.1.1g FIPS 21 Apr 2020Uusing configuration from /etc/easy-rsa/pki/easy-rsa-10284.mSzk9F/tmp.qdix0APassphrase für /etc/easy-rsa/pki/private eingeben /ca.key:Eine aktualisierte CRL wurde erstellt.CRL-Datei:/etc/easy-rsa/pki/crl.pe
Das Widerrufszertifikat 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 gentoo nopass
Beispielausgabe;
Verwendung von SSL:openssl OpenSSL 1.1.1g FIPS 21. April 2020Generieren eines privaten RSA-Schlüssels........................++++++.. .................................................... .....................................+++++Neuen privaten Schlüssel nach '/etc /easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.tauo7u'-----Using configuration from /etc/easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.RxlTawEnter pass phrase for /etc/easy-rsa/pki/private/ca.key:Überprüfen Sie, ob die Anforderung mit der Signatur übereinstimmtSignatur okDer Distinguished Name des Antragstellers lautet wie folgtCommonName :ASN.1 12:„gentoo“Zertifikat muss bis 3. Oktober 18:05 zertifiziert werden:23 2023 GMT (825 Tage)Datenbank ausschreiben mit 1 neuen EinträgenDatenbank aktualisiert
wo gentoo 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 ein Verzeichnis für jeden Client im Verzeichnis des OpenVPN-Clients
mkdir /etc/openvpn/client/{gentoo,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/gentoo.crt,private/gentoo.key} /etc/openvpn/client/gentoo
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/
OpenVPN-Server auf Rocky Linux 8 konfigurieren
OpenVPN wird mit einer Beispielkonfigurationsdatei in seinem Dokumentationsverzeichnis geliefert. Kopieren Sie die Datei nach /etc/openvpn/server/
und ändern Sie es nach Ihren Bedürfnissen.
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 Nobodygroup Nobodypersist-keypersist-tunstatus /var/log/openvpn/openvpn-status.loglog-append /var/log/openvpn/openvpn.logverb 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;
Feste IP-Adressen für OpenVPN-Clients zuweisen
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
IP-Masquerading aktivieren
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 via 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0
cache
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: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> 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::afd7:17a6:57ee:7f3b/64 scope link stable-privacy
valid_lft forever preferred_lft forever
Ü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.255Socket-Puffer:R=[212992->212992] S=[212992->212992]UDPv4 Link Local (gebunden):[AF_INET][ undef]:1194UDPv4-Link remote:[AF_UNSPEC]GID auf none gesetztUID auf none gesetztMULTI:multi_init aufgerufen, r=256 v=256IFCONFIG POOL:base=10.8.0.2 size=252, ipv6=0IFCONFIG POOL LISTinitialization Sequence Completed
Ihr OpenVPN-Server ist jetzt betriebsbereit. Damit sind wir am Ende unseres Leitfadens zur Installation und Einrichtung von OpenVPN Server unter Rocky Linux 8 angelangt.
Sie können jetzt damit fortfahren, OpenVPN-Clients zu konfigurieren und sie über den VPN-Server zu verbinden.
Installieren und konfigurieren Sie den OpenVPN-Client unter Rocky Linux 8
Andere Tutorials
Feste IP-Adressen für OpenVPN-Clients zuweisen
OpenVPN-LDAP-basierte Authentifizierung konfigurieren