pfSense: OpenVPN mit Benutzeranmeldung via Active Directory

Ebenso wie bei Securepoint UTMs kann man die Benutzeranmeldung für OpenVPN (SSL-VPN) bei pfSense nicht nur über eine lokale Benutzerdatenbank sondern zusätzlich (oder alternativ) über RADIUS oder LDAP bzw. Active Directory realisieren. Dies spart im Regelfall die mehrfache Verwaltung von Benutzerkonten. Nachfolgend geht es um die Active Directory-Anbindung auf Basis von Windows Server 2019 Standard und pfSense 2.4.4-RELEASE-p2.

Active Directory vorbereiten

Im AD sollte eine Benutzergruppe für die VPN-Benutzer angelegt sein. Für das Auslesen der AD-Benutzer durch den OpenVPN-Server der pfSense sollte ein eigener einfacher Benutzer angelegt sein. Im Beispiel sieht die Struktur so aus:

In diesem Beispiel (nicht im Bild zu sehen) gibt es eine Benutzergruppe „VPN-Benutzer“ die wiederum die AD-Benutzer, die OpenVPN verwenden dürfen enthält.

Folgende IP-Adressen werden verwendet:

  • 192.168.1.1 – pfSense als Firewall-Router und OpenVPN-Server
  • 192.168.1.2 – SRV01 (Windows Server 2019 Standard, Domänencontroller)

Damit man leichter für die spätere Konfiguration an den „Distinguished Name“ (DN) gelangt, sollte in der „Active Directory-Benutzer und -Computer“-Verwaltungskonsole unter „Ansicht – Erweitere Features“ aktiviert sein:

Beispielsweise in den Eigenschaften des „pfsense“-Benutzers kann nun auf der Registerkarte „Attribut-Editor“ der DN ausgelesen und kopiert werden:

OpenVPN-Server mit AD-Anbindung anlegen

Zu Beginn unter „VPN – OpenVPN – Wizards“ auf „+ Add“ klicken und anschließend bei „Type of Server“ „LDAP“ auswählen:

Im nächsten Schritt müssen diverse Angaben gemacht werden (im Bild gelb markiert):

Bemerkung: Beim CN kann sowohl Semikolon als auch Kommata verwendet werden.

Wichtig: Damit auf die Gruppenmitgliedschaft geprüft wird, muss die „Extended query“ aktiviert und korrekt konfiguriert sein. Ist diese nicht aktiv und konfiguriert, werden alle Benutzerkonten die via „Authentication containers“ gefunden werden zur Anmeldung akzeptiert!

Tipp: Es können mehrere LDAP-/AD-/RADIUS-Server als auch die lokale Benutzerdatenbank für die Authentifizierung verwendet werden. Zu diesem Zweck nach dem Durchlaufen des Assistenten manuell die weiteren Server unter

System - User Manager - Authentication Servers

hinzufügen und anschließend den OpenVPN-Server editieren und die zusätzlichen Server als auch ggf. die lokale Benutzerdatenbank bei „Backend for authentication“ auswählen (Stichwort: Mehrfachauswahl).

Nach dem Klick auf „>> Add new Server“ wird die CA für den neuen OpenVPN-Server erstellt:

Der darauffolgende Dialog ist sehr ähnlich, allerdings wird an dieser Stelle das Zertifikat für den neuen OpenVPN-Server erstellt (kein Bild). Über die entsprechende Benennung im „Descriptive name“ sollte man diese beiden unterscheiden (nicht im Bildzu sehen), z.B. so:

  • OpenVPN-Roadwarrior-CA
  • OpenVPN-Roadwarrior-Server

Als nächstes folgt die eigentliche Einrichtung des OpenVPN-Servers. Man gibt eine „Discription“ ein und kann die restlichen Voreinstellungen zunächst belassen. Relevant ist die Konfiguration der „Tunnel Settings“. Es muss mindestens das virtuelle VPN-Netz als auch das lokale LAN eingetragen werden:

Abschließend können automatisch einfache Regeln zum Zulassen des eingehenden VPN-Verkehrs auf der WAN-Schnittstelle als auch eine „any-rule“ für die VPN-Daten angelegt werden. Für den Anfang bzw. den ersten Test kann man diese nutzen. Später sollten die Regeln durch ein granulareres Regelwerk ersetzt werden.

Der durch den Assistent wie oben angelegte OpenVPN-Server authentifiziert die Benutzer nur anhand ihres Benutzersnamens samt Kennwort über das Active Directory. Möchte man zusätzlich noch Benutzerzertifikate verwenden, so muss die Konfiguration entsprechend angepasst werden (in diesem Beitrag nicht beschrieben).

Anmeldung via OpenVPN-Client

Als Benutzername muss im OpenVPN-Client nur der Teil vor der Domäne (also vor dem @-Zeichen) angegeben werden:

Nur "<Benutzername>" statt "<Benutzername>@<Domain.tld>" oder "<Domain>\<Benutzername>

Als Kennwort wird schlicht das AD-Benutzerkennwort verwendet.

Optional: DNS via VPN

Für Mitglieder der Active Directory-Domäne ist DNS zum Auffinden von Ressourcen, der Anmeldung und weiteres essentiell, daher ist es mehr als sinnvoll die Namensauflösung über das VPN zu konfigurieren. Dazu unter

VPN -  OpenVPN - Servers - <Name>

die Konfiguraqtion des OpenVPN-Servers editieren. Im Abschnitt „Advanced Client Settings“ mindestens folgende Einstellungen konfigurieren:

Die Option „Force DNS cache update“ sollte auf jeden Fall, sofern Windows zum Einsatz kommt, gesetzt sein damit die Änderungen erfolgreich übernommen werden und ggf. nicht alte Einträge zu Problemen führen. Speziell für Windows 10-Clients kann die Option „Block Outside DNS“ hilfreich sein, mitunter funktioniert es aber auch ohne. Beide Optionen sollten vor getestet werden.

Optional: Client Export Utility

Damit man einfach an die notwendinge VPN-Client-Konfiguration gelangt empfiehlt sich die Installation des Client Export Utilities:

Unter „System – Package Manager – Available Packages“ nach „openvpn-client-export“ suchen und dieses installieren. Anschließend kann unter „VPN – OpenVPN – Client Export“ ein ZIP-Archiv heruntergeladen werden.

Optional: Client-spezifische Konfiguration und Regeln

Um beispielsweise bestimmten VPN-Benutzern eine feste IP-Adresse zu vergeben, damit man wiederum spezifische Firewall-Regeln auf diese anwenden kann, wird auf die „Client Specific Overrides“ zurückgefriffen. Diese werden unter

VPN - OpenVPN - Client Specific Overrides

angelegt. Für eine feste IP-Adresse auf Basis des Benutzernamens müssen folgende Einstellungen gesetzt werden:

Vorsicht Falle 1: Damit die Änderung greift, muss der OpenVPN-Server neu gestartet werden. Am einfachstens geht dies unter

Status - OpenVPN

Vorsicht Falle 2: Leider ist der „Common Name“, in diesem Fall also der „Username“, case sensitive! Faktisch ist es allerdings so, das vom AD sowohl Groß- als auch Kleinschreibung für den Benutzernamen akzeptiert wird, d.h. die Anmeldung gelingt in jedem Fall. Die Client-spezifische Einstellung wird allerdings nicht unbedingt übernommen. Seitens pfSense/OpenVPN gibt es kein Konzept dies abzufangen!

Optional: Administrator-Anmeldung an der pfSense via LDAP/AD

Möchte man z.B. die im Active Directory angelegten Administratoren für die lokale Anmeldung an der pfSense Web-Oberfläche verwenden, so ist dies ebenfalls möglich.

Eine gute Anleitung (ungetestet) findet man unter

Vorkbaard uit de toekomst – Log in to PfSense based on Active Directory group membership

Bedenken sollte man allerdings, das man sich ggf. Aussperrt wenn der Domänencontroller nicht erreicht werden kann, so sollte mindestens ein lokales Administrator-Konto für den Notfall auf jeden Fall belassen werden!

Troubleshooting

Trotz der Voreinstellung oder Angabe bei „Transport“ von „TCP – Standard“ konfiguriert der OpenVPN-Assistent die AD-/LDAP-Anbindung für LDAPS, also LDAP verschlüsselt via SSL/TLS. Dadurch scheitert die Anbindung an LDAP und in Folge die Anmeldung via OpenVPN. Schnelle Abhilfe kann unter

System - User Manager - Authentication Servers - <Name>

geschaffen werden, in dem man explizit bei „Transport“ „TCP – Standard“ auswählt:
Stellt man einen zuvor (via Assistent) angelegten OpenVPN-Server auf LDAP-/AD-Anbindung um und verwendet keine Client-Zertifikate, muss der „Server mode “ noch von „Remote Access (SSL/TLS + User Auth)“ auf „Remote Access (User-Auth)“ geändert werden!

Securepoint und LDAP/AD-Anbindung

Der Vollständigkeit halber bzw. zum Vergleich anbei die Links zu den Anleitungen bei Securepoint für deren Implementierung in den UTMs:

Andy’s Blog – Securepoint OS v11 – SSL-VPN mit Active Directory-Anbindung

Securepoint – Wiki – UTM – AD-Anbindung v11.5

Securepoint – Wiki – UTM – AD-Anbindung v11.7

Securepoint – Wiki – UTM – AD/LDAP-Anbindung

Quellen:

Vorkbaard uit de toekomst – Set up OpenVPN on PfSense with user certificates and Active Directory authentication (enthält eine Anleitung zur Verwendung von RADIUS)

nguvu – pfSense remote access via OpenVPN (DNS über OpenVPN)

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.