Archiv des Autors:

Conditional Access für Anfänger

Da das Thema immer wichtiger (nicht nur) für mich wird schreibe ich heute ein wenig zu Conditional Access.

Was ist Conditional Access?

Ein Feature von Azure AD mit dem der Zugriff auf Ressourcen kontrolliert werden kann.

Was brauche ich dafür?

  • Die Applikation muss per Modern Authentication an Azure AD angebunden sein.
  • Die User müssen sich am Azure AD authentisieren können.
  • Es werden AAD Premium Lizenzen benötigt

Weiterlesen

Mehr Azure MFA mit NPS

Gestern hatte ich hier etwas zum Thema Azure MFA, NPS und Netscaler geschrieben.

Ein großer Nachteil der bisherigen Implementierung ist, dass alle RADIUS Requests nun durch das MFA Plugin geprüft werden. Es ist nicht möglich mit dem Regelsatz des RADIUS Servers Einfluss darauf zu nehmen. So scheint es so, dass es nicht möglich ist den NPS auch für andere Zwecke wie z.B. WLAN zu nutzen.

Weiterlesen

Die Azure MFA RADIUS Challenge!

Ich habe mich die letzten Tage ein wenig mit dem Azure MFA Plugin für den Network Protection Server beschäftigt und bin relativ schnell bei dem(!) Artikel bzgl. NPS, Azure MFA und Netscaler von Christiaan Brinkhoff gelandet. Für meinen Aufbau habe ich mich für eine verkleinerte Variante seiner Anleitung ohne Proxy und komplexe Request Policies entschieden.

 

NPS Konfiguration

Die Konfiguration des NPS sieht dann wie folgt aus:

  • Radius-Clients
    • Mit welcher IP Adresse (NSIP oder SNIP) hängt vom Netscaler ab. (die Logs helfen hier schnell)
    • Vorsicht! der Netscaler kann nur Shared Secrets bis zu 31 Zeichen verarbeiten (Link); der NPS erzeugt jedoch bei einem Klick auf Generate eine Shared Secret mit 64 Zeichen.
  • Es braucht nur mindestens eine Connection Request Policy die auf Localhost zeigt
    • hier nehmen wir die Default-Policy
  • Zusätzlich wird eine Network Policy wie bei Christiaan beschrieben benötigt die folgendes enthält:
    • Condition: NAS Identifier -> MFA (damit wir auch noch andere Services authentisieren können)
    • MS-CHAPv2
  • Die anderen Network Policies können weiter bestehen bleiben solange keine andere Policy vor unserer trifft (NPS arbeitet mit First Match)

Am Netscaler habe ich mich für die Anlage des Radius Servers sehr dicht an der Anleitung von Christiaan entlang gearbeitet:

  • Radius Server anlegen mit
    • NAS Identifier -> MFAanlegen
    • Timeouts hochsetzen.
    • MS-CHAPv2 konfigurieren.
  • Policy anlegen mit dem Radius Server

Netscaler Konfiguration

Bei der Einbindung am Virtual Server ist es jedoch deutlich einfacher den RADIUS als primäre Authentisierungsmethode zu binden und die bisherige rauszuwerfen, da der RADIUS Server ja bereits ebenfalls eine Authentisierung gegen das AD macht. Damit ist dann auch das Problem mit den Password Feldern gelöst.

Wenn alles glatt läuft dann sollte man sich nun anmelden können – aber bei mir wollte es einfach nicht klappen. Also gut: Debugging!

Als erstes schauen wir uns das Accounting an. Das liegt im Default unter C:\Windows\System32\LogFiles

und ich empfehle an dieser Stelle die Nutzung von z.B. Baretail.

Als nächstes brauchen wir mehr Logging:

auditpol /set /subcategory:"Network Policy Server" /success:enable /failure:enable

!Vorsicht! Das wird gerne durch GPOs wieder überschrieben – also besser per GPO konfigurieren (siehe unten)

 

Nun sehen wir Events vom NPS und vom Plugin. In meinem Fall beschuldigen die beiden sich gegenseitig den Request abgelehnt zu haben:

 

Um der Sache auf den Grund zu gehen versuche ich es mit „Deaktivierung des Plugin“ – also einer Deinstallation. Nun sehe ich, dass ich bereits bei der Authentisierung des Users Probleme habe:

Da ich mir ganz ganz sicher bin, dass meine Credentials okay sind gehe ich noch ein wenig tiefer, werfe Wireshark an und entdecke einen MS-CHAP-Error

Zum Thema MS-CHAP-Error und NPS spuckt dann zum Glück das Internet etwas aus und ich stoße auf einen Eintrag vom MS-Support.

Dort wird beschrieben, dass Server 2003 und 2008 im Default NTLM verwenden um Passwörter zu hashen wenn MS-CHAP zum Einsatz kommt. Ich kann an dieser Stelle klar bestätigen, dass Server 2012R2 das auch tut. (2016 wahrscheinlich auch). Da wir selbst in unserer Testumgebung NTLMv1 deaktiviert haben lehnt der DC die Anfrage ab und es kommt zu diesem Fehlerbild.

Dem kann jedoch mit folgendem Regkey Abhilfe geschaffen werden:

Danach läuft es auch mit NTLMv2! Also kann das Plugin wieder installiert werden und bei mir lief dann alles sauber.

Richtig großartig ist auch, dass der Netscaler Out-of-the-box die verschiedenen Varianten des Azure MFA unterstützt. Ich habe mal zwei Beispiele rausgesucht.

 

Nutzung des Telefonanrufs

In diesem Szenario habe ich für meinen Testuser konfiguriert, dass ein Anruf auf meinem Mobiltelefon erfolgen soll. Diese sehr langsame Variante zeigt mir auf wo ich noch etwas verbessern kann.

Nutzung einer PIN-Eingabe

In diesem Szenario muss der Anwender einen PIN eingeben den er aus der App oder per SMS erhalten hat. Der Netscaler verarbeitet die Radius Challenge direkt ohne dass eine spezielle Konfiguration notwendig ist.

 

Viel Spaß damit!

Nützliche Links zum Thema:

Netscaler & MFA:

https://www.christiaanbrinkhoff.com/2017/02/17/how-to-configure-Azure-mfa-for-citrix-netscaler-gateway-radius-by-using-the-new-nps-extension/

( http://www.acloudabove.com/2017/10/17/integrating-citrix-netscaler-nps-extension-Azure-mfa/

https://jkindon.com/2018/03/05/Azure-mfa-nps-extensions-with-netscaler-nfactor-authentication/

https://www.carlstalhood.com/radius-load-balancing-netscaler-12/

https://GitHub.com/MicrosoftDocs/Azure-docs/blob/master/articles/multi-factor-authentication/nps-extension-vpn.md )

MFA:

https://docs.Microsoft.com/en-us/Azure/multi-factor-authentication/multi-factor-authentication-get-started-user-states

http://jtpedersen.com/index.php/2017/02/13/setup-vpn-to-use-mfa-with-nps-extension/

https://docs.Microsoft.com/en-us/Azure/multi-factor-authentication/nps-extension-vpn

Netscaler

https://docs.citrix.com/en-us/netscaler/12/load-balancing/load-balancing-persistence/radius-persistence.html