====== Installationsanleitung - Konfiguration des OpenVPN Remote Access Servers ====== ^ Version ^ Status ^ Datum ^ Author ^ URL ^ | 0.1| Erster Entwurf| 27.08.2020| Sabareeshan Nadeswaran| | | 0.2| Ergänzungen| 01.09.2020| Sabareeshan Nadeswaran, Egil Rüefli| | | 1.0| Review und Freigabe| 01.09.2020| Egil Rüefli| | ===== 1. Kurzfassung ===== Mit OpenVPN Remote Access Server ist es möglich mit dem VPN-Client eine Verbindung durch ein geschützes Tunnelnetzwerk zum VPN-Server herzustellen. Für die Umsetzung wurde eine pfSense-Firewall verwendet, auf welcher der OpenVPN-Server konfiguriert wurde. Als erstes eine interne Zertifizierungsstelle auf der FW erstellt. Dann wurde ein Server-Zertifikat generiert und von der internen Zertifizierungsstelle validiert. Dann wurde ein OpenVPN-Server auf der FW erstellt, welcher mit dem Server-Zertifikat ausgestattet ist. Bei diesem Vorgang definierte man auch das Tunnelnetzwerk, und das LAN-Netz mit der produktiven Arbeitsumgebung. Anschliessend ordnete man dem Dienst den Port 1194/UDP((https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports)), über den er vom VPN-Client erreicht werden kann. Dann werden die Rules eingerichtet. Auf dem WAN-Interface wurden alle Ports ausser 1194 geblockt. Auf dem OpenVPN-Interface wurde eine Regel die den Zugang ins LAN ermöglicht. Als letztes wurde ein Benutzer erstellt, welchem wir erlauben, sich mit einem Passwort und einem Zertifikat über den OpenVPN-Client mit dem OpenVPN-Server zu verbinden. Im Test konnte sich der User anmelden und seine persönlichen Daten aus dem geschützten Netzwerk abrufen. ===== 2. Installation ===== ==== 2.1 Funktionsweise des OpenVPN Remote Access Server ==== Der OpenVPN-Server befindet sich auf dem WAN-Interface. Der Client ist im selben Netz, wie das WAN-Interface. Nun baut der Client eine Verbindung zum VPN-Server via Tunnelnetzwerk auf. Diese Verbindung nutzt den Port 1194. Mit der Regel auf dem Interface OpenVPN Server erlauben wir dem VPN-Client vom WAN auf dem LAN Interface Zugang zu erhalten, und somit auch ins LAN. ==== 2.2 Einrichten einer internen Zertifizierungsstelle ==== Um eine interne Zertifizierungsstelle zu erstellen, navigiert man zu System-->Certificate Manager-->CAs bei der FW und klickt auf den grünen Button "add". Dann werden die Einstellungen so übernommen wie beim Bild unten. {{:technische-dokumentationen:installationsanleitungen:create_ca.jpg?400|}} Die wichtigsten Optionen sind hier **Common Name** und **Method**. Im Common Name steht der Name des Objekts das validiert werden soll, also entweder ein Hostname oder der Name einer Person. In der Method wird festgelegt, wie die Zertifizierungsstelle arbeitet. Die Zertifzierungsstelle wird benötigt, um eigene Server- und Userzertifikate zu validieren. Nachdem alle Einstellungen vorgenommen wurden, sollte ein neuer Eintrag mit allen wichtigen Informationen über die Zertifizierungsstelle erscheinen. ==== 2.3 Erstellen eines Server-Zertifikat für die FW ==== Jetzt wird ein Server-Zertifikat erstellt, welches dann von unserer zuvor erstellten Stelle validiert wird. Man klickt auf den grünen Button "add/Sign",wenn man zu System, dann Certificate Manager, dann zu Certificates navigiert. Dann übernimmt man die Einstellungen so wie es vorgegben ist.(siehe Bild unten) {{:technische-dokumentationen:installationsanleitungen:server_ca_v2.jpg?400|}} ==== 2.4 Konfiguration des OpenVPN-Servers ==== Unter dem Menüpunkt VPN/OpenVPN/ kann man auf der Registerkarte Server kann man die notwendigen Konfigurationen vornehmen für das Erstellen eines OpenVPN-Servers. {{:technische-dokumentationen:installationsanleitungen:2020-08-28_10_45_14-pfsense.localdomain_-_vpn_openvpn_servers_edit.jpg?400|}} Bei der Einstellung Nr. 1 wird der Zugriff auf den Server festgelegt. Die angewählte Option bedeutet dass man mit Zertifikaten und Benutzerauthentifizierung denn Zugriff einschränkt. In Einstellung Nr 2. wird angegeben, welcher Port verwendet wird, wenn der VPN Client und das WAN-Interface der FW miteinander kommunizieren. Jetzt werden die "Cryptographic Settings" angepasst. {{:technische-dokumentationen:installationsanleitungen:2020-08-28_11_22_17-pfsense.localdomain_-_vpn_openvpn_servers_edit.jpg?400|}} Die erste Einstellung bestätigt durch Setzen eines Häkchens die Nutzung des TLS-Schlüssels((https://www.websecurity.digicert.com/de/de/security-topics/what-is-ssl-tls-https)). Die zweite Einstellung ist dazu da, die interne Zertifizierungsstelle anzugeben, die für die Validierung des Schlüssel zuständig ist. In der dritten Einstellung wird das Server-Zertifikat ausgewählt, welches bei der Anmeldung die Echtheit des Servers garantiert. Schliesslich müssen bei den "Tunnel Settings" noch zwei Einträge gemacht werden. {{:technische-dokumentationen:installationsanleitungen:2020-08-28_11_51_31-pfsense.localdomain_-_vpn_openvpn_servers_edit.jpg?400|}} Zum einem die Eingabe eines IPV4 Subnetzes bei der Option „IPV4 Tunnel Network“. Das Tunnelnetzwerk ist ein virtuelles Zwischennetzwerk, das der Kommunikation zwischen OpenVPN-Client und OpenVPN-Server dient. Hier sollte Kein Subnetz verwendet werden, welches bereits in der aktuellen Infrastruktur verwendet wird. Die zweite Änderung ist das Setzen des „IPV4 Local Networks“. Dort gibt man das/die LAN-Netz/e an, welches man hinter der FW erreichen will. Der nächste Schritt ist das Festlegen der FW Rules. ==== 2.5 Setzen der FW Rules ==== Das erste Interface ist das WAN-Interface. Regeln zum Anpassen findet man auf der pfSense unter Firewall/Rules. {{:technische-dokumentationen:installationsanleitungen:2020-08-28_13_14_05-.jpg?400|}} Bei Nummer 1 definiert man den verwendeten Port zur Kommunikation zum WAN-Interface. Bei Einstellung 2 welche optional, aber empfehlenswert ist, wird eine sinngemässe Beschreibung eingegeben. Nun werden die FW-Rules für das OpenVPN-Interface definiert: {{:technische-dokumentationen:installationsanleitungen:2020-08-28_13_28_32-pfsense.localdomain_-_firewall_rules_edit.jpg?400|}} Nun wird der Benutzer erstellt welchen man zur Authentifizierung benötigt. ==== 2.6 OpenVPN-User erstellen und exportieren des Clients inkl. Inbetriebnahme ==== Im Menü System/User_Manager wird ein neuer User eröffnet. Nennenwert ist hier nur, dass man im entsprechenden Kontrollkästchen, das "Certificate" aktiviert und daraufhin die Kategorie "Create Certificate for User"auswählt. Die Änderungen werden so übernommen, wie es das Abbild unten aufzeigt. {{:technische-dokumentationen:installationsanleitungen:2020-08-28_13_39_02-.jpg?400|}} Nachdem der Benutzer erstellt wurde, wird nun eine ausführbare Datei exportiert, mit welcher man den VPN-Client samt Konfiguration und Zertifikaten automatisch auf Windows 10 installieren kann. Um die ausführbare Datei zu exportieren, benötigt man eine zusätzliche Software, die man im pfSense installieren kann. Unter "Package Manager" findet man das nötige Plugin bei Available Packages. Die SW heisst openvpn-client-export. Nach der Installation des Plugins befindet sich im Menü VPN/OpenVPN ein Tab mit dem Namen "Client Export Utility". Die Änderungen sind wie im unteren Bild vorzunehmen.Danach wird die EXE-Datei für das entsprechende OS heruntergeladen und entpackt. Die Datei wird auf dem Client ausgeführt. Zur Erinnerung: Der Client muss sich im selben Subnetz befinden wie WAN-Interface. {{:technische-dokumentationen:installationsanleitungen:2020-08-28_13_52_32-pfsense.localdomain_-_openvpn_client_export_utility.jpg?400|}} {{:technische-dokumentationen:installationsanleitungen:2020-08-28_13_55_04-pfsense.localdomain_-_openvpn_client_export_utility.jpg?400|}} ===== 3. Testing ===== ==== 3.1 Test 1 ==== ^ Testfall Nr. | #1 | ^ Beschreibung | Erfolgreiche Verbindung vom VPN-Client zu LAN via Tunnel-Netzewrk | ^ Vorgehen | Client für Windows exportieren und installieren. Dann Logindaten des VPN-User und verbinden. CMD aufrufen und IP anzeigen. Ping 192.168.198.1 | | ::: | ipconfig | | ::: | ping 192.168.198.1 | ^ Voraussetzung / Umfeld | Client muss im selben Subnetz wie das WAN-Interface und die Konfigurationen sind so vorgenommen worden wie es bei der Installationsanleitung dokumentiert wurde. | ^ Erwartetes Resultat | Client ist zwar im 192.168.77.0/24 aber kommt aufs 192.168.198.0/24 und benutzt den eingestellten Tunnel-Netzwerk für die Kommunikation| ^ OK / nicht OK | OK | ^ Aufgetretene Fehler / Bemerkungen | {{:technische-dokumentationen:installationsanleitungen:beweis_connect.png?400|}}{{:technische-dokumentationen:installationsanleitungen:beweis_ping.jpg?400|}} | ===== 4. Auswertung ===== Bevor ich mit der VF den ersten Testlauf bezüglich Realisation hatte, hatte man mir die Rolle von der Zertifizierungsstelle erläutert. Dann wie der Austausch abläuft mit den Zertifikaten. Als letztes die Kommunikation zwischen dem VPN-Client und dem VPN-Server, darunter auch, dass die Kommunikation in einem geschützten Tunnel-Netzwerk ausgetauscht wird. Als der VPN-Client die Fehlermeldung TLS-Handshake failed anzeigte, stellte man fest, dass bei den WAN Rules die Default Regeln eingestellt waren. Eine der Regeln war private IP-Subnetze nicht durchzulassen. Da man in diesem technischen Bericht in einer Testumgebung arbeitete, kann man die Regeln deaktivieren. Sobald man die Realisation in einer produktiven Umgebung implementiert, muss man die Regeln für WAN nicht verändern. ===== 5. Quellenverzeichnis ===== [[de:https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports]] [[de:https://docs.netgate.com/pfsense/en/latest/vpn/openvpn/openvpn-remote-access-server.html]] [[de:https://www.websecurity.digicert.com/de/de/security-topics/what-is-ssl-tls-https]] ===== 6. Glossar ===== ==== 6.1 A-M ==== |^Begriff ^ Beschreibung | |^Common Name ^ Name des Objekts ,welche validiert wird mit einem Zertifikat.| |^Interne Zertifizierungsstelle ^ Zuständig für die Validierung von SSL-Zertifikaten im Web. In jedem Browser gibt es eine Datenbank mit Einträgen von verschiedenen Zertifizierungsstellen.| ==== 6.2 N-Z ==== |^Begriff ^ Beschreibung | |^SSL/TLS ^ SSL ausgeschrieben Secure Sockets Layer, ist notwendig wenn verschlüsselte Daten zwischen zwei Systemen ausgetauscht werden. TLS, Transport Secure Layer ist der Nachfolger von SSL und somit auch sicherer. | |^VPN ^ Virtual Private Networks wird verwendet um von extern auf interne Firmennetzwerke mit einer geschützten Verbindung zu gelangen. |