Table of Contents
Um meinen vorherigen Artikel zu vervollständigen, habe ich in meinem Test Lab direkt auch noch denn Microsoft Azure MFA Service aus der Cloud implementiert und getestet. In diesem Beitrag gehe ich direkt auf die ToDo’s für die Implementierung ein. Für weitere Informationen zu MFA und den Unterschieden zwischen Lokal und Cloud lest bitte meinen vorherigen Beitrag.
Wichtig ist das alle meine Angaben den Stand März 2019 haben und da es sich um die Cloud handelt, recht schnell wieder obsolet sein werden.
Ablauf einer Microsoft Azure MFA Cloud Authentifizierung
- Der User ruft per URL die Unified Gateway Seite auf (z.B. https://citrix.deyda.net) & gibt seine Credentials (Username & Passwort) ein
- Die Credentials werden über den Citrix ADC an den lokalen NPS weitergegeben (RADIUS Request)
- Der Network Policy Server übergibt die Credentials an den Active Directory Controller (AD Proxy)
- Nach erfolgreicher Überprüfung wird eine Bestätigung an den NPS übermittelt
- Der NPS fordert den zweiten Faktor über die NPS Extension for Azure MFA beim Multi-Factor-Authentifizierungsdienst (Azure MFA Service) an
- Per Push-Notification wird über die bevorzugten Methode (MFA-App, Anruf oder SMS) der zweite Faktor an das Mobiltelefon übertragen
- Bestätigung des zweiten Faktors am Mobilgerät durch den Benutzer
- Der Azure MFA Service übergibt die Bestätigung des zweiten Faktors über die NPS Extension an den lokalen NPS weiter
- Der lokale Network Policy Server übergibt die Bestätigung an den Citrix ADC (RADIUS Response)
- Der User ist authentifiziert und erhält Zugriff auf die Ressourcen
Einrichtung MFA-Cloud Service als zweiter Faktor
Ich gehe in meiner Anleitung von einer Zwei-Faktor Authentifizierung im Unified Gateway aus. Im Citrix ADC (ehemals NetScaler) Version 12 wird der Azure MFA Cloud Service hierfür genutzt.
Voraussetzungen
Ich setze die folgenden Dinge voraus und gehe nicht im Detail auf diese ein:
- Citrix ADC mit erfolgreicher Basis Konfiguration
- Interne und externe DNS Einträge für Unified Gateway-vServer (z.B. citrix.deyda.net)
- Zertifikate für den DNS Eintrag
- Konfigurierter Unified Gateway-vServer
- Vorhandene Azure Subskription mit Basis Konfiguration
- Aktivierte Azure Active Directory Premium Lizenz
- Installierte Authenticator App auf Test Benutzer Endgerät
Microsoft/Office 365 Admin Center
Als erstes melden wir uns mit einem administrativen Account in Office 365 Portal (https://portal.office.com) an und klicken auf Admin um in das Admin Center zu gelangen.
- Im Admin Center Navigation Panel auf Benutzer> Aktive Benutzer klicken
- In der folgenden Ansicht den zu konfigurierenden Benutzer anklicken
- Im aufgeklappten Menü des Benutzers auf Mehrstufige Authentifizierung verwalten klicken
- In dem neuen Fenster den zu konfigurierenden Benutzer wieder auswählen und öffnen
- Daraufhin über Quick Steps den Benutzer für MFA Aktivieren
- Im folgenden Fenster auf multi-factor auth aktivieren
Network Policy Server
Nun schalten Sie sich auf den internen Server auf, der später als Network Policy Server dienen soll, um die erforderliche Rolle und Programme zu installieren, sowie zu konfigurieren.
- Hierfür startet ihr den Server-Manager und klickt auf Rollen und Features hinzufügen
- Klickt euch im folgenden Fenster durch bis zur Auswahl der Server Rollen, dort wählt ihr die Rolle Network Policy and Access Services aus und klickt auf Next
- Im folgenden Fenster auf Add Features klicken und die Installation per Install starten
Nun ladet ihr die NPS Extension für Azure MFA herunter und installiert / konfiguriert die lokale Umgebung.
- Ihr geht auf den folgenden Link und ladet die NPS Extension for Azure MFA herunter
- Nach dem Download startet ihr den Installer und klickt auf Install
- Nun öffnet ihr eine PowerShell Session als Administrator
- Navigiert zum Pfad C:\Program Files\Microsoft\AzureMfa\Config und startet den folgenden Befehl
1 |
.\AzureMfaNpsExtnConfigSetup.ps1 |
- Daraufhin müsst ihr euch mit eurem Administrativen Office365/Azure Account anmelden
Für den nächsten Schritt benötigen wir die Verzeichnis ID der Azure AD. Bitte das PowerShell Fenster offen halten.
- An portal.azure.com anmelden und zu Azure Active Directory > Eigenschaften navigieren
- Kopiert die angezeigte ID unter Verzeichnis-ID
- Die Verzeichnis-ID kopiert ihr in das offene PowerShell Fenster und bestätigt dies mit Enter
Mit dem Script werden folgende Dinge erledigt:
- Erstellung eines Selbstsignierten Zertifikats
- Zuordnung des öffentlichen Schlüssel des Zertifikats an den Service Principal in Azure AD
- Speichern des Zertifikats im Zertifikatsspeicher der lokalen Maschine
- Zugriff auf den öffentlichen Schlüssel des Zertifikats für den Network User freigeben
- NPS Dienste neu starten
Nun kann der lokale Network Policy Server konfiguriert werden.
- Startet die Network Policy Server Console (z.B. über Server-Manager > Tools > Network Policy Server)
- Klickt mit der rechten Maustaste auf RADIUS Clients und wählt New aus
- Hier konfiguriert ihr die Kommunikation mit dem Citrix ADC wie folgt
- Enable this RADIUS client (Ausgewählt)
- Friendly name (z.B. CitrixADC-NSIP)
- Address (NSIP des Citrix ADC, z.B. 10.0.0.7)
- Shared secret (Frei wählbar, muss aber gespeichert werden, z.B. 191211)
- Confirm shared secret (Nochmals das vorher gewählte, z.B. 191211)
- Eingabe mit OK bestätigen
- Nun klickt mit der rechten Maustaste auf Remote RADIUS Server und auf New
- Im folgenden Fenster gebt ihr einen Namen für eure RADIUS Gruppe (Group name) ein und klickt auf Add
- Hier konfiguriert ihr die Kommunikation mit der lokalen AD wie folgt
- Server (FQDN oder IP eures lokalen DC)
- Klickt auf den Reiter Authentication/Accounting
- Authentication port (1812)
- Shared secret (Oben gewähltes Shared secret, z.B. 191211)
- Confirm shared secret (wie oben, z.B. 191211)
- Nun auf den Reiter Load Balancing klicken
- Number of seconds without response before request is considered dropped (Wichtig dies hochzusetzen damit der Benutzer genügend Zeit hat, den Zweiten Faktor (MFA-App, Anruf oder SMS) zu bestätigen, z.B. 60)
- Number of seconds between requests when server is identified as unavailable (Wichtig siehe oben, z.B. 60)
- Bestätigt die Eingabe mit OK
- Klickt nun mit der rechten Maustaste auf Policies > Connection Request Policies und wählt New aus
- Im folgenden Fenster definiert ihr die Kommunikation zum Citrix ADC
- Policy name (z.B. MFA Server Citrix ADC NSIP No Forward)
- Policy enabled (Ausgewählt)
- Klickt im Reiter Conditions auf Add
- Client IPv4 Address (NSIP, z.B. 10.0.0.7)
- Klickt nun auf den Reiter Settings und dort auf den Menüpunkt Authentication Methods
- Override network policy authentication settings (Ausgewählt)
- Microsoft Encrypted Authentication version 2 (Ausgewählt)
- Wählt als nächstes den Menüpunkt Authentication aus
- Authentication requests on this server (Ausgewählt)
- Bestätigt die Eingabe mit OK
- Klickt nun nochmals mit der rechten Maustaste auf Policies > Connection Request Policies und wählt New aus
- Im folgenden Fenster definiert ihr
- Policy name (z.B. MFA Server Citrix ADC Request Forward)
- Policy enabled (Ausgewählt)
- Klickt im Reiter Conditions auf Add
- NAS Identifier (Frei wählbar, muss aber gespeichert werden, z.B. MFA)
- Klickt nun auf den Reiter Settings und dort auf den Menüpunkt Authentication Methods
- Override network policy authentication settings (Ausgewählt)
- Microsoft Encrypted Authentication version 2 (Ausgewählt)
- Klickt nun mit der rechten Maustaste auf Policies > Network Policies und wählt New aus
- Policy name (z.B. NetScaler MFA)
- Policy enabled (Ausgewählt)
- Grant access (Ausgewählt)
- Klickt im Reiter Conditions auf Add
- NAS Identifier (Frei wählbar, muss aber gespeichert werden und muss der selbe sein wie oben, z.B. MFA)
- Klickt nun auf den Reiter Constraints und dort auf den Menüpunkt Authentication Methods
- Microsoft Encrypted Authentication version 2 (Ausgewählt)
- Bestätigt die Eingabe mit OK
Authentication App
Wir melden uns nun mit unserem Test Benutzer an Office365 (https://portal.office.com) an, um die Authentication App auf dem Mobilgerät zu konfigurieren.
Wenn der Test Benutzer noch keinen konfigurierten Zweiten Faktor hat, erscheint folgende Meldung. Die Konfiguration kann mit Weiter gestartet werden.
- Im folgenden Fenster wählt ihr die Art des Zweiten Faktors (z.B. Mobile App) aus
- Um die Konfiguration zu vereinfachen wählt ihr Benachrichtigungen zur Überprüfung empfangen aus und klickt auf Weiter
- Im folgenden Fenster wird ein QR Code angezeigt, womit die Authentication App konfiguriert werden kann
- Öffnet die Authenticator App auf eurem Endgerät
- Klickt auf das + Symbol um einen weiteren Account hinzuzufügen
- Wählt im Konten Fenster Geschäfts- oder Schulkonto aus
- Mit dem folgenden Menüpunkt QR-Code scannen könnt ihr den vorhandenen QR Code scannen
- Nun wird der Test Benutzer in der Account Liste angezeigt
- Im Browser könnt ihr die Konfiguration des MFA Services mit Weiter und Fertig bestätigen
Citrix ADC
Nun kann der Citrix ADC für die Multi-Faktor Authentifizierung eingerichtet werden. Hierfür wird ein RADIUS Server erstellt und an den vorhandenen Unified Gateway vServer gebunden.
- Im Citrix ADC Navigation Panel auf System > Authentication > RADIUS klicken
- Auf Registerkarte Servers klicken und über Add einen neuen Authentication Server erzeugen
- Name (z.B. Local-NPS)
- IP Address (IP des NPS)
- Port (1812)
- Secret Key (Shared Secret definiert im NPS, z.B. 191211)
- Confirm Secret Key (Shared Secret)
- Klickt auf Test Connection um die eingegebenen Daten und die Verbindung zum Network Policy Server zu prüfen
- Klickt auf More um die weiteren Optionen zu konfigurieren
- Time-out (Setzt diese bei Anrufen oder SMS auf 120 Sekunden)
- NAS ID (Konfigurierter Wert aus NPS, z.B. MFA)
- Password Encoding (mschapv2)
- Accounting (OFF)
- Authentication Server Retry (3)
- Authentication (Ausgewählt)
- Speichert die Konfiguration mit Create
- Klickt auf den Reiter Policy und klickt auf Add um eine neue RADIUS Policy zu erstellen
- Name (z.B. radius_mfa_cloud_pol)
- Server (vorher erstellten RADIUS Server, z.B. Local-NPS)
- Expression (ns_true)
- Mit Create speichern Sie die Konfiguration
- Wählt nun den vorher konfigurierten Unified Gateway vServer aus
- Klickt unter Basic Authentication auf das + Symbol
- Unter Choose Type konfiguriert folgendes
- Choose Policy (RADIUS)
- Choose Type (Primary)
- Bestätigt die Eingabe mit Continue
- Wählt im folgenden Fenster unter Select Policy die vorher erstellte RADIUS Policy (radius_mfa_cloud_pol) aus
- Bestätigt die Eingabe mit Bind
Nach dem speichern der Änderung, kann man sich am Gateway anmelden und erhält nach Eingabe der Anmeldedaten eine Meldung auf dem Mobilgerät (Mobile App, Anruf oder SMS).
Troubleshooting
Um nachträglich den Benutzern den Zugriff auf seine MFA Einstellungen zu gewähren, gebt folgende Adresse weiter:
https://aka.ms/mfasetup
Hier kann der Benutzer seine bestehenden Einstellungen editieren (Telefonnummer, Authenticator App usw.) oder die Verbindung zu Eingerichteten Authenticator Apps löschen.
Hallo Manuel,
versteh ich das richtig dass man hier dann nur noch die Primary Authentication über MFA braucht, nicht wie „früher“ mit Primary und Secondary (LDAP und RADIUS über RSA oder so) – da in MFA ja auch schon die Microsoft Credentials stecken ?
Und gibt es dann noch was zu beachten wenn ich dies dann für den Access Gateway nutze und danach auf Storefront / VDA’s connecte ?
Super erklärt übrigens bisher, und sehr interessant dein Blog.
Hi Christian,
genau man benötigt hiermit nur noch eine Authentication zu hinterlegen. Wenn du die MFA wie oben beschrieben konfigurierst musst du nichts weiteres beachten. Ich kombinieren aber im Moment bei den Kunden eine SAML Authentifizierung mit Azure AD als IdP (Azure MFA aktiv) mit dem Netscaler.
Dadurch muss der Netscaler nicht weiter editiert werden, um weitere Authentifizierungsmethoden des Azure MFA (Telefonanruf, SMS oder OTP) bereit zu stellen. Des weiteren ist es möglich, ohne grössere Implementierung im Netscaler (nFaktor) während der Anmeldung zwischen den MFA Methoden zu wechseln, falls eine der Methoden nicht funktioniert.
Zu beachten ist nur dann, das man für intern einen Federated Authentication Server (FAS) benötigt, da der Netscaler in diesem Szenario die Passwörter nicht kennt und der FAS das SAML Token dann intern in ein Zertifikat umwandelt, das für die interne Authentifizierung an den VDA genutzt wird.
Bei weiteren Fragen melde dich einfach.
Hi,
ich habe die Anleitung heute mal durchgearbeitet. Und so weit ich das einschätzen kann funktioniert der NPS und die weitergabe an MFA.
Trotzdem kann ich mich nicht einloggen. Kenne den Fehler auch schon aber habe gerade leider keine Idee wie ich es anpassen müsste.
Meine Nutzernamen sind: vorname.nachname und email adresse ist vorname@domain.com
Logge ich mich über das Access Gateway mit vorname.nachname und windows passwort an funktioniert dies und der nps gibt dann aber an azure mfa folgendes weiter: vorname.nachname@domain.com und es kommt zum authentifizierungs fehler.
Log: vorname.nachname@domain.com : User not found, request rejected.
Irgendwelche Ideen dazu?
Vielen Dank
Hi Sascha,
bitte prüfe mal deine Session Policies (Global und an den vServer gebunden), ob dort eine Single Sign On Domäne angehängt ist.
Wenn dort keine hinterlegt ist, melde dich einfach per Linkedin oder Xing bei mir, dann können wir direkter über das Thema sprechen.
Hallo Manuel,
Habe deine Methode inplementiert und funktioniert auch einwandfrei. Aber mir ist gerade aufgefallen, daß wenn das Password eines Users verfällt, der Benutzer sich nicht mehr am Netscaler authentifizieren kann. Hast du dafür auch schon eine Lösung parat?
Vielen Dank
Hi Simon, seit Anfang des Jahres kann man auch für die Azure AD die Passwörter ablaufen lassen (in Verbindung mit PasswordHashSync).
Verbinde dich hierfür auf deinen Server mit Azure AD Connect und führe die folgenden Befehle in PowerShell aus:
Connect-MsolService
Get-MsolDirSyncFeatures
Hier müsstest du sehen das EnforceCloudPasswordPolicyForPasswordSyncedUsers auf False steht.
Aktiver dies mit:
Set-MsolDirSyncFeature -Feature EnforceCloudPasswordPolicyForPasswordSyncedUsers -Enable $true
Nachkontrollieren mit:
Get-MsolDirSyncFeatures
Nun aktivieren wir dies noch für die Benutzer:
Connect-AzureAD
Get-AzureADUser | Select-Object DirSyncEnabled, PasswordPolicies, AccountEnabled
Get-AzureADUser -All $true | Where-Object { $_.DirSyncEnabled -eq $true -and $_.PasswordPolicies -eq ‚DisablePasswordExpiration‘ } | ForEach-Object {Set-AzureADUser -ObjectId $_.ObjectID -PasswordPolicies None}
Get-AzureADUser | Select-Object DirSyncEnabled, PasswordPolicies, AccountEnabled
Get-MsolPasswordPolicy -DomainName http://www.deyda.net
Die folgenden Befehle oben sind noch zum prüfen der Einstellungen. Bei Rückfragen stehe ich dir zur Verfügung. 🙂
Hallo Manuel,
habe das jetzt so getestet wie von dir beschrieben und das Ad password attribut auf verfallen gesetzt und kann mich dann über dem netscaler nicht mehr authentifzieren, auf portal.office.com hingegen kann ich mich anmelden werde aber nicht informiert, daß mein password zu ändern wäre.
Auf dem Storefront funktioniert es und ich werde aufgefordert das password zu ändern. Sollte das nicht auch über dem Netscaler so möglich sein oder habe ich da was falsch verstanden?
Danke
Hallo,
die Anleitung funktioniert soweit. Super!
Einzige Sache die mir auffällt, wenn ich im Microsoft Authenticator auf „Verweigern“ drücke, dann werde ich trotzdem in Citrix Gateway angemeldet… – Das sollte ja nicht so sein…
Hallo nochmal,
habe selbst den Fehler gefunden. Das Problem war, dass ich noch eine LDAP-Policy im ADC drin hatte. Nachdem ich das richtig angeordnet hatte funktioniert es wie es soll…
Perfekt. War gerade alles im Lab nochmals am nachbauen um dir zu helfen :-). Dann kann ich das wieder einstampfen 😛