Exchange On-Premises: Modern Authentication
Modern Authentication Umsetzung
Voraussetzungen für Modern Authentication
Damit wir Modern Authentication auf unserem On-Premises Exchange aktivieren können, gibt es noch einige Vorkehrungen zu treffen. In diesem Artikel setze ich folgende Voraussetzungen bereits voraus:
- Lokales Active Directory + Exchange 2016 (oder neuer) Umgebung
- Azure AD-Sync der lokalen Active Directory Domäne mit dem Azure AD
- Exchange Umgebung wurde bereits als Hybrid-Deployment aufgebaut – falls nicht siehe: Exchange On-Premises und Teams Kalender – Exchange Hybrid
Solltet ihr bereits alle diese Voraussetzungen erfüllen, kann es bereits mit dem Deployment weitergehen.
MA konfigurieren
Wenn ihr den Exchange Hybrid Configuration Wizard in einer aktuellen Version ausführt, wird bereits der Großteil der notwendigen Einstellungen automatisch gesetzt. Daher empfehle ich vorab jedem, bei dem die Konfiguration des HCW längere Zeit her ist, die aktuelle Version zu installieren und einmalig auszuführen.
On-Premises URLs notieren
Meist dürfte der Exchange unter zwei URLs erreichbar sein: exchange.domain.com und autodiscover.domain.com. Solltet ihr eure Domains kennen, ist der folgende Schritt nicht notwendig. Falls diese nicht bekannt sein sollten, schadet aber ein Blick mit folgenden Befehlen nicht.
Get-MapiVirtualDirectory | FL server,*url* Get-WebServicesVirtualDirectory | FL server,*url* Get-ClientAccessServer | fl Name, AutodiscoverServiceInternalUri Get-OABVirtualDirectory | FL server,*url* Get-AutodiscoverVirtualDirectory | FL server,*url* Get-OutlookAnywhere | FL server,*hostname*
Notiert euch die hier aufscheinenden URLs. Diese müssen wir im nächsten Schritt als SPN (Service Principal Name) im Azure AD setzen.
On-Premises URLs im Azure AD setzen
Als nächstes öffnen wir eine Powershell und verbinden uns mit dem Befehl „Connect-MSOLService“ mit unserem Office365 Tenant. Falls dieser Befehl in eurer Powershell nicht bekannt sein sollte, muss vorab das MSOL Modul mithilfe des Befehls „Install-Module MSOnline“ installiert werden. Nachdem wir eine Verbindung mit unserem Tenant hergestellt haben, prüfen wir, welche SPNs bereits hinterlegt sind.
PS C:Userskschweiger> Get-MsolServicePrincipal -AppPrincipalId 00000002-0000-0ff1-ce00-000000000000 | select -ExpandProperty ServicePrincipalNames https://autodiscover.schweigerstechblog.de https://exchange.schweigerstechblog.de 00000002-0000-0ff1-ce00-000000000000/exchange.schweigerstechblog.de 00000002-0000-0ff1-ce00-000000000000/autodiscover.schweigerstechblog.de 00000002-0000-0ff1-ce00-000000000000/schweigerstechblog.de
In meinem Fall beinhaltet das Azure AD bereits alle notwendigen URLs und ich muss nicht mehr manuell Hand anlegen. Sollte es bei euch nicht der Fall sein, so müssen die On-Premises Exchange URLs mit folgenden Befehlen hinzugefügt werden.
$x= Get-MsolServicePrincipal -AppPrincipalId 00000002-0000-0ff1-ce00-000000000000 $x.ServicePrincipalnames.Add("https://exchange.schweigerstechblog.de/") $x.ServicePrincipalnames.Add("https://autodiscover.schweigerstechblog.de/") Set-MSOLServicePrincipal -AppPrincipalId 00000002-0000-0ff1-ce00-000000000000 -ServicePrincipalNames $x.ServicePrincipalNames
Virtual Directories und OAuth
Im nächsten Schritt müssen wir sicherstellen, dass all unsere Exchange Virtual Directories die OAuth Authentifizierung unterstützen. Dies erledigen wir mit den folgenden Befehlen.
Get-MapiVirtualDirectory | FL server,*url*,*auth* Get-WebServicesVirtualDirectory | FL server,*url*,*oauth* Get-OABVirtualDirectory | FL server,*url*,*oauth* Get-AutoDiscoverVirtualDirectory | FL server,*oauth* ### EXAMPLE: Get-MapiVirtualDirectory | fl server,*url*,*auth* Server : EX1 InternalUrl : https://exchange.schweigerstechblog.de/mapi ExternalUrl : https://exchange.schweigerstechblog.de/mapi IISAuthenticationMethods : {Ntlm, OAuth, Negotiate} InternalAuthenticationMethods : {Ntlm, OAuth, Negotiate} ExternalAuthenticationMethods : {Ntlm, OAuth, Negotiate}
Modern Authentication aktivieren
Nachdem wir in den Schritten zuvor sichergestellt haben, dass alle Einstellungen korrekt gesetzt sind, können wir nun Hybrid Modern Authentication aktivieren. Bitte behaltet im Hinterkopf, dass ab diesen Punkt alle kompatiblen Clients über den evoSTS Service ihren Token abholen. Somit verändert sich auch die Art und Weise, wie sich Nutzer am Client anmelden.
Get-AuthServer | where {$_.Name -like "EvoSts*"} | ft name,enabled Name Enabled ---- ------- EvoSts - 467a7284-2sa1-468c-a793-978ad2f9fc49 True ### Enable evoSTS and OAuth Set-AuthServer -Identity "EvoSts - 467a7284-2sa1-468c-a793-978ad2f9fc49" -IsDefaultAuthorizationEndpoint $true Set-OrganizationConfig -OAuth2ClientProfileEnabled $true
Modern Authentication überprüfen
Alle neuen Anmeldeversuche am Exchange werden nun über das evoSTS System geschleust. Somit greifen auch sofort alle zuvor gesetzten Conditional Access Rules. Clients, welche Modern Authentication nicht unterstützen werden sich allerdings weiterhin über NTLM oder Basic anmelden – somit hat man in diesem Sinne noch keine MFA erzwungen.
Zusammenfassung
Microsoft bietet eine relativ einfache Möglichkeit, die präferierte Exchange Online Authentifizierungsmethode „Modern Authentication“ auch in die On-Premises Umgebung zu übernehmen. Bevor nun aber all jene voller Euphorie auf MA umstellen, sollte man auch noch die Kehrseite näher beleuchten. Die da wären:
- Fällt die Azure Cloud aus oder wird die Verbindung zwischen Exchange und Azure AD unterbrochen, kann keine Authentifizierung stattfinden
- Clients, welche MA nicht unterstützen können sich nach wie vor mit den „alten“ Protokollen wie NTLM und Basic authentifizieren. Damit lässt man Angriffsvektoren weiterhin ungeschützt.
- Man serviert MA ausschließlich über MAPI, EWS und ActiveSync. Nutzer können sich weiterhin ohne MFA im OWA/ECP anmelden. Hier könnte der Azure AD Proxy Abhilfe schaffen aber dazu mehr in einem anderen Artikel.
- Man benötigt zusätzliche Office365 Lizenzen, damit man Conditional Access verwenden kann (siehe: What is Conditional Access in Azure Active Directory? | Microsoft Docs).
Ich möchte auch hier noch einmal darauf hinweisen, dass eine solche Umstellung vorab ausführlich geplant werden muss. Bestenfalls installiert ihr euch einen Test-Exchange und prüft ausgiebig alle Funktionen.
Schöne Übersicht, leider nur etwas getrübt durch die Falschschreibung von „on-premises“ (das „s“ fehlt überall). 😉
Absolut korrekt – vielen Dank für den Hinweis! 🙂