Inhaltsverzeichnis
Die COVID-19 Krise treibt momentan die Mitarbeiter vieler Firmen zurecht ins Home Office. Dabei ist es wichtig, dass die Mitarbeiter vollen Zugriff auf das Firmennetzwerk erlangen, um daheim produktiv und ohne größere Einschränkungen arbeiten können.
Große Firmen sind hier bestens gerüstet, aber auch für kleinere Firmen bietet OpenVPN in Kombination mit einer OPNsense Firewall eine einfache, kostengünstige und sichere Lösung für den Zugriff der Mitarbeiter auf die Firmennetze. Natürlich gilt dies auch ganz klassisch für den privaten Anwender: Verschlüsselter Fernzugriff auf sein Heimnetzwerk – egal, wo man sich gerade aufhält (Internetverbindung vorausgesetzt ;-) ).
Wie man eine solche VPN-Verbindung auf einer OPNsense Appliance konfiguriert, möchte ich in diesem Artikel vorstellen.
Voraussetzungen
Natürlich benötigt man als Grundstein eine OPNsense Firewall, am besten als sogenannte Appliance, d.h. als eigenständiges Gerät. Wie man eine solche Appliance selbst bauen kann und welche Hardware dafür hervorragend geeignet ist, erfahrt ihr in meinem HowTo Selfmade OPNsense Appliance. Für knapp 400€ habt ihr eine professionelle Firewall-Lösung, die es auch kleineren Betrieben ermöglicht, ihren Mitarbeitern eine VPN Verbindung zum Firmennetz zu bieten (entsprechende Internetanbindung natürlich vorausgesetzt).
Diese Firewall Appliance kann sowohl direkt am Internet betrieben werden, als auch hinter einem Einwahlmodem, wie Fritz!Box, Kabelrouter (Vodafone etc.).
Was ist VPN?
Ein VPN ist ein sogenanntes Virtual Private Network, auf deutsch also ein virtuelles privates Netzwerk. Im Endeffekt macht ein VPN nichts anders, als euer lokales (privates) Netzwerk bzw. euren lokalen Computer (Client) mit einem entfernten (privaten) Netzwerk zu verbinden. Euer Computer ist also im entfernten Netzwerk eingebunden, als wärt ihr vor Ort, z.B. im Büro. Man erlangt (je nach Konfiguration) also auf die gleichen Netzwerkteilnehmer, als würde man direkt an seinem Arbeitsplatz sitzen. Oder eben daheim, wenn man sich von unterwegs über VPN mit seinem Heimnetzwerk verbindet.
Dazu erzeugt der VPN-Server zusammen mit dem Client einen verschlüsselten Tunnel. Über diesen Tunnel erreicht man das entfernte Netzwerk, ohne dabei das Netzwerk in Gefahr zu bringen.
Wer mehr zum Thema VPN wissen möchte, sollte sich auf Wikipedia den entsprechenden Artikel durchlesen: Virtual Private Network.
OpenVPN einrichten
Eine freie Software zum erzeugen von VPN-Tunnel ist OpenVPN. OpenVPN ist Open Source und für verschiedenste Plattformen erhältlich, so eben auch für OpnSense, wo der Server bereits mitkommt und „nur“ konfiguriert und aktiviert werden muss. Client Software gibt es für alle gängigen Betriebssysteme: Linux, Windows, Mac, Android, iPhone. Hier muss man sich also keine Gedanken machen, man kann sich annähernd mit jedem gängigen Gerät verbinden.
Hat man seine OPNsense Firewall konfiguriert und das Setup läuft zufriedenstellend, kann man sich um OpenVPN wie folgt kümmern:
Schritt 1: Anlegen eines Aussteller Zertifikats
Als erstes legen wir ein sogenanntes Aussteller Zertifikat (oder direkt übersetzt: Zertifizierungsstelle aus dem Englischen „Certificate Authority„) an. Im Endeffekt können wir damit vertrauenswürdige Zertifikate erzeugen bzw. herausgeben. Die CA dient als vertrauenswürdige dritte Instanz.
Die CA hat u.a. folgende Aufgaben (mehr dazu auf security-insider.de):
- Prüfung der Identität und der Angaben des Anforderers eines Zertifikats
- Ausstellen von Zertifikaten
- Publizieren von Zertifikaten
Dazu klicken wir im OPNsense Menü auf System -> Sicherheit -> Aussteller -> Hinzufügen und wählen die im Screenshot ersichtlichen Einstellungen. Die ausgepixelten Felder mit den eigenen Daten befüllen, diese tauchen dann später im Zertifikat auf.
Schritt 2: Serverzertifikat erzeugen
Im nächsten Schritt erzeugen wir uns ein Serverzertifikat unter System -> Sicherheit -> Zertifikate -> Hinzufügen. Im Screenshot sieht man die genauen Einstellungen. Die ausgepixelten Felder sind wieder nach persönlichen Gegebenheiten zu befüllen.
Schritt 3: Eigene Gruppe für VPN User
Als nächstes legen wir eine eigene Gruppe für die VPN-User an, da wir nicht pauschal jeden VPN-Bentuzer auch als Firewall-Admin führen wollen. Der VPN-User kann also den VPN Tunnel nutzen, hat aber keinen administrativen Zugang zur Firewall.
System -> Zugang -> Gruppen -> Hinzufügen
Schritt 4: VPN Benutzer anlegen
Im vierten Schritt legen wir uns einen VPN Benutzer an oder auch mehrere, wenn man die Benutzer schon kennt. Dieser Benutzer entspricht im Endeffekt der Person, der man gerne Zugriff über VPN ermöglichen möchte. Aus diesem Grund sollte man auch seinen echten Namen bzw. seine echten Daten verwenden, damit sich der User später auch wiederfindet.
Dazu klickt man auf System -> Zugang -> Benutzer -> Hinzufügen
Das Passwort, das man de User zuweist sollte man dem realen Benutzer in sicherer Form zukommen lassen (verschlüsselte eMail z.B.). Sobald eingegeben und gespeichert, kann man das Passwort nicht wieder einsehen. Für sichere Passwörter empfehle ich einen Passwortgenerator zu verwenden, z.B. unter passwort-generator.com
Unter Gruppenmitgliedschaften wählt man VPN und schiebt die Gruppe mit dem Pfeil nach rechts in den Kasten von „Mitglied von„. Damit ist der User nur Mitglied der VPN-Gruppe und kein Admin.
Jetzt benötigt der neue User nur noch ein eigenes Zertifikat, das mit einem Haken angewählt wird. Beim Klick auf Speichern wird man automatisch zum Zertifikatsdialog geführt.
Schritt 5: Benutzer-Zertifikat erzeugen
Nach dem Anlagen des Benutzers wird man sofort zur Eingabemaske des Benutzerzertifikats geleitet. Hier erstellen wir uns ein neues internes Zertifikat, ähnlich dem Serverzertifikat. Die genauen Einstellungen sind erneut im nachfolgenden Screenshot ersichtlich:
Schritt 6: OpenVPN-Server einrichten
Die ersten Schritte waren eigentlich nur Vorbereitungsarbeit, ab jetzt kümmern wir uns um den OpenVPN Server, der uns später das Erzeugen eines sicheren Tunnels ermöglicht.
Unter VPN -> OpenVPN -> Server klicken wir auf Hinzufügen und erzeugen eine neue OpenVPN-Server-Instanz.
Damit öffnet sich die Eingabemaske, mit der wir den OpenVPN Server im Detail konfigurieren. Die Einstellungen sieht man in den nächsten Screenshots. Unter „lokale Gruppe erzwingen“ finden wir auch unsere VPN-Gruppe wieder. Das bedeutet, dass der User, der sich mit einem VPN-Client verbinden will, in der VPN Gruppe sein muss. Andernfalls wird die Verbindung abgelehnt.
Schritt 7: Firewall-Regeln für OpenVPN
Damit über das Internet ein VPN-Tunnel mit der OPNsense Firewall aufgebaut und auch eine Kommunikation ins interne Netz erfolgen kann, benötigt man entsprechende Firewall-Regeln für die Schnittstelle WAN und OpenVPN.
Dazu klickt man zuerst auf Firewall -> Regeln -> WAN -> Hinzufügen
Die benötigten Einstellungen sind im Screenshot ersichtlich:
Nicht vergessen, die Änderungen zu übernehmen!
Jetzt noch die zweite Regel für OpenVPN unter Firewall -> Regeln -> OpenVPN -> Hinzufügen.
Die Quelle (IP Bereich) muss richtig konfiguriert werden und ist oft ein Punkt, dass der VPN-Tunnel nicht sauber funktioniert, weil hier der falsche IP-Bereich eingetragen wurde.
Nach dem Speichern der Regel auch hier wieder auf Änderungen übernehmen klicken, damit die Firewall-Regel aktiv wird!
Damit haben wir den OpenVPN-Server fertig eingerichtet. Ab sofort können wir mit einem VPN-Client einen Tunnel zum OpenVPN-Server öffnen und von remote arbeiten.
Dazu benötigen wir aber noch die Informationen für die Benutzer, was man über den Client-Export bewerkstelligt.
Schritt 8: Client Export durchführen
Die benutzerspezifische OpenVPN-Client-Konfiguration wird über VPN -> Clientexport erzeugt. In dieser Maske ist darauf zu achten, dass im Feld des Hostname die richtige IP-Adresse oder Domain steht. Das muss die IP-Adresse sein, die im Internet sichtbar ist. Ist die OPNsense Firewall hinter einem Router/Modem, dann wir hier automatisch die falsche, da interne IP eingetragen.
Zum erzeugen des Exports klickt man neben dem Zertifikatnamen auf die kleine Wolke rechts. Die Zip-Datei speichern und dem Benutzer auf sicherem(!) Weg zukommen lassen.
WAN Schnittstelleneinstellung
Ist die OPNsense Firewall direkt am Internet (so wie bei mir und meinem FTTH-Anschluss), dann sollte es ohne Zusatzkonfiguration funktionieren. Die IP-Adresse wird per DHCP vom Internetprovider zugewiesen.
Sollte die OPNsense aber hinter einer Fritz!Box oder dergleichen laufen, muss man folgendes beachten:
- Die OPNsense Firewall benötigt auf WAN eine feste IP-Adresse aus dem Adressbereich des Routers (nicht des internen Netzwerks hinter der Firewall!)
- Der UDP-Port 1194 muss vom Router auf die OPNsense weitergeleitet werden. Portweiterleitung auf die oben angesprochene IP-Adresse.
- Upstream Gateway ist der Router, z.B. Fritz!Box. Sollte automatisch angezeigt und ausgewählt sein.
- Die Haken bei Blockiere private Netze und Blockiere Bogon-Netze müssen entfernt/deaktiviert werden, da sich die OPNsense im privaten Netz der Fritz!Box befindet. Ansonsten kommt die VPN Verbindung nicht zustande! (Bei meinem Beispiel unten hat dies andere Gründe, ich müsste die Haken für OpenVPN nicht entfernen…)
OpenVPN Clients
Mit abgeschlossener OpenVPN-Konfiguration fehlt natürlich noch die „andere Seite“, sprich der OpenVPN Client, über den sich der Anwender schlussendlich mit dem VPN-Server verbindet und damit Zugriff auf das dahinterliegende (Firmen-)Netz erlangt.
Wie man solche Clients konfiguriert, erläutere ich in weiterführenden Blogposts:
Abschließend hier nochmal der Hinweis auf meine Bauanleitung für eine OPNsense Firewall Appliance.