Inhaltsverzeichnis

OpenVPN

Doku: https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage <WRAP center round tip 40%>OpenVPN Port: 1194 </WRAP>

Verzeichnisstruktur von OpenVPN

Aufruf                        Verzeichnis für die Configdatei  
-------------------------------------------------------------
openvpn@<configfile>          /etc/openvpn
openvpn-client@<configfile>   /etc/openvpn/client
openvpn-server@<configfile>   /etc/openvpn/server

Als Basis für die unten genannten Beispiele, dienten zwei Server mit folgender Netzkonfiguration:

centos-srv: 172.16.17.1/28 [LAN-1], 172.16.19.1/28 [VPN-Netz]
debian-efi: 172.16.17.10/28 [LAN-1]

Peer-to-Peer-VPN

Debian 10.x: OpenVPN installieren

apt-get install openvpn

Debian 10.x: Konfigurationsdiretory von OpenVPN

/etc/openvpn
  /client
  /server

Konfigurationsfile für die Peer-To-Peer Verbindung: /etc/openvpn/p2p.conf

mode p2p
cipher      AES-256-CBC
auth-nocache # Wenn gesetzt muss das PW bei Verbindungsabbruch neu eingegeben werden wenn die Verbindung abbricht
port 1194
proto udp4
dev tun
# Beachten Sie die Umkehrung der Reihenfolge bei den IP-Adressen lokale IP -> remote IP
ifconfig 10.111.0.1 10.111.0.2
secret p2p.key
ping 5
ping-restart 120

Debian 10.x: Den notwendigen p2p.key erzeugen

cd /etc/openvpn
openvpn --genkey --secret p2p.key

Den generierten p2p.key auf den Peer (centos-srv) übertragen:

scp /etc/openvpn/p2p.key root@172.16.17.1:/etc/openvpn/

Debian 10.x: OpenVPN-Dienst starten

systemctl start openvpn@p2p

Centos7: Notwendige Pakete installieren

yum install openvpn -y

Centos7: OpenVPN Konfigurationsdirektory

/etc/openvpn
  client
  server

Centos7: OpenVPN Konfigurationsdatei für unsere Peer-To-Peer Verbindung

vi /etc/openvpn/p2p.conf
# Modus der Verbindung festlegen:
mode p2p
cipher      AES-256-CBC
auth-nocache # Wenn gesetzt muss das PW bei Verbindungsabbruch neu eingegeben werden wenn die 
               Verbindung abbricht
# Remote-VPN-Computer und Port angeben!
# Es kann als Ziel entweder eine IP-Adresse oder ein FQDN verwendet werden
remote <Remoter_Server-IP oder FQDN> 1194
# Protokoll der Transportschicht auswählen:
proto udp4
# Tunnelgerät definieren:
dev tun
# Zuerst die lokale und dann die Remote-IP-Adresse angeben:
ifconfig 10.111.0.2 10.111.0.1
# Auf die Schlüsseldatei verweisen:
secret static.key
# Zyklisch die Verbindung prüfen und ggf. neu aufbauen:
ping 5
ping-restart 120
ping-timer-rem
# Protokollierungsgrad festlegen:
verb 3
mute 20

Den vom Debian kopierten Key ins OpenVPN-Verzeichnis kopieren

mv /tmp/p2p.key /etc/openvpn

<WRAP center round info 60%> Pfad zu den Service-Files: /lib/systemd/system </WRAP>

Centos7: OpenVPN Dienst starten

systemctl start openvpn@p2p





VPN-Server für mehrere gleichzeitige Client Zugriffe konfigurieren

Doku: https://www.howtoforge.com/tutorial/how-to-install-openvpn-server-and-client-with-easy-rsa-3-on-centos-8/

<WRAP center round box 100%> Als erstes richten wir eine zusätzliche Ethernet-Verbindung mit der festen IP 172.16.19.1/28 ein. Das Netz richten wir für unser kleines VPN-Netz ein: </WRAP>

nmtui
systemctl restart NetworkManager

Centos7: Notwendige OpenVPN Pakete installieren

yum install openvpn easy-rsa -y

Der Pfad zum Tool easyrsa liegt unter: /usr/share/easy-rsa/<VERSION>/easyrsa

z. B. /usr/share/easy-rsa/3.0.8 (Stand: 12.01.2020)

Damit das System während unserer Einrichtung den Pfad, kennt folgendes ausführen:

export PATH=$PATH:/usr/share/easy-rsa/<VERSION>
z. B. export PATH=$PATH:/usr/share/easy-rsa/3.0.8

OpenVPN-Server Root-Zertifikat erstellen

mkdir -p /etc/openvpn/keys
cd /etc/openvpn/keys

easyrsa init-pki /etc/openvpn/keys
easyrsa build-ca

Keys für den VPN-Server generieren

easyrsa gen-req <UNIQUE_SERVER_SHORT_NAME> nopass
z. B. easyrsa gen-req centos-srv nopass

Keys für den jeden VPN-Client generieren

easyrsa gen-req <UNIQUE_CLIENT_SHORT_NAME> nopass
z. B.  easyrsa gen-req debian-efi nopass

Erzeuge Request-Dateien importieren

easyrsa import-req /etc/openvpn/keys/pki/<UNIQUE_SERVER_SHORT_NAME>.req <UNIQUE_SERVER_SHORT_FILE_NAME>
z. B. easyrsa import-req /etc/openvpn/keys/pki/reqs/centos-srv.req vpn-server

easyrsa import-req /etc/openvpn/keys/pki/reqs/<UNIQUE_CLIENT_SHORT_NAME>.req <UNIQUE_CLIENT_SHORT_FILE_NAME>
z. B. easyrsa import-req /etc/openvpn/keys/pki/reqs/debian-efi.req vpn-client

Request-Dateien mit dem Root-Zertifikat signieren

easyrsa sign-req server vpn-server
easyrsa sign-req client vpn-client
Folgende Dateien wurden jetzt erzeugt
/etc/openvpn/keys/pki/ca.crt

/etc/openvpn/keys/pki/reqs/<UNIQUE_SERVER_SHORT_NAME>.req\\
z. B. /etc/openvpn/keys/pki/reqs/centos-srv.req

/etc/openvpn/keys/pki/reqs/<UNIQUE_CLIENT_SHORT_NAME>.req\\
z. B. /etc/openvpn/keys/pki/reqs/debian-efi.req

/etc/openvpn/keys/pki/issued/<UNIQUE_SERVER_SHORT_FILE_NAME>.crt\\
z. B. /etc/openvpn/keys/pki/issued/vpn-server.crt

/etc/openvpn/keys/pki/issued/<UNIQUE_CLIENT_SHORT_FILE_NAME>.crt\\
z. B. /etc/openvpn/keys/pki/issued/vpn-client.crt

/etc/openvpn/keys/pki/private/ca.key

/etc/openvpn/keys/pki/private/<UNIQUE_SERVER_SHORT_NAME>.key\\
z. B. /etc/openvpn/keys/pki/private/centos-srv.key

/etc/openvpn/keys/pki/private/<UNIQUE_CLIENT_SHORT_NAME>.key\\
z. B. /etc/openvpn/keys/pki/private/debian-efi.key

Kryptografischen Schlüssel erzeugen

openssl dhparam -out dh4096.pem 4096

Die erzeugten Keys bereitstellen für den centos-srv Server

 cp /etc/openvpn/keys/pki/ca.crt /etc/openvpn/keys/ca.crt
 cp /etc/openvpn/keys/pki/issued/vpn-server.crt  /etc/openvpn/keys/vpn-server.crt
 cp /etc/openvpn/keys/pki/private/centos-srv.key /etc/openvpn/keys/centos-srv.key
 -> hier zum cut&paste
  cp /etc/openvpn/keys/pki/ca.crt /etc/openvpn/keys/ca.crt && cp /etc/openvpn/keys/pki/issued/vpn-server.crt /etc/openvpn/keys/vpn-server.crt && cp /etc/openvpn/keys/pki/private/centos-srv.key /etc/openvpn/keys/centos-srv.key

Die erzeugten Keys bereitstellen für den debian-efi Client

Centos7: Generierte Keys zum Debian-System kopieren
 scp pki/ca.crt root@172.16.17.10:/tmp
 scp pki/issued/vpn-client.crt root@172.16.17.10:/tmp
 scp pki/private/debian-efi.key root@172.16.17.10:/tmp
Auf debian-efi die Keys in das OpenVPN-Verzeichnis kopieren
 mkdir -p /etc/openvpn/keys
 cp /tmp/ca.crt /etc/openvpn/keys/
 cp /tmp/vpn-client.crt /etc/openvpn/keys/
 cp /tmp/debian-efi.key /etc/openvpn/keys/

Server-Konfiguration für den centos-srv anlegen: vi /etc/openvpn/server/server.conf

### Serverkonfigurationsdatei ###
port 1194
proto udp4
dev tun
# Zertifikate und Schlüssel angeben:
cd ../keys
ca ca.crt
cert vpn-server.crt
key centos-srv.key
dh dh1024.pem
# VPN-Netzwerkadressen zur automatischen Verteilung
# Die erste Adresse verwendet der Server selbst.
server 172.16.20.0 255.255.255.240
# Für wiederkehrende Clients verwendete IP-Adressen
# in dieser Datei speichern:
ifconfig-pool-persist ipp.txt
# Routing-Eintrag dem Client hinzufügen
push "route 172.16.19.0 255.255.255.240"
# Dem Client einen DNS-Server zuweisen
push "dhcp-option DNS 172.16.19.1"
# Ermögliche Kontakt zwischen Clients
client-to-client
# Verbindung alle 10 Sek. testen (ICMP). Wenn nach
# 120 Sek. keine Antwort Tunnel ggf. neu aufbauen
keepalive 10 120
# Kompression einschalten
comp-lzo
# Maximale Anzahl von Clients festlegen
max-clients 40
# Statusdatei festlegen
status openvpn-status.log
# Mittleren Protokollierungsgrad festlegen
verb 3

# Client-Konfiguration (debian-clt)

=== Konfiguration für den debian-efi Client anlegen: vi /etc/openvpn/client/client.conf

### Client-Konfiguration ###
client
dev tun
proto udp4
# VPN-Server:
remote <WAN-IP oder FQDN-Centos-Srv> 1194    # WAN
# Zertifikate und Schlüssel:
cd ../keys
ca ca.crt
cert vpn-client.crt
key debian-efi.key
# Kompression einschalten
comp-lzo
verb 3

Firewall Regel für OpenVPN einpflegen

firewall-cmd --permanent --zone=public --add-port=1194/udp
oder firewall-cmd --permanent --zone=WAN --add-port=1194/udp
firewall-cmd --reload
OpenVPN-Server auf centos-srv starten
systemctl start openvpn-server@server
OpenVPN-Client auf debian-efi starten
systemctl start openvpn-client@client
Test der OpenVPN-Verbindung auf dem debian-efi durchführen
 ping -c 4 172.16.19.1