Azure P2S Azure Authentication in preview

UPDATE: Mittlerweile ist es auch möglich die Konfiguration direkt im Azure Portal durchzuführen. Hierbei einfach bei den jeweiligen S2S VPN Gateway in den Bereich “Point-to-site configuration” wechseln, danach die Option “Open-VPN” im Tunnel Type auswählen und es gibt eine neue Variante “Azure Active Directory”:

Bei einem meiner letzten Kundenanfragen ging es um das Thema: „wie kann ich mich am Besten von meinem Rechner Remote in mein Firmennetzwerk, welches in der Azure Cloud gehostet ist, verbinden“?

Die einfachste Lösung seitens Microsoft lautet natürlich, einen VPN Gateway (welchen ich ohnehin für die S2S VPN Anbindung nach On-Prem benötige) und hier die Funktionalität von P2S (Point to Site)

Bis vor kurzem gab es hier die Möglichkeit von Zertifikate oder Radius basierende Authentifizierung. Die erste Variante ist meiner Meinung nach nicht wirklich sinnvoll, weil die Administration nicht wirklich ideal ist. Weitere Nachteile sind:

  • Wenn ich das Zertifikat weiter gebe kann sich jeder anmelden
  • Keine User basierende Authentifizierung

Nicht wirklich eine professionelle Enterprise Lösung!

Die Variante zwei ist hier schon viel ansprechender, hat aber wieder folgende Nachteile:

  • Ich benötige Zusatzservices wie zb. einen Windows NPS oder Zertifikate für OpenVPN, je nachdem was ich einsetzen möchte.
  • Ich bin natürlich von diesen Services abhängig und muss ev. eine hoch verfügbare Lösung, Monitoring, Backup usw. bedenken.
  • Je nachdem wie ich die Services positioniere, bin ich von der S2S VPN Anbindung abhängig.

Der Vorteil liegt natürlich klar auf der Hand, ich hab eine Enterprise Lösung mit einem einheitlichen User Management.

Wir möchten aber die großen Vorteile der Cloud nutzen, so viel wie möglich als PaaS oder SaaS abzubilden und uns so wenig wie möglich um die operativen Themen zu kümmern, sondern eher um die „coolen neuen Themen“,

Ich hab jetzt gelesen, dass Microsoft die Funktionalität von Azure AD P2S Authentication (aktuell in Preview) anbietet, was ich natürlich gleich mal testen musste. Ein echt spannendes Thema weil ich die oben genannten Themen:

  • PaaS oder SaaS Services nutzen
  • Enterprise Lösung
  • Einheitliches User Management

abbilden kann.

Wie verwende bzw. kann ich diese Funktion freischalten? Aktuell gibt es keine Möglichkeit in der GUI um diese Funktionalität bei einem bestehenden bzw. neuen Azure S2S VPN Gateway frei zu schalten. Hierfür muss also die Powershell oder noch besser die Azure CloudShell herangezogen werden. Voraussetzung hierfür ist natürlich ein Azure S2S VPN Gateway (mindestens VPNGW1) vom Type RouteBased weil eine OpenVPN Verbindung benötigt wird.

Als ersten Schritt müssen wir die Azure AD Enterprise App registrieren. Ohne diese App können wir die weiteren Schritte nicht durchführen.

Ja nachdem in welcher Umgebung (Azure) wir uns befinden, gibt es unterschiedliche URLs die wir aufrufen müssen:

Public Azure:

https://login.microsoftonline.com/common/oauth2/authorize?client_id=41b23e61-6c1e-4545-b367-cd054e0ed4b4&response_type=code&redirect_uri=https://portal.azure.com&nonce=1234&prompt=admin_consent

oder

Azure Goverment:

https://login-us.microsoftonline.com/common/oauth2/authorize?client_id=51bb15d4-3a4f-4ebf-9dca-40096fe32426&response_type=code&redirect_uri=https://portal.azure.us&nonce=1234&prompt=admin_consent

oder

Azure China:

https://https://login.chinacloudapi.cn/common/oauth2/authorize?client_id=49f817b6-84ae-4cc0-928c-73f27289b3aa&response_type=code&redirect_uri=https://portal.azure.cn&nonce=1234&prompt=admin_consent

In den meisten Fällen werde ich natürlich die erste Variante “Public Azure” verwenden. Was passiert, wenn ich auf den Link klicke?

Ich muss mich mit meinem Azure AD Account (mit administrativen Rechten, je nach Azure AD Hardening) anmelden und die neue App registrieren:

Anschließend findet ihr in euren Azure AD Tenant unter Enterprise Applications eine neue Applikation mit dem Namen: “Azure VPN”


Großartig, nun können wir diese neue Funktionalität beim Azure VPN Gateway über die Powershell aktivieren. Ich verwende hierfür die CloudShell. Um die Befehle ordnungsgemäß ausführen zu können, muss ich folgende Informationen vorab wissen:

  • Die RessourceGruppe, in der sich der S2S VPN Gateway befindet
  • Den Namen des S2S VPN Gateways
  • Die AzureAD Tenant ID

Die Azure AD Tenant ID findet ihr, wenn ihr im Azure Portal die Section Azure Active Directory öffnet und dort in den Unterbereich “Properties” wechselt:

Okay, jetzt kommen ein paar Command Line Parameters dran:

$gw = Get-AzVirtualNetworkGateway -Name <name of VPN gateway> -ResourceGroupName <Resource group>
Set-AzVirtualNetworkGateway -VirtualNetworkGateway $gw -VpnClientRootCertificates @()
Set-AzVirtualNetworkGateway -VirtualNetworkGateway $gw -AadTenantUri "https://login.microsoftonline.com/<your Directory ID>" -AadAudienceId "41b23e61-6c1e-4545-b367-cd054e0ed4b4" -AadIssuerUri "https://sts.windows.net/<your Directory ID>/"

WICHTIGE INFO, sofern ihr einen neuen Azure Gateway angelegt oder noch kein P2S konfiguriert habt, legt zuerst mal einen IP Adress Space für euren Gateway fest, ansonsten würdet ihr folgende Fehlermeldung bekommen:

Wie schaut das jetzt in der Azure CloudShell aus? Ich öffne die CloudShell

Sofern noch nicht konfiguriert, bitte Storage Account mit einem Azure File Storage anlegen.

Anschließend muss das Azure P2S OpenVPN Profile heruntergeladen werden. Dies geschieht mit dem folgenden Befehl:

$profile = New-AzVpnClientConfiguration -Name <name of VPN gateway> -ResourceGroupName <Resource group> -AuthenticationMethod "EapTls"
$PROFILE.VpnProfileSASUrl

Einfach den ausgegebenen Link in einem Browser einfügen und die .zip Datei herunterladen. Nach Fertigstellung bitte die Datei extrahieren. Ihr könnt jetzt das File “azurevpnconfig.xml” im Folder AzureVPN finden.

Im nächsten Schritt muss der Azure VPN Client heruntergeladen und installiert werden. Diesen findet ihr unter folgendem LINK

Nach der erfolgreichen Installation kann der Client “Azure VPN Client (preview)” gestartet werden. Das zuvor exportierte Profile (azurevpnconfig.xml) muss nun importiert werden:

Cool, wir haben jetzt die Verbindung erfolgreich eingerichtet. Als nächsten Schritt muss eine Verbindung aufgebaut werden. Wenn ich mich in einen anderen Tenant verbinden möchten, dann muss ich zuerst einen Work or School Account auf meinen Client binden. Hintergrund und hier liegt auch noch eine Unschönheit:

Der User mit den ich mich verbinde, muss als Member User in den jeweiligen Tenant vorhanden sein. Ein Guest User funktioniert leider nicht, da ich folgende Fehlermeldung bekomme:

Ich muss hier noch genauere Tests durchführen, ob vielleicht das Anlegen der Azure AD App im jeweiligen User Tenant helfen würde.

Okay, ich hab jetzt in den jeweiligen Tenant einen User angelegt und nochmals versucht. Awesome, jetzt funktioniert alles:

Ich bekomme anschließend folgende Info:


Im Hintergrund wurde jetzt der neue User bei meinem PC als Work or School Account hinzugefügt:

!VORSICHT! Bei der Configuration wird der Loginname inkl. Password zwischengespeichert. Beim nächsten Aufrufen wird kein Username und Passwort Abfrage mehr gestartet. Ich hab mir mal die Configurationsdatei angeschaut und es gibt einen Parameter namens “cachesigninuser”. Dieser Parameter steht per default auf “true” und muss auf “false” abgeändert werden. Danach muss bei jedem Verbindungsaufbau ein Username und Passwort angegeben werden.

Okay, wie kann ich jetzt ein vernünftiges Usermanagement drauf legen? Per default können sich jetzt alle User, welche sich im Azure AD Tenant befinden mit den VPN Client anmelden. Wenn ich jetzt jedoch eine Einschränkung auf einem User oder einer Gruppe machen möchte, muss ich wiefolgt vorgehen:

1.) Ich suche mir die registrierte Azure AD App heraus:

2.) Öffne die Applikation, wechsle in den Bereich „Properties“ und aktiviere die Option “User assignment required”.

Durch diese Einstellung muss der User bei der Applikation berechtigt werden. Wenn dies nicht der Fall ist, dann bekommt der User bei der Einrichtung der Verbindung folgende Fehlermeldung:

Fazit, ein wirklich cooles neues Feature, einfach zu konfigurieren und eine echte Enterprise Lösung.

UPDATE

Ich habe jetzt aufgrund einer Anfrage weitere Test durchgeführt:

  • Sind CA (Conditional Access) Policies supported?
  • Kann ich die Erstellung der App mittels Azure Policy unterbinden?
  • Ich hab mir das Thema mit den Guest Account noch genauer angeschaut und die Gründe gefunden, warum es nicht funktioniert.

Sind CA Policies supportet?

Definitiv JA. Ich hab in meiner Lab Umgebung eine CA Policy für die erstellte Enterprise Application erstellt und nur für diese App MFA aktiviert. Es hat ohne Probleme funktioniert.

Unterbinden der Erstellung mittels Azure Policy?

Hier ein ganz klares NEIN. Die Policies sind ja für Azure Ressourcen angedacht und nicht für Azure AD. Ist aber meiner Meinung nach nichts Tragisches, weil das Anlegen der Enterprise Application einen “Admin Consent” erfordert (genauere Infos in einem meiner vorherigen Posts), daher kann ein “User” diese Applikation nicht anlegen und bekommt folgende Fehlermeldung:

Warum kann sich ein Guest User nicht anmelden?

Nach genauerer Analyse hat sich die Frage relativ schnell aufgeklärt. Beim Anlegen der Anbindung definiere ich ja durch den Befehl:

Set-AzVirtualNetworkGateway -VirtualNetworkGateway $gw -AadTenantUri "https://login.microsoftonline.com/<your Directory ID>" -AadAudienceId "41b23e61-6c1e-4545-b367-cd054e0ed4b4" -AadIssuerUri "https://sts.windows.net/<your Directory ID>/"

welcher AAD Tenant für die Authentifizierung herangezogen werden soll. Aktuell kann ich aber nur einen Tenant eintragen. Es wäre sinvoll, wenn Microsoft hier anstelle eines Strings ein Array hinterlegt und mehrfach Abfragen erlauben würde. Hier noch der PS Auszug, um die Einstellungen zu sehen:

Get-AzVirtualNetworkGateway -Name <name of VPN gateway> -ResourceGroupName <Resource group>