===== OpenVPN =====
Doku: https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
OpenVPN Port: 1194
=== Verzeichnisstruktur von OpenVPN ==
Aufruf Verzeichnis für die Configdatei
-------------------------------------------------------------
openvpn@ /etc/openvpn
openvpn-client@ /etc/openvpn/client
openvpn-server@ /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 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
Pfad zu den Service-Files: /lib/systemd/system
=== 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/
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:
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//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/
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 nopass
z. B. easyrsa gen-req centos-srv nopass
=== Keys für den jeden VPN-Client generieren ===
easyrsa gen-req nopass
z. B. easyrsa gen-req debian-efi nopass
=== Erzeuge Request-Dateien importieren ===
easyrsa import-req /etc/openvpn/keys/pki/.req
z. B. easyrsa import-req /etc/openvpn/keys/pki/reqs/centos-srv.req vpn-server
easyrsa import-req /etc/openvpn/keys/pki/reqs/.req
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/.req\\
z. B. /etc/openvpn/keys/pki/reqs/centos-srv.req
/etc/openvpn/keys/pki/reqs/.req\\
z. B. /etc/openvpn/keys/pki/reqs/debian-efi.req
/etc/openvpn/keys/pki/issued/.crt\\
z. B. /etc/openvpn/keys/pki/issued/vpn-server.crt
/etc/openvpn/keys/pki/issued/.crt\\
z. B. /etc/openvpn/keys/pki/issued/vpn-client.crt
/etc/openvpn/keys/pki/private/ca.key
/etc/openvpn/keys/pki/private/.key\\
z. B. /etc/openvpn/keys/pki/private/centos-srv.key
/etc/openvpn/keys/pki/private/.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 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