OpenVPN - Centos 8

Script-Start

#!/bin/sh

# Pakete installieren

dnf install epel-release

dnf install openvpn git

git clone https://github.com/OpenVPN/easy-rsa.git

cp -R easy-rsa/easyrsa3/ /usr/share/

# Schlüssel & Zertifikate für OpenVPN erzeugen

# Im ersten Schritt müssen wir die Schlüssel und Zertifikate für OpenVPN erzeugen.

mkdir /etc/openvpn/easy-rsa

cd /etc/openvpn/easy-rsa

cp /usr/share/easyrsa3/vars.example vars.server

/usr/share/easyrsa3/easyrsa init-pki

/usr/share/easyrsa3/easyrsa build-ca nopass

/usr/share/easyrsa3/easyrsa gen-dh

# Schlüssel für die OpenVPN-Server erzeugen

/usr/share/easyrsa3/easyrsa build-server-full server nopass

# Schlüssel für die OpenVPN-Clients erzeugen

/usr/share/easyrsa3/easyrsa build-client-full client-1 nopass

# Schlüssel und Zertifikate übertragen

# Am Server bzw. Router kopieren wir die erstellten Schlüssel und Zertifikate in den OpenVPN Konfigurationsordner.

cd /etc/openvpn

ln -s /etc/openvpn/easy-rsa/pki/ca.crt server/ca.crt
ln -s /etc/openvpn/easy-rsa/pki/private/server.key server/server.key
ln -s /etc/openvpn/easy-rsa/pki/issued/server.crt server/server.crt
ln -s /etc/openvpn/easy-rsa/pki/dh.pem server/dh2048.pem

# VPN-Interface und Firewall-Einstellungen

# Im Gegensatz zu OpenWRT wird in Centos das Interface automatisch erzeugt. Wir müssen jedoch noch das Service in die Firewall eintragen.

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

firewall-cmd --reload
exit

OpenVPN - Server konfigurieren

Zuerst holen wir uns die Standardkonfiguration aus dem Dokumentenordner in den Konfigurationsordner:

cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/

Wir suchen die Zeile "topology subnet" und kommentieren diese aus. Dadurch wir ein 10.8.0.0/24 Subnet erzeugt. Der Server erhält die erste IP mit 10.8.0.1. Der erste Client erhält10.8.0.2 usw.

topology subnet

Der Key wird vorerst auskommentiert.

;tls-auth ta.key 0 # This file is secret

Um die Sicherheit zu erhöhen, soll OpenVPN ohne Privilegien laufen. Dazu suchen wir die Zeile mit den beiden Einträgen "user nobody" und "group nobody". Dieser werden wieder auskommentiert.

user nobody
group nobody

Damit OpenVPN auch neben einer IKEv2-Verbindung laufen kann, soll statt des TUN-Interfaces das TAP-Interface verwendet werden.

;dev tun
dev tap

Nun setzen wir OpenVPN als Bootservice und starten den Dienst.

systemctl enable openvpn-server@server.service 

systemctl start openvpn-server@server.service

OpenVPN - Client konfigurieren (OpenWRT & Centos)

Mit Hilfe eines FTP-Clients holen wir uns folgende Dateien in einen Konfigurationsordner für VPN auf dem Client.

/etc/openvpn/easy-rsa/pki/issued/client-1.crt

/etc/openvpn/easy-rsa/private/client-1.key

/etc/openvpn/easy-rsa/pki/ca.crt

Konfigurationsscript erstellen

In dem gleichen Ordner, in welchen wir zuvor die Client-Zertifikate heruntergeladen haben, erstellen wir die Datei "client-1.ovpn" und fügen folgende Zeilen ein:

client

dev tap
auth-nocache

remote <Server-IP>
port 1194

verb 3

ca ca.crt
cert client-1.crt
key client-1.key

cipher AES-256-CBC
remote-cert-tls server

# Kann auskommentiert werden um dem TUN Interface eine fixe MAC-Adresse zuzuweisen.
;lladdr 96:45:2A:82:EE:0D

Der "chiper" wurde hier nochmal extra angegeben. AES-256-CBC wird zwar als Standardverschlüsselung verwendet, ein Client hat jedoch versucht zu erst eine niedrigere Verschlüsselung zu verwenden. Daher hier die explizite Angabe.

Kommentare

Bitte addieren Sie 5 und 8.