Es gibt da draußen ein Vielzahl an VPN Anbietern, die es einem erlauben den lokalen Internetverkehr erstmal durch einen VPN Tunnel in z.B. in ein anderes Land zu schicken um eine andere IP Adresse zu nutzen. Dafür gibt es verschiedenste private und berufliche Gründe; ihr habt da sicherlich den ein oder anderen Anwendungsfall im Hinterkopf. Ich brauche es um GEO Blocker, VPN Zugriffe und Standortvernetzungen reel vorab testen oder Problemlösungen nachgehen zu können.

Wenn man das Tunneln ernst nimmt, ist unbedingt darauf zu achten, das der getunnelte und ungetunnelte Verkehr nicht vermischt oder sogar unbemerkt nicht getunnelt wurde, weil z.B. im „unpassenden“ Moment das VPN inaktiv war. Dieses „VPN Leaking“ ist je nach Anwendungsfall ein Problem, bzw. verfälscht das eigentliche beabsichtigte Ziel. Auch die korrekte Lenkung der DNS Abfragen spielt ein Rolle, da diese sonst eine empfindliche Lücke darstellen können.

Die pfSense® ist hier an zentraler Stelle der ideale Ort um das zu gewährleisten und vor allem, das alles zu kontrollieren.

Wichtig! Wer die wirkliche Anonymität sucht: Ein VPN ist nur eine kleiner Baustein. Um wirklich anonym unterwegs sein zu können, ist weit mehr nötig und NICHT Anspruch dieser Artikelserie. Dazu empfehle ich die Lektüre der folgenden beiden Links zweier sehr empfehlenswerten Seiten:

Eine schöne Erklärung zum Thema VPN im allgemein ist hier zu finden: https://tarnkappe.info/tarnkappe-guide-was-ist-ein-vpn/

 

Wie man preisgünstig eine solide pfSense® aufbaut und installiert, habe ich hier beschreiben.

Diese Guide Reihe beschreibt, wie man einen OpenVPN Tunnel von der pfSense® in Richtung VPN Anbieter (hier ExpressVPN) aufbaut und dafür sorgt das:

  • der VPN Tunnel zu ExpressVPN aktiviert wird,
  • nur einzelne Rechner oder bestimmte Sub-Netze das VPN nutzen dürfen (z.B. für Testrechner, Versuchsaufbauten),
  • der Verkehr eines bestimmten Ports im lokalen Netz über den aktiven VPN Tunnel läuft,
  • der gesamte Internetverkehr über den aktiven VPN Tunnel läuft oder
  • sogar mehrere VPN Tunnel gleichzeitig aktiv sind um die Anfragen ins Internet auf mehrere Rechenzentren zu verstreuen und
    damit über das „Load Balancing“ eine gewisse Redundanz bereitstellt.

Wer den Tunnel schon aktiv hat, kann hier direkt zu den anderen Beiträgen springen:

  • (TBD) pfSense® mit ExpressVPN TEIL2: Selektives Routing (IP oder Ports)
  • (TBD) pfSense® mit ExpressVPN TEIL3: Komplettes Routing
  • (TBD) pfSense® mit ExpressVPN TEIL4: Load Balancing / Redundanz

Viel Spass!

ExpressVPN

Als allererstes wird ein VPN Provider benötigt. Davon gibt es eine Reihe gute sowie schlechte. Ich nutze einfach ExpressVPN.
Die sind relativ günstig, wurden mir von einer vertrauenswürdigen Quelle empfohlen, haben eine exzellente Anbindung in vielen Ländern und die technischen freien Vorraussetzungen für alle möglichen Plattformen.

Ideal um es auf der pfSense® zu integrieren und nicht in einem speziellen VPN Client gefangen zu sein.

Falls es auch von euch bestellt werden sollte, dann würde ich mich freuen wenn ihr diesen Link nutzt,
denn dann ist der Dienst für euch und mich ein Monat kostenlos!

Die ExpressVPN eigene Anleitung ist leider etwas angestaubt, daher der Artikel hier. Er war aber eine große Hilfe für Details zum Tunnel.

Sobald die Anmeldung durch ist, bekommt man diverse Zugangsdaten, die für späteren Verlauf wichtig sind.

Öffnet hierzu: https://www.expressvpn.com/de/setup

 

 

 

pfSense®

Zertifikate

Jeder OpenVPN tunnel basiert nicht nur auf Benutzername/Kennwort, sondern auch auf Zertifikaten.

 

Alle vier finden wir in der OPVN Datei die oben heruntergeladen wurde.
Öffnet die mal mit dem Texteditor eurer Wahl und ihr werdet etwas weiter unten sinngemäß folgende Tags  vorfinden (Bitte nicht über die Lorem ipsum Texte wundern, das sind natürlich Fake Zertifikate auf dem Bild):

 

  • das Benutzerzertifikat (cert): Der private Teile des Schlüsselpaares
  • der private Teil für das obige Benutzerzertifikat (key)
  • das öffentliche Zertifikat der Zertifizierungsstelle (ca). Das hat das obige Schlüsselpaar herausgegeben, signiert und „für gut“ befunden. Diese Zertifizierungsstelle muss der pfSense®bekannt sein, damit dem Schlüsselapaar auch vertraut werden kann.und als letztes (ist aber nicht wirklich ein Zertifikat, eher ein laaaaanges Passwort)
  • der statische OpenVPN Schlüssel (tls-auth). Das sichert den Tunnel zusätzlich ab.

 

Zertifikate installieren

Die obersten drei Zertifikate müssen nun in die pfSense® rein und das ist schnell erledigt.
Öffnet dazu eure pfSense® Oberfläche und geht im Menü auf System – Cert Manager (ich benutze meine pfSense® immer auf Englisch)


Klickt nun im Reiter CAs unten Links auf Add.

  • Im neuen Dialog kommt erst mal da ein schöner Name rein: z.B. „ExpressVPN CA“.
  • Method ist Import an existing Certificate Authority.
  • Kopiert aus der OPVN Datei ALLES zwischen <ca> und </ca> in die Zwischenablage.
    Den Text aus der Zwischenablage kommt in das Feld Certificate data.
  • Dann beherzt mit Save abspeichern und der neue Eintrag taucht dann in der Certificates Authorities Liste auf.

 

 

Nun wechselt in den Reiter Certificates und wieder ganz unten auf Add/Sign drücken.

  • Im neuen Dialog wählt als MethodImport an existing Certificate.
  • Descriptive Name ist dann z.B. „ExpressVPN Cert“.
  • In das Textfeld Certificate data kommt der Teil aus der OVPN-Datei zwischen <cert> und </cert>
  • und bei Private key data der Teil zwischen <key> und </key>
  • Dann wieder beherzt mit Save“ abspeichern und der neue Eintrag taucht dann in der Zertifikatsliste auf.

 

Damit sind alle Zertifikate durch!

 

OpenVPN Tunnel

Jetzt kommen wir zum spannenden Teil und erstellen den Tunnel zu ExpressVPN.
Dazu geht ihr oben im Menü auf VPN, dem Unterpunkt OpenVPN und auf der neuen Seite in dem Reiter Client auf Add.

Im Prinzip müssen wir nun nur die Vorgaben aus der OVPN Datei in die pfSense® Oberfläche bringen.

Server mode: Peer to Peer (SSL/TLS)
Protocol: UDP on IPv4 only
Device mode: tun – Layer 3 Tunnel Mode
Server host or address: germany-frankfurt-1-ca-version-2.expressnetw.com
Server port: 1195
Description: ExpressVPN germany-frankfurt-1
Username: Hier kommt der Benutzername von oben rein
Password: Hier kommt der Kennwort von oben rein
Authentication Retry: Aktivert
TLS Configuration: Use a TLS Key
Automatically generate a TLS Key: Deaktiviert
TLS Key: Hier kommt der Teil aus der OVPN-Datei zwischen <tls-auth> und </tls-auth> rein

Peer Certificate Authority: Das importiere „ExpressVPN CA“ Zertifikat
Client Certificate: Das importiere „ExpressVPN Cert“ Zertifikat
Encryption Algorithm: AES-256-CBC
Enable NCP: Deaktiviert
NCP Algorithms: Ignorieren
Auth digest algorithm: SHA512
Hardware Crypto: Ja, wenn möglich verwenden (Bei APU2 ist das möglich)
Compression: Adaptive LZO Compression
Don’t pull routes: Aktiviert
Custom options: persist-key;persist-tun;remote-random;pull;verify-x509-name Server name-prefix;key-direction 1;route-method exe;route-delay 2;tun-mtu 1500;fragment 1300;mssfix 1450
UDP Fast I/O: Aktivieren
Send/Receive Buffer: 512 KiB
Gateway creation: IPv4 only
Verbosity level: 3

Dann mit Save abspeichern

 

OpenVPN Tunnel Status

Unter dem Menüpunkt Status – OpenVPN können wir nachgucken, ob der Tunnel bereits erfolgreich verbunden wurde.

 

Routing

Aber das reicht noch nicht. Nur weil der Tunnel steht, heisst es noch nicht das der Verkehr auch automatisch durch den Tunnel geht. Es fehlt das Routing.
Die pfSense® kann Filtern/Routen und NAT’en wie der Teufel, aber was sie dafür braucht ist ein eigenes Interface auf dem die Regeln und Gateways zugewiesen werden können. Noch weiß sie quasi nicht WAS genau sie durch den Tunnel schicken soll.

Interface hinzufügen

Dazu fügen wir nun den neuen OpenVPN Client als eigenes Interface hinzu.

  • Wählt dazu im Menü Interfaces – Assignments aus.
  • Ganz unten bei Available network ports den oben neu erstellten OpenVPN Client auswählen und rechts daneben auf Add und danach auf Save klicken.

Das neue Interface erscheint als „OPTx“ (bei mir Opt2) in der Interface Liste.
Um das zu konfigurieren klickt dazu wieder im Menü auf Interfaces und Opt2.

  • Dort das Interface aktivieren und einen schöneren Namen vergeben.
  • Ich nehme hier wieder den des OpenVPN Clients „ExpressVPNgermanyfrankfurt1“ (ohne Leerzeichen) und speichern.

 

Apropo: Alles was mit Interfaces, NAT, Routings und Firewall Reglen zu tun hat, möchte die pfSense® mit „Apply Changes“ anwenden damit es aktiv wird.

 

Und immer unter dem Menü Diagnostic – States, Reiterkarte Reset States alle aktuellen Einträge entfernen (killen)!
Denn nur neu aufgebaute Verbindungen suchen sich den neuen Weg. Existierende Verbindungen bleiben auf dem alten Pfad!
Auch die Webgui muss danach neu geladen werden, also nicht wundern das die hängt. F5!

Damit haben wir nun erreicht:

  • Die Zertifikate wurden importiert
  • Der Tunnel zu ExpressVPN ist aktiv
  • Routing und Regeln könnten nun im neuen Interface gesetzt werden

 

Damit sind alle Vorraussetzungen geschaffen und wir können anfangen die benötigten Szenarien aufzubauen.