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:

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.

You may also like...

Abonnieren
Benachrichtige mich bei
guest
2 Comments
Älteste
Neuste Meist bewertet
Inline Feedbacks
View all comments
J. E. Klasek
J. E. Klasek
1 Jahr zuvor

Schöne Übersicht, leider nur etwas getrübt durch die Falschschreibung von „on-premises“ (das „s“ fehlt überall). 😉

2
0
Hinterlass' doch deine Meinung zu diesem Artikelx