===== 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