privacyIDEA Workshop – Teil 2 VPN an privacyIDEA anbinden

Ein Gastbeitrag von Cornelius Kölbel 5 min Lesedauer

Anbieter zum Thema

Im zweiten Teil der Workshop-Reihe zeigen wir, am Beispiel eines Citrix NetScaler-VPNs, wie Sie mit privacyIDEA und FreeRADIUS Ihr VPN-System per Mehr-Faktor-Authentifizierung absichern. Von TOTP-Token-Tests bis hin zu praktischen Debug-Tipps und flexibel anpassbaren Richtlinien: Dieser Workshop demonstriert alle wichtigen Schritte für höchste VPN-Sicherheit.

Sichern Sie Ihr VPN-System mithilfe von privacyIDEA, RADIUS-Integration und TOTP-Token zuverlässig vor unbefugten Zugriffen ab. Wie das geht zeigen wir am Beispiel einer Citrix NetScaler Anbindung.(Bild:  Have a nice day - stock.adobe.com)
Sichern Sie Ihr VPN-System mithilfe von privacyIDEA, RADIUS-Integration und TOTP-Token zuverlässig vor unbefugten Zugriffen ab. Wie das geht zeigen wir am Beispiel einer Citrix NetScaler Anbindung.
(Bild: Have a nice day - stock.adobe.com)

Im ersten Teil haben wir das privacyIDEA-System installiert und einem Benutzer einen zweiten Faktor ausgerollt. Jetzt wollen wir über das RADIUS Protokoll ein Citrix Netscaler VPN an das System anbinden. privacyIDEA bietet für den FreeRADIUS Server ein Plugin, so dass hierüber die Mehr-Faktor-Authentifizierung gegen privacyIDEA abgebildet werden kann.

privacyIDEA unterstützt sehr viele verschiedene Authentifizierungstypen. Auch neuere Mechanismen wie PUSH-Authentication oder WebAuthn/FIDO2 werden unterstützt und können parallel betrieben werden. Für den einfachen Einstieg wollen wir in diesem Beispiel erst einmal bei der TOTP-Smartphone App bleiben.

Installation der RADIUS-Komponente

Im vorherigen Artikel haben wir privacyIDEA auf einem Ubuntu 22.04LTS installiert. Der RADIUS-Server könnte sich prinzipiell auch auf anderen Servern befinden, wir installieren ihn der Einfachheit halber auf der gleichen Maschine.

Da wir im letzten Artikel bereits das entsprechende Paket-Repository eingerichtet haben, reicht uns nun das Folgende:

apt updateapt install privacyidea-radius

privacyidea-radius ist ein Meta-Paket, das sowohl den FreeRADIUS-Server als auch das dazugehörige privacyIDEA Plugin installiert. Das privacyIDEA FreeRADIUS Plugin kommt nach der Installation bereits mit einer Standardkonfiguration, die für unsere Zwecke funktioniert.

Sollten Sie später Dinge im Plugin anpassen wollen, erfolgt die Konfiguration über die Konfigurationsdatei /etc/privacyidea/rlm_perl.ini.

Token testen

Im letzten Artikel hatte sich der Benutzer „cornelius“ einen TOTP Token ausgerollt. Diesen können wir nun auch über das RADIUS-Protokoll testen. Hierzu können wir auf der Kommandozeile des privacyIDEA Servers eingeben:

echo "User-Name=cornelius, User-Password=656074" | radclient -xs localhost auth testing123

Damit bauen wir einen einfachen RADIUS Authentifizierungs Request, den wir lokal gegen den FreeRADIUS Server mit privacyIDEA senden. „testing123“ ist das default Shared Secret des FreeRADIUS Servers für lokale Anfragen. Die Ausgabe sieht bei Erfolg dann wie folgt aus:

Sent Access-Request Id 156 from 0.0.0.0:36873 to 127.0.0.1:1812 length 67 User-Name = "cornelius" User-Password = "656074" Cleartext-Password = "656074"Received Access-Accept Id 156 from 127.0.0.1:1812 to 127.0.0.1:36873 length 66 Message-Authenticator = 0xb6957daa25656dc131db8a53fd362116 Reply-Message = "privacyIDEA access granted"Packet summary: Accepted : 1 Rejected : 0 Lost : 0 Passed filter : 1 Failed filter : 0

Bei erfolgreicher Authentifizierung erfolgt die Rückmeldung „Accepted : 1“. Sollte der falsche OTP-Wert eingegeben werden oder ggf. die Zeit des TOTP-Tokens nicht synchron sein, so erfolgt eine Fehlermeldung wie folgt:

Received Access-Reject Id 80 from 127.0.0.1:1812 to 127.0.0.1:43433 length 55 Message-Authenticator = 0x7cdd85858230c6a2f64d94a2aac3c265 Reply-Message = "wrong otp value"(0) -: Expected Access-Accept got Access-RejectPacket summary: Accepted : 0 Rejected : 1 Lost : 0 Passed filter : 0 Failed filter : 1

clients.conf konfigurieren

Damit der die RADIUS Anfrage an den privacyIDEA Server senden kann, muss der Netscaler beim FreeRADIUS als RADIUS Client eingetragen werden. Das passiert beim FreeRADIUS in der Datei /etc/freeradius/3.0/clients.conf.

Bitte beachten Sie, dass das Verzeichnis /etc/freeradius/3.0 nur für root lesbar ist und daher keine Autocompletion funktioniert, wenn Sie nicht bereits root sind.

Mit dem Editor Ihrer Wahl fügen Sie einen Eintrag hinzu:

client netscaler { ipaddr = 10.0.5.127 secret = privacyIDEAcoolChange}

Passen Sie die IP Adresse entsprechend an und ändern Sie das shared secret nach Ihren Wünschen.

Nachdem wir die Datei abgespeichert haben, müssen wir den FreeRADIUS Server noch neu starten. Allerdings starten wir den FreeRADIUS nicht gleich als Daemon, sondern erstmal im Debug Modus, damit wir ggf. leichter Fehler finden können:

systemctl stop freeradius.servicefreeradius -X

Sie sollten nun die Meldung sehen „Ready to process requests“. Der FreeRADIUS Server wird dann Debug-Meldung direkt im Terminal ausgeben.

Nun haben wir alles vorbereitet, um den Netscaler als RADIUS Client konfigurieren zu können.

Netscaler konfigurieren

RADIUS Server anlegen und konfigurieren.(Bild:  NetKnights)
RADIUS Server anlegen und konfigurieren.
(Bild: NetKnights)

Im Netscaler legen wir einen neuen RADIUS Server an. Wenn die IP-Adresse und das Shared Secret korrekt sind, der FreeRADIUS läuft und eine etwaige Firewall den Request durchlässt, haben wir erfolgreich die RADIUS-Anbindung konfiguriert.

Sollte ein Fehler auftreten, kann die Meldung im Netscaler und auch die Meldung im Debug Modus des FreeRADIUS Servers helfen, den Fehler zu finden.

Wenn Einmal-Passworte als zweiter Faktor verwendet werden, empfiehlt sich eine weitere RADIUS-Einstellung, die wir im Netscaler unter „More“ finden. Wir setzen den „Authentication Server Retry“ auf 1.

Als RADIUS Retry wählen wir 1, um Probleme mit Einmalpasswörtern zu vermeiden. Sollte der privacyIDEA Server das Einmalpasswort zu langsam überprüfen, würde der RADIUS Client den gleichen Request UDP-bedingt nochmal senden, die zweite Verwendung des Einmalpasswortes wäre aber nicht mehr gültig, so dass hierbei unerwartete fehlgeschlagene Authentifizierungen erfolgen könnten.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Derzeit läuft die Authentifizierung des Netscalers nur gegen AD.(Bild:  NetKnights)
Derzeit läuft die Authentifizierung des Netscalers nur gegen AD.
(Bild: NetKnights)

Oftmals wird die Anbindung des VPNs derart umgesetzt, dass die erste Authentifizierung vom VPN gegen das Active Directory läuft und der zweite Schritt gegen RADIUS, worüber dann eben der zweite Faktor verifiziert wird.

Im Netscaler konfigurieren wir dies nun wie folgt. Wir bearbeiten den bestehende VPN Virtual Server (Wahlweise kann man auch einen neuen anlegen).

Als zweite Authentifizerungs­methode wählen wir RADIUS.(Bild:  NetKnights)
Als zweite Authentifizerungs­methode wählen wir RADIUS.
(Bild: NetKnights)

Wir fügen eine weitere „Basic Authentication“ hinzu und wählen als „Policy“ RADIUS und als „Type“ Secondary.

Der Basic Authentication vom Typ RADIUS fügen wir schließlich ein neues Policy Binding hinzu, in dem wir unseren kon­fi­gu­rier­ten RADIUS Server auswählen. Damit haben wir zu dem bestehenden VPN nun den zweiten Authentifizierungs­schritt gegen RADIUS und privacyIDEA hinzugefügt.

Das Login vom Netscaler ist nun um ein weiteres Feld reicher geworden. Der Benutzer muss nun für eine erfolgreiche Anmeldung zusätzlich zum AD-Passwort noch den OTP-Wert seines TOTP Authenticators mit angeben.

Netscaler-Login, jetzt mit zusätzlichem Faktor.(Bild:  NetKnights)
Netscaler-Login, jetzt mit zusätzlichem Faktor.
(Bild: NetKnights)

Es gibt noch viele weitere Anbindungs­möglichkeiten. RADIUS kann auch als „Primary Authentication“ verwendet werden. Der FreeRADIUS und privacyIDEA können dann sowohl die Authentifizierung mit dem ersten Faktor (statisches Passwort wie AD-Passwort) und dem zweiten Faktor durchführen. Dies kann in zwei Schritten erfolgen und via „Challenge Response“; dies können wir in den folgenden Artikeln betrachten, wenn wir uns die Möglichkeit der Richtlinien in privacyIDEA ansehen.

Genau wie wir hier den Netscaler angebunden haben, ließen sich auch andere Applikationen via RADIUS anbinden wie OpenVPN, pam_radius oder Netzwerkswitche.

Weitere Schritte

Im nächsten Teil der Workshop-Reihe werden wir auf Rollen und Rechte im privacyIDEA WebUI eingehen. Was darf ein Administrator tun? Gibt es Helpdesk-Benutzer? Welche Aktionen sollen die Benutzer selber im Selfservice-Portal durchführen können?

Im vierten Teil werden wir das Thema Single Sign-On mit Keycloak gegen privacyIDEA betrachten und uns bei der Gelegenheit sowohl FIDO2/Passkeys als auch PUSH-Token als moderne Art der Authentifizierung anschauen.

Im fünften Teil der Reihe werden wir dann mit Hilfe des privacyIDEA Credential Providers die Anmeldung an Windows-Systemen absichern.

Über den Autor: Cornelius Kölbel ist CEO von NetKnights.

(ID:50294573)