Netzwerk zu NordVPN verbinden mit OPNsense

Wer im Internet surft hinterlässt Spuren. Webserver loggen Zugriffe und speichern die IP Adressen des Clients, sowie u.a. Datum, Uhrzeit, Browser und angefragte URL. Internetprovider wiederum speichern mitunter die IP Adressen ihrer Kunden. So lässt sich theoretisch nachvollziehen, welcher Kunde wann wohin surft.

Wer seine Privatsphäre bewahren will kann daher die Dienste eines VPN Providers nutzen. Dadurch sieht beispielsweise der Webserver nicht mehr die IP Adresse des eigenen Anschlusses, sondern die des VPN Providers. Außerdem kann der ISP nicht verfolgen, wohin zugegriffen wurde, da dies ebenfalls über eine verschlüsselte Verbindung über den VPN Provider läuft. Letztlich muss man allerdings dem VPN Provider vertrauen. Viele werben damit, keine Logdateien zu speichern. So auch der Anbieter NordVPN, dessen Dienst für dieses Beispiel herangezogen wird. Grundsätzlich sollte die Anleitung auch auf andere VPN Provider anwendbar sein, sofern sie OpenVPN unterstützen.

Warum VPN über den Router?

Die Anbieter machen es ihren Kunden möglichst einfach und bieten für diverse Betriebssysteme, sei es für PC, Smartphone oder Tablet, passende Apps an, über die man sich in Nullkommanichts verbinden kann und “unsichtbar” wird. Allerdings gilt der Schutz dann ausschließlich für dieses eine Gerät. Teilweise gibt es sogar Browserplugins, der Schutz beschränkt sich dann sogar nur auf das Surfen mit dem verwendeten Browser, der das Plugin installiert hat. Möchte man sein Heim-/Firmennetzwerk komplett absichern, und damit auch Smarthome-, IoT- oder Mediengeräte einbeziehen, ist es am Sinnvollsten, die Verbindung auf einem zentralen Netzelement einzurichten, also dem Router.

Ich verwende OPNsense, eine Firewalldistribution, die auf FreeBSD basiert, in der Softwareversion 19.1 (“Inspiring Iguana”) vom 31. Januar 2019. Definitiv ebenfalls möglich ist die Benutzung von pfSense, die Konfiguration ist dort nahezu identisch. Andere Router-/Firewallsoftware, die OpenVPN unterstützt, sollte ebenfalls funktionieren.

Voraussetzungen

Zunächst einmal ist ein Abo bei NordVPN notwendig. Die Preise sind gestaffelt. Je länger die Laufzeit des Abos, desto geringer der monatliche Betrag.

Die Verbindung wird via OpenVPN hergestellt. NordVPN bietet für alle seine Server bereits fertige Konfigurationsdateien an, die über folgenden Link heruntergeladen werden können: https://nordvpn.com/de/ovpn/. Such’ dir dort einen passenden Server aus und öffne die Konfigurationsdatei mit einem Texteditor. Der Serverstandort wirkt sich logischerweise auf die Latenzen aus. Ein Server in Heimatnähe wird schneller reagieren als ein Server am anderen Ende der Welt. Aus Privacy-Sicht ist es aber egal, welcher Server gewählt wird. Interessant wird die Auswahl, wenn man beispielsweise Geoblocking umgehen will.

Konfiguration

Du wirst nacheinander zunächst den OpenVPN Tunnel konfigurieren. Nachdem dieser erfolgreich aufgebaut ist widmest du dich dem NAT und anschließend dem Policy-Based-Routing. Du kannst am Ende über Firewallregeln entscheiden, ob du sämtlichen Traffic über VPN jagen willst oder nur einzelne Clients. Auch die Beschränkung auf einzelne Ports ist möglich. Meine OPNsense Oberfläche ist auf Englisch eingestellt. Die Menüpunkte sind daher auch auf Englisch.

CA erstellen

NordVPN authentifiziert seine Kunden anhand von Benutzername und Kennwort. Außerdem muss die Vertrauenswürdigkeit des NordVPN-Zertifikats gegeben sein. Daher erstellest du zunächst eine CA unter dem Menüpunkt System => Trust => Authorities:

In das Feld “Certificate data” gehört das Zertifikat aus der OpenVPN Konfig von NordVPN rein. Der Name ist frei wählbar. Als “Method” muss “Import an existing Certificate Authority” ausgewählt werden. Anschließend speichern und der erste Schritt ist schon erledigt

OpenVPN Verbindung einrichten

Anschließend kommst du zur eigentlichen VPN Konfiguration unter dem Menüpunkt VPN => OpenVPN => Clients erstsellst du mit der Schaltfläche “Add” ganz rechts oben eine neue Clientkonfiguration in OPNsense. Die Einstellungen kannst du aus folgenden Screenshots entnehmen. Im Prinzip stehen alle notwendigen Werte auch in der Konfigdatei drin und lassen sich im Webgui entsprechend auswählen.

Eine nach Ländern sortierte Serverliste gibt es direkt beim Anbieter. Der TLS-Key lässt sich aus dem OVPN Konfigfile herauskopieren. Als “Peer Certificate Authority” muss die eben erstellte CA ausgewählt werden.

Nachdem die Konfiguration ausgefüllt und gespeichert ist, sollte die VPN Verbindung bereits hochkommen. Der Status lässt sich unter VPN => OpenVPN => Connection Status einsehen. Das sollte in etwas so aussehen:

Tunnelinterface und Gateway erstellen

Der eigentliche Tunnel steht nun zwar bereits, er macht aber noch nichts. Damit man darüber routen kann benötigst du zunächst ein Tunnelinterface und ein Gateway. OPNsense listet das von OpenVPN erstellte Tunnelinterface bereits unter Interfaces => Assignments => New interfaces im Dropdown auf. Es muss ausgewählt und mit Klick auf das ‘+’ hinzugefügt werden Es erscheint dann als OPTx in der Liste. Anschließend klickst du das neu erstellte Interface an. In der neuen Maske musst das Häkchen bei “Enable” setzen, um die Schnittstelle überhaupt erst zu aktivieren. Außerdem solltest du eine sinnvolle Beschriftung unter “Description” eintragen. Alle anderen Einstellungen bleiben wie sie sind. Nachdem die Konfiguration gespeichert wurde, meldet sich OPNsense bereits mit einer Meldung, dass die Konfiguration aktiviert werden muss, was du per Klick auf den entsprechenden Knopf umgehend auch tust.

Überprüfung des Gateways

Nun sollte OPNsense automatisch ein Gateway passend zum neuen Interface erstellt haben. Du siehst es unter System => Gateways => Single. Wenn bei dir noch keine IP Adresse steht, musst du den OpenVPN Prozess einmal neu starten. Anschließend sollte die Ausgabe etwa so aussehen:

Damit ist der Großteil der Arbeit geschafft. Als nächstes richtest du NAT und Firewallpolicy ein, dann bist du fertig.

NAT einrichten

Du hat jetzt einen funktionierenden Tunnel sowie ein Gateway ins VPN. Allerdings passiert jetzt noch überhaupt nichts mit unserem Traffic, denn OPNsense wird nach wie vor seinen Standardausgang nehmen, was i.d.R. der normale Internetzugang ist.

Die NAT Einstellungen befinden sich unter Firewall => NAT => Outbound. Wichtig ist, dass entweder “Hybrid outbound NAT rule generation” oder “Manual outbound NAT rule generation” aktiviert ist. Anschließend legst du mit einem Klick auf ‘+’ eine neue Regel an. Die wichtigste Einstellung ist das Interface. Hier muss das neu erstelle OpenVPN Interface ausgewählt werden. Alles andere kann auf den Standardwerten bleiben.

Auch diese Konfiguration muss mit “Apply changes” aktiviert werden. Fast geschafft! Jetzt fehlt nur noch eine Firewallregel, die deinen Traffic über das neue Gateway rausschickt. Die Regel wird selbstverständlich unter Firewall => Rules unter dem entsprechenden LAN Interface erstellt. Bei mir heißt dieses Interface “ClientLAN”.

Die neue Regel kann prinzipiell alle Standardeinstellungen beibehalten. Dann wird jeglicher Traffic ins VPN geschickt. Ich habe hier im Beispiel als Source das “ClientLAN net” ausgewählt, aber auch das kann auf dem Standardwert (“any”) bleiben. Die “Destination Ports” können ebenfalls angepasst werden. Dadurch lassen sich einzelne Dienste gezielt ins VPN schicken, während andere unverschleiert über den normalen Internetzugang rausgehen. Essenziell ist die Auswahl des Gateways. Hier muss das erstellte NordVPN Gateway ausgewählt werden. Erst mit dieser Einstellung wird OPNsense veranlasst, den Traffic, auf den die Regel zutrifft, aus der OpenVPN Schnittstelle rauszuschicken.

Die Änderungen müssen nach dem Speichern ebenfalls wie auch beim NAT aktiviert werden. Anschließend ist alles erledigt und der Traffic geht übers VPN. Das lässt sich prüfen, indem beispielsweise wieistmeineip.de angesurft wird. Dort sollte nun die IP Adresse des VPN Servers auftauchen, und nicht mehr die des eigenen Anschlusses.

Sollte es nicht funktionieren, solltest du die Reihenfolge der Firewall und NAT-Regeln überprüfen. Die Regeln werden von oben nach unten abgearbeitet. Sobald eine Regel passt wird sie angewendet. Ggf. vorhanden spätere Regeln werden dann nicht mehr berücksichtigt. Daher müssen die Spezialregeln für VPN Zugriffe über den Standardregeln positioniert werden. Des weiteren unterstützt NordVPN (und alle mir bekannten anderen Dienste) z.Zt. nur IPv4. Die ganze Arbeit hier war umsonst, wenn IPv6 im Netzwerk aktiviert ist. Daher solltest du das in jedem Fall deaktivieren. Auch wenn mir als Netzwerker dabei das Herz blutet…

VPN privatsphäre NordVPN OPNsense Privacy

Vorheriger Post
Nächster Post