Inhaltsverzeichnis
Site-To-Site VPN mit OpenVPN auf pfSense
Version | Status | Datum | Author | URL |
---|---|---|---|---|
0.1 | Erster Entwurf | 27.Apr.2023 | Fabio Pagotto | |
0.2 | Feinschliff | 28.Apr.2023 | Fabio Pagotto | |
1.0 | Review und Freigabe | 28.Apr.2023 | Fabio Pagotto |
1. Kurzfassung
Dieses Tutorial behandelt die einrichtung einer Site-to-Site VPN Verbindung zwischen zwei pfSenses mit OpenVPN.
Es wird Beschrieben:
- Die nötigen voraussetzungen für die OpenVPN verbindung
- Die erstellung der OpenVPN verbindung.
- Das Testen der OpenVPN verbindung
2. Tutorial
2.0 Vorgaben
Für die Ausführung dieses Tutorials werden benötigt:
- Zwei pfSenses die mit dem Internet Verbunden sind
- Zugriff auf das webInterface der pfSenses
- Zugriff auf ein PC zum abspeichern von Dateien der pfSense
- Grundkenntnisse zur benutzung einer pfSense
2.1 Zertifikatsstruktur auf Server erstellen
Zuerst müssen sie einige Zertifikate auf dem OpenVPN Server erstellen. Dies wird benötigt, um die Verbindung zu erstellen.
Erstellen Sie zuerst eine „Certificate Authority“. Gehen Sie dafür auf „System → Certificates → Authorities“. Klicken sie Jetzt auf „+ Add“
Sie werden jetzt in den folgenden Einstellungen landen.
Tragen Sie folgende Werte ein:
Descriptive name: (Beliebiger Name hier)
Method: Create an Internal Certificate Authority
Randomize Serial: Häkchen setzen in Box
Lifetime (days): 3650
Common Name: (Beliebiger Name hier)
Die Werte „Country Code, State or Province etc.“ können ausgefüllt werden, müssen aber nicht.
Klicken sie, nachdem sie die Werte ausgefüllt haben, auf „Save“.
Jetzt müssen sie ein Server Zertifikat erstellen. Gehen Sie dafür auf „Certificates“, und klicken Sie danach auf „+ Add/Sign“.
Sie werden jetzt in den folgenden Einstellungen landen.
Tragen Sie folgende Werte ein:
Descriptive name: (Beliebiger Name hier)
Certificate authority: Das CA, was sie gerade eben erstellt haben.
Lifetime (days): 3650
Common Name: (Beliebiger Name hier)
Die Werte „Country Code, State or Province etc.“ können ausgefüllt werden, müssen aber nicht.
Certificate Type: Wählen Sie „Server Certificate“
Klicken sie, nachdem sie die Werte ausgefüllt haben, auf „Save“.
Jetzt müssen sie ein User Zertifikat erstellen. Gehen Sie dafür auf „Certificates“, und klicken Sie danach auf „+ Add/Sign“.
Sie werden jetzt in den folgenden Einstellungen landen.
Tragen Sie folgende Werte ein:
Descriptive name: (Beliebiger Name Hier)
Certificate authority: Das CA, was sie gerade eben erstellt haben.
Lifetime (days): 3650
Common Name: (Beliebiger Name Hier)
Die Werte „Country Code, State or Province etc.“ können ausgefüllt werden, müssen aber nicht.
Certificate Type: Wählen Sie „User Certificate“
Klicken sie, nachdem sie die Werte ausgefüllt haben, auf „Save“.
Jetzt sind alle nötigen Zertifikate erstellt. Jetzt müssen diese noch exportiert werden, damit sie auf der Client Firewall hochgeladen werden können.
Gehen Sie zu „CAs“ und klicken Sie auf neben dem vorhin erstellten CA, um das CA zu exportieren.
Gehen Sie zurück zu „Certificates“. Klicken Sie auf neben dem vorhin erstellten Client Zertifikat, um das Client-Zertifikat zu exportieren.
Klicken Sie auf neben dem vorhin erstellten Client Zertifikat, um den Key des Client-Zertifikats zu exportieren
Nachdem alles exportiert ist, sollte es so aussehen:
Behalten Sie diese, denn sie werden danach benötigt werden.
2.2 OpenVPN Server Erstellen
Jetzt, wo die Zertifikate erstellt sind, kann nun der Server eingerichtet werden.
Gehen Sie dafür auf „ VPN → OpenVPN → Servers“. Klicken sie danach auf „+ Add“.
Sie landen nun in den folgenden Einstellungen,
Tragen Sie folgende Werte ein:
Description: (Belibiger Name)
Sever mode: Peer to Peer ( SSL/TLS )
Device mode: tun - Layer 3 Tunnel Mode
Protocol: UDP on IPv4 only
Interface: WAN
Local port: 1195 (Wenn mehr Server erstellt werden müssen, einfach mehr Ports ab 1195 nutzen)
TLS Configuration: Häkchen setzen neben „Use a TLS Key“ und „Automatically generate a TLS Key.“
Peer Certificate Authority: Wählen Sie das CA, dass Sie vorhin erstellt haben.
Server Certificate: Wählen Sie das Server-Zertifikat, dass Sie vorhin erstellt haben.
IPv4 Tunnel Network: Geben Sie eine IP-Adresse mit Subnetz /30 ein-
IPv4 Local network(s):
Geben Sie hier die Netzadresse der Netzwerke ein, von wo der Client aus, zugreifen darf. (z. B. VLAN 10 IP: 172.16.10.1 = Netzadresse: 172.16.10.0) Wenn es mehrere Netzwerke sind, separieren Sie die Netzadresse mit einem Komma.
IPv4 Remote network(s): Gleich wie bei „Local network(s)“ Stattdessen sind es die Netzwerke, von dem der Server aus Zugreifen kann
Klicken Sie danach auf „Save“
Folgend darauf, klicken Sie auf , um den OpenVPN Server zu bearbeiten. Scrollen sie runter zur Box „TLS Key“. Diese sieht so aus:
Kopieren Sie jetzt den ganzen Inhalt der Box und fügen Sie ihn in eine Textdatei ein. Was Sie gerade kopiert haben, ist den TLS Schlüssel. Dieser wird für die Client-Instanz benötigt. Speichern Sie am besten deshalb die Textdatei bei den vorhin heruntergeladenen Zertifikaten ab.
2.3 Firewall Rules auf Server konfigurieren
Jetzt ist schon fast auf dem Server alles nötige eingerichtet. Noch müssen Sie die nötigen Firewall Rules konfigurieren.
Als Erstes konfigurieren Sie die WAN rule. Diese wird benötigt, sodass sich die Client-Firewall mit dem Server verbinden kann.
Gehen Sie auf „Firewall → Rules → WAN“. Klicken sie auf „^Add“.
Sie gelangen nun auf das Rule kreierungs interface.
Tragen Sie die folgenden werte ein:
„Protocol:„ Wählen Sie „UDP“ aus.
„Source:„ Wählen Sie „any“ aus.
„Destination:„ Wählen Sie „WAN adress“ aus.
„Destination Port Range:„ Geben Sie den im OpenVPN Server spezifizierten Port an.
„Description:„ Geben Sie eine beliebige Beschreibung ein.
Klicken Sie danach auf „Save“
Jetzt müssen Sie noch die OpenVPN Rule Konfigurieren.
Gehen Sie dafür auf „Firewall → Rules → OpenVPN“. Danach klicken Sie auf „^Add“.
Wieder landen Sie im Rule kreierungs interface.
Tragen Sie hier folgende Werte ein:
„Protocol:„ Wählen Sie „any“ aus.
„Source:„ Wählen Sie „any“ aus.
„Destination:„ Wählen Sie „any aus.
„Description:„ Geben Sie eine beliebige Beschreibung ein.
Klicken Sie auf „Save“
Vergessen Sie nicht nachher auf „Apply Changes“ zu klicken!
Hinweis: Die oben aufgeführte rule erlaubt allen VLANs und Clients, die über OpenVPN laufen können, den zugriff von überall zu überall im OpenVPN. Für die erstmalige Einrichtung eines VPN-Tunnels ist dies auch kein Problem. Bei der produktiven Verwendung wird jedoch empfohlen diese rule zu löschen und stattdessen diese mit Rules ähnlich wie auf den üblichen Interfaces zu reglementiern.
Jetzt sind alle nötigen Parameter auf dem Server konfiguriert.
2.4 Zertifikate auf Client Firewall einrichten
Jetzt haben Sie alles, was für den Server benötigt wird, konfiguriert. Nun geht es an die Client-Firewall.
Wichtig: Bedenken Sie, dass die Zertifikate, die vorhin erstellt worden sind, auf die Client-Firewall hochgeladen werden müssen. Versuchen Sie deshalb sicherzustellen, dass Sie auf dem Gerät, über wo Sie auf die Client-Firewall zugreifen, die Zertifikate genutzt werden können.
Loggen Sie sich in die Client-Firewall ein.
Navigieren Sie zu „System → Cert. Manager → CAs“.
Klicken Sie auf “+Add“
Sie landen wieder im CA erstellungsmodus.
Tragen Sie folgende Werte ein.
„Descriptive name:„ Geben Sie einen beliebigen Namen ein.
„Method:„ Wählen Sie „Import an existing Certificate Authority“ aus.
„Certificate data:„ Öffnen Sie, das CA, was Sie exportiert haben, in einem Texteditor. Es wird wie folgt aussehen.
Kopieren Sie den gesamten Inhalt in die Box „Certificate data“.
Klicken Sie danach auf „Save“.
Navigieren Sie jetzt zu „System → Cert. Manager → Certificates“. Klicken Sie auf “+Add“.
Sie landen auf dem folgenden Bildschirm.
Tragen Sie die folgenden Werte ein.
„Method:„ Wählen Sie „Import an existing Certificate“ aus.
„Descriptive Name:„ Geben Sie hier einen beliebigen Namen ein.
„Certificate data:„ Öffnen Sie hier, das Client-Zertifikat, was Sie exportiert haben, in einem Texteditor.
Kopieren Sie den gesamten Inhalt in die Box, „Certificate data“.
„Private key data:„ Öffnen Sie hier, den Client-Zertifikat Private Key, den Sie exportiert haben, in einem Texteditor.
Kopieren Sie den gesamten Inhalt in die Box, „Private key data“.
Klicken Sie danach auf „Save“.
2.5 OpenVPN Client Instanz erstellen und Firewall rules konfigurieren
Jetzt, wo die nötigen Zertifikate importiert sind, kann die Client-VPN Instanz eröffnet werden.
Navigieren Sie zu: „VPN → OpenVPN → Clients“. Klicken Sie auf “+Add“
Sie landen in der folgenden Konfiguration.
Tragen Sie folgende werte ein:
„Server mode:„ Wählen Sie „Peer to Peer ( SSL/TLS )„
„Device mode:„ Wählen Sie „tun - Layer 3 Tunnel Mode“
„Interface:„ Wählen Sie „WAN“ aus.
„Server host or address:„ Geben Sie die WAN IP-Adresse des Servers.
„Server port“ Den Port den Sie in der Server Instanz eingegeben haben.
„Description:„ Geben Sie hier eine beliebige Beschreibung ein.
„TLS Configuration:„ Wählen sie „Automatically generate a TLS Key“ ab.
„TLS Key:„ Öffnen Sie das Textdokument mit dem TLS Schlüssel, und Kopieren Sie den gesamten inhalt in die Textbox.
„Peer Certificate Authority:„ Wählen Sie das vorhin importierte CA aus.
„Client Certificate:„ Wählen Sie das vorhin importierte Client-Zertifikat aus.
„IPv4 Tunnel Network:„ Geben sie Hier dieselbe Adresse wie im Server ein.
„IPv4 Remote network(s):„ Gleich wie beim Server, geben Sie hier die Netzadressen der Netzwerke, auf die der Client zugreifen kann
Klicken Sie auf „Save“
Zum Abschluss müssen Sie noch die Firewall rules auf dem Client konfigurieren.
Gehen Sie dafür auf „Firewall → Rules → OpenVPN“. Danach klicken Sie auf „^Add“.
Sie landen im Rule kreierungs interface.
Tragen Sie hier folgende Werte ein:
„Protocol:„ Wählen Sie „any“ aus.
„Source:„ Wählen Sie „any“ aus.
„Destination:„ Wählen Sie „any aus.
„Description:„ Geben Sie eine beliebige Beschreibung ein.
Klicken Sie auf „Save“
Vergessen Sie nicht nachher auf „Apply Changes“ zu Klicken!
Hinweis: Es ist der selbe Hinweis zu beachten wie bei der OpenVPN Rule auf dem Server.
Jetzt sind auch auf dem Client alle nötigen parameter Konfiguriert
2.6 OpenVPN Verbindung Testen
Jetzt ist alles eingerichtet. Testen Sie nun ob die Verbindung auch Funktioniert.
Gehen Sie dafür auf einem der beiden pfSenses auf „Stauts → OpenVPN“.
Wenn die Verbindung läuft, sollte die folgende Meldung erscheinen:
Sollte dies der Fall sein, testen Sie die Verbindung in einem weiteren schritt.
Versuchen Sie zwischen einem Netzwerk auf den beiden pfSenses zu Pingen . z. B. VLAN 1 (pfSense1) → VLAN 1 (pfSense2).
Wenn der ping erfolgreich war, funktioniert der OpenVPN Tunnel einwandfrei und Sie haben erfolgreich dieses Tutorial beendet!
3. Quellenverzeichnis
Hier zu finden sind die nötigen Quellen, die zur Erstellung dieser Doku genutzt worden sind.
Offizielle Dokumentation von Netgate: https://docs.netgate.com/pfsense/en/latest/recipes/openvpn-s2s-tls.html
Flurin Pudill