Archiv der Kategorie: Azure

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

 

Azure Automation – Erweiterte Parameterverarbeitung

Beim Arbeiten mit Azure Automation kommt man schnell an den Punkt, dass ein Runbook ein zweites Runbook starten soll. Dabei möchte man meistens auch noch den einen oder anderen Parameter übergeben. Das ist alles kein Problem und schnell und einfach realisiert.

Interessant wird es jedoch wenn komplexere Objekte wie Arrays oder Hashtables übermittelt werden sollen.

Weiterlesen

Ich arbeite als IT Consultant bei Aequitas Integration und habe einen Fokus auf die Microsoft Enterprise Produktpalette.
Jedoch beschäftige ich mich schon lange auch mit Linux und finde auch die unteren OSI Schichten interessant.

Azure Automation Runbook Activities

Wer bei der Ausführung eines Azure Automation Runbooks auf Daten (Assets) aus dem Azure Automation Account zugreifen möchte hat mehrere Möglichkeiten dies zu tun.

PowerShell Cmdlets und Runbook Activities.

Weiterlesen

Ich arbeite als IT Consultant bei Aequitas Integration und habe einen Fokus auf die Microsoft Enterprise Produktpalette.
Jedoch beschäftige ich mich schon lange auch mit Linux und finde auch die unteren OSI Schichten interessant.

Azure Webhook – Universelles Runbook zum Aufrufen aller Runbooks

Webhooks in Azure Automation sind ein schneller und einfacher Weg, um die Vorzüge der Microsoft Azure Plattform in bereits bestehende Automations-Mechanismen zu integrieren.

Pro Runbook erstellt man schnell einen Webhook und ruft diesen über eine REST-Methode auf. Sobald allerdings Parameter im Spiel sind, muss man diese entweder schon bei der Erstellung des Webhooks mitgeben oder das Runbook so umschreiben, dass die Parameter durch ein externes Skript weitergegeben werden.

In dem folgenden Blog-Post von Stefan Stranger beschreibt er, wie man ein Runbook über einen Webhook mit externer Parameter-Übergabe aufruft.

Nun stellt sich die Frage, muss ich jedes Runbook umschreiben und mit einem Webhook versehen? Dies ist natürlich möglich, aber sorgt für viel Arbeit und ist nicht wirklich praktikabel, da sich die Ausführung auf einen Webhook beschränkt.

Ein Kollege brachte mich auf die Idee, ein universelles Runbook zu schreiben, welches über einen Webhook aufrufbar ist und bei dessen Aufruf genau das Runbook startet, welches ich eigentlich ausführen möchte. Dies hat den großen Vorteil, dass alle Runbooks einen normalen Aufbau vorweisen (Parameter) und gleichzeitig auf unterschiedliche Arten gestartet werden können.

Weiterlesen

IT Consultant @brightskiesgmbh und PowerShell Enthusiast.

Was gibt es Neues: Azure Active Directory – Januar 2018

In den aktuellen Release Notes finden sich folgende Ankündigungen:

Ich arbeite als IT Consultant bei Aequitas Integration und habe einen Fokus auf die Microsoft Enterprise Produktpalette.
Jedoch beschäftige ich mich schon lange auch mit Linux und finde auch die unteren OSI Schichten interessant.

Verbose Logging in Azure Automation

Beim Debugging von Azure Automation Scripten gibt es einiges zu beachten. Das Wichtigste, es gibt kein Write-Debug!

Ein bestimmtes Verhalten ist aber besonders störend. Bei aktiviertem Verbose Logging kann dies nicht für einzelne Cmdlets deaktiviert werden.

In der lokalen PowerShell lässt sich mittels „-Verbose:$false“ die Ausgabe von Verbose Messages verhindern. Das lässt sich einfach nachvollziehen.

Dieses Verhalten ist bei Azure Automation nicht gegeben. Sobald das Verbose Logging für ein Runbook aktiviert ist, betrifft dies die komplette Ausgabe.

Das führt zu sehr langen Wartezeiten bei der Ausgabe. Beim AzureRM Module sind das aktuell 11464 Zeilen Verbose Log. Die Anzeige dieser Ausgabe im Browser dauert nicht nur sehr lang, es macht das Ergebnis schwer lesbar.

Ich arbeite als IT Consultant bei Aequitas Integration und habe einen Fokus auf die Microsoft Enterprise Produktpalette.
Jedoch beschäftige ich mich schon lange auch mit Linux und finde auch die unteren OSI Schichten interessant.

Azure AD Sync – Höchstwert für Objektlöschungen bei der Identitätssynchronisierung erreicht

Hallo fabian.bader@company.com,

am Donnerstag, 20 Dezember 2017 10:07:51 GMT hat der Dienst für die Identitätssynchronisierung festgestellt, dass die Anzahl von Löschvorgängen den für [company.onMicrosoft.com] konfigurierten Schwellenwert überschritten hat. Es wurden insgesamt 551 Objekte bei dieser Ausführung der Identitätssynchronisierung zum Löschen gesendet. Dies entspricht dem konfigurierten Schwellenwert für Löschungen von 500 Objekten bzw. überschreitet ihn.

Sie müssen vor dem Fortfahren bestätigen, dass diese Löschvorgänge durchgeführt werden sollen.
Weitere Informationen zu dem in dieser E-Mail-Nachricht genannten Fehler finden Sie unter Verhindern von zufälligem Löschen.
Vielen Dank!

Ihr Azure Active Directory-Team

Wer eine solche E-Mail das erste Mail erhält fragt sich was jetzt zu tun ist.

Weiterlesen

Ich arbeite als IT Consultant bei Aequitas Integration und habe einen Fokus auf die Microsoft Enterprise Produktpalette.
Jedoch beschäftige ich mich schon lange auch mit Linux und finde auch die unteren OSI Schichten interessant.

Azure AD Groups – Premium Features

Azure Active Directory bietet einiges an Funktionen um Gruppen zu verwalten. Viele dieser Funktionen sind jedoch nicht im kostenfreien „Free-Tier“ enthalten, sondern erfordern eine Premium Lizenz.

Weiterlesen

Ich arbeite als IT Consultant bei Aequitas Integration und habe einen Fokus auf die Microsoft Enterprise Produktpalette.
Jedoch beschäftige ich mich schon lange auch mit Linux und finde auch die unteren OSI Schichten interessant.

OPENedX – Configuring and Operating Microsoft Azure Stack

Wer sich mit Azure Stack auseinandersetzen möchte kann dies mit dem kostenfreien Onlinekurs „Configuring and Operating Microsoft Azure Stack“ auf der OPENedX Plattform von Microsoft tun.

Eine Registrierung für diesen Kur ist nur noch bis 15.01.2018 möglich. Danach kann man sich, vorausgesetzt man ist registriert, den Kurs im Archiv ansehen.

Ich arbeite als IT Consultant bei Aequitas Integration und habe einen Fokus auf die Microsoft Enterprise Produktpalette.
Jedoch beschäftige ich mich schon lange auch mit Linux und finde auch die unteren OSI Schichten interessant.

The Developer’s Guide to Microsoft Azure

Microsoft verschenkt dieses eBook, um Entwicklern die Azure Plattform näher zu bringen.

  • Kapitel 1: The Developer’s Guide to Microsoft
  • Kapitel 2: Getting started with Microsoft Azure
  • Kapitel 3: Adding intelligence to your application
  • Kapitel 4: Securing your application
  • Kapitel 5: Where and how to deploy your Microsoft Azure services
  • Kapitel 6: A walk-through of Microsoft Azure
  • Kapitel 7: Using the Microsoft Azure Marketplace

Ich arbeite als IT Consultant bei Aequitas Integration und habe einen Fokus auf die Microsoft Enterprise Produktpalette.
Jedoch beschäftige ich mich schon lange auch mit Linux und finde auch die unteren OSI Schichten interessant.