OpenVPN mit pfsense

Aus revampedia
Version vom 10. Oktober 2016, 14:15 Uhr von Cem Aydin (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Konfiguration von pfsense als openVPN exit node.

Authentifizierungsmethode

Als erstes sollte man sich überlegen wie die Anmeldung auf dem openVPN Server vonstatten gehen soll. In unserem Beispiel verwenden wir die Möglichkeit uns per Zertifikat, Benutzername und Passwort über den internen LDAP Server anzumelden. Anzumerken sei noch das die Authentifizierung über LDAP nur mit einem passenden Zertifakt funktioniert.

LDAP

Unter System / User Manager / Servers wird die Authentifizierung über LDAP eingerichtet. Base DN und Authentication Container sind dem Teil des LDAP-Verzeichnisses anzupassen, in welchem man die authorisierten Benutzer eingerichtet hat. Zudem kann man die Suche mit dem Extended Query verfeinern, wenn man nur eine bestimmte Gruppe zulassen will, z.B. memberOf=cn=vpn,o=discordia,dc=holy,dc=cow[1].

openVPN Konfiguration

Den grössten Teil der Konfiguration wurde durch den Konfigurations Assisstenten von pfsense übernommen. Alle Menüpunkte sind selbsterklärend und einfach verständlich beschrieben. Alternativ kann man auch eine manuelle Konfiguration vorgezogen werden.

VPN Nutzer einrichten

Es sollte für jeden VPN Nutzer ein eigenes User Zertifikat im pfsense erstellt werden. Dies hat den Vorteil dass diese einzeln zurückgezogen ("revoked") werden können, beispielsweise im Falle eines Verlustes.

Im pfsense kann dies unter System --> Cert. Manager --> Certificates --> +Add gemacht werden.

Als Methode haben wir Create an internal Certificate gewählt.

Als Descriptive name: <username>_vpn

[ Offene Frage: Was sollte als am besten als CN gewählt werden ? ]

Die erforderlichen Daten zur Anwendung im VPN können nun unter VPN --> OpenVPN --> Client Export --> OpenVPN Clients heruntergeladen werden.

Unter dem entsprechenden Zertifikat Standard Configurations --> Archive.

Achtung: Diese Daten sollten nur über eine sichere Verbindung übertragen und geheim gehalten werden.

Am besten sogar gegenüber anderen Mitarbeitern, da anscheinend keine Verknüpfung von Zertifikat und Login (ldap) besteht.

Client Einrichtung

Für einzelne Distributionen / Netzwerkmanager gibt es unterschiedliche Vorgehensweisen.

Grundsätzlich braucht es das Paket openvpn.

Die Zugangsdaten müssen wie oben beschrieben erzeugt und lokal vorhanden sein.

Das beschriebene Archiv enthält die folgenden Dateien:

  • <beispielname>.ovpn Konfigurationsdatei für openvpn
  • <beispielname>.p12 kryptografisches Archiv Dateiformat, enthält:
    • Server root CA Zertifikat
    • persönliches User Zertifikat (inkl. persönl. public-key)
    • persönlicher private-key
  • <beispielname>-tls.key ein zusätzlicher shared key [wozu wird dieser gebraucht, tls paket auth ..?]

Diese Daten sollten nur über eine sichere Verbindung übertragen und geheim gehalten werden.

Es kann nun sehr einfach eine Verbindung hergestellt werden:

 $ sudo openvpn <beispielname>.ovpn

Als zusätzliches Sicherheitselement muss nun (bei uns LDAP) Benutzername und Passwort eingegeben werden.

Dieser Befehl läuft weiter solange eine Verbindung besteht. Wenn es funktioniert sollte in der Ausgabe folgendes erscheinen:

 [ ... ]
 [ ... ] Initialization Sequence Completed

Es sollte nun ein zusätzliches (virtuelles) Netzwerkdevice erzeugt worden sein. E.g.

 $ ip addr
 [ ... ]
 10: tun0: [ ... ]
   inet 10.0.8.3/24 brd 10.0.8.255 [ ... ]
   [ ...]

Nun ist es so als wäre man mit einem Kabel direkt mit dem ensprechenden Netzwerk verbunden.

Es können also zum Beispiel auch Webseiten von "internen" Servern angezeigt werden (im eigenen lokalen/normalen Browser, also ohne zusätzliches ssh/x-forwarding).

In Anleitungen wird dies Vorgehen lediglich zum testen angegeben. Ich denke aber, dass man so durchaus arbeiten kann. Falls eine automatisierung gewünscht ist, muss diese natürlich entsprechend Distribution/Netzwerkmanager etc. eingerichtet werden.

Recherche

--> Wie funktioniert die Verschlüsselung im Detail?

Siehe auch

Externe Links

Referenzen

  1. Für die Funktion memberOf müssen zusätzlich die Module und Overlay memberOf in der Konfigurationsdatenbank aktiviert und slapd neu gestartet werden.