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.

OPNsense OpenVPN: CA anlegen
OPNsense OpenVPN: CA anlegen (zum Vergrößern klicken)

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.

OPNsense OpenVPN: Serverzertifikat anlegen
OPNsense OpenVPN: Serverzertifikat anlegen (zum Vergrößern klicken)

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

OPNsense OpenVPN: VPN Gruppe anlegen
OPNsense OpenVPN: VPN Gruppe anlegen (zum Vergrößern klicken)

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.

OPNsense OpenVPN: VPN Benutzer anlegen
OPNsense OpenVPN: VPN Benutzer anlegen (zum Vergrößern klicken)

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:

OPNsense OpenVPN: VPN Benutzerzertifikat anlegen
OPNsense OpenVPN: VPN Benutzerzertifikat anlegen (zum Vergrößern klicken)

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.

OPNsense OpenVPN: OpenVPN Server anlegen
OPNsense OpenVPN: OpenVPN Server anlegen (zum Vergrößern klicken)

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.

OPNsense OpenVPN: OpenVPN Server anlegen
OPNsense OpenVPN: OpenVPN Server anlegen (zum Vergrößern klicken)
OPNsense OpenVPN: OpenVPN Server anlegen (zum Vergrößern klicken)

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:

OPNsense OpenVPN: Firewall-Regeln anlegen
OPNsense OpenVPN: Firewall-Regeln anlegen (zum Vergrößern klicken)

Nicht vergessen, die Änderungen zu übernehmen!

OPNsense OpenVPN: Firewall-Regel übernehmen
OPNsense OpenVPN: Firewall-Regel übernehmen (zum Vergrößern klicken)

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.

OPNsense OpenVPN: Firewall-Regeln anlegen
OPNsense OpenVPN: Firewall-Regeln anlegen (zum Vergrößern klicken)

Nach dem Speichern der Regel auch hier wieder auf Änderungen übernehmen klicken, damit die Firewall-Regel aktiv wird!

OPNsense OpenVPN: Firewall-Regel übernehmen
OPNsense OpenVPN: Firewall-Regel übernehmen (zum Vergrößern klicken)

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.

OPNsense OpenVPN: Clientexport
OPNsense OpenVPN: Clientexport (zum Vergrößern klicken)

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…)
OPNsense OpenVPN: WAN Einstellungen (zum Vergrößern klicken)

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.