ADFS Monitoring

Ein ADFS-Server und ggfls. eine Veröffentlichung per Reverse Proxy oder ADFS-Proxy ist gefühlt in weniger als einem Tag installiert. Sehr schnell werden dann Dienste wie Office 365, Yammer aber auch SharePoint, CRM, Partnerdienste etc. damit verbunden und es hat sich keiner wirklich Gedanken über den langfristigen Betrieb gemacht. Der Verlust der ADFS-Funktion bedeutet, dass die Clients keine Tickets mehr bekommen und damit sich nicht mehr an verbundenen Diensten anmelden können. In Verbindung mit Office 365 heißt das kein Outlook, kein Postfach, kein SharePoint und eventuell sogar kein Telefon mehr, wenn Sie Skype für Business Online mit Telefonie nutzen.

Über Loadbalancer und mehrere ADFS-Server kann die Last verteilt und ein Ausfall oder die Wartung eines Servers überbrückt werden. Aber erst eine Überwachung stellt sicher, dass Sie einen Ausfall sofort bemerken und mit den passenden Prüfpunkten können Sie sogar zukünftige Probleme vorhersehen. Dazu gehört z.B. der Ablauf von Zertifikaten. Diese Seite fasst meine bisherigen Checks und deren Aussagekraft zusammen.

Basis-URLS und Eventlog

Ein ADFS-Service stellt einige Grundfunktionen bereit, die erst mal direkt per HTTPS abgerufen werden. Hier einige URLs, die eigentlich immer funktionieren sollten:

Url Intern ADFSProxy Beschreibung

https://<fqdn des ADFS_Servers>/adfs/ls/IdpInitiatedSignon.aspx

Anonym

Anoym

Startet die formularbasierte Anmeldung. Achtung: Bei Windows 2016 ist diese URL per Default nicht mehr erreichbar und kann wie folgt aktiviert werden

Set-AdfsProperties `
   -EnableIdpInitiatedSignonPage $True

https://<fqdn des ADFS_Servers>/adfs/fs/federationserverservice.asmx

Anonym

503 Fehler

WSWSDL-Beschreibung des WebService als XML-Datei

https://<fqdn des ADFS_Servers>/adfs/services/trust/mex

Anonym

Anonym

WSDL-Beschreibung des WebService als XML-Datei.

https://<fqdn des ADFS_Servers>/federationmetadata/2007-06/federationmetadata.xml

Anonym

Anonym

XML-Datei mit den Signing-Zertifikaten

Auch im Eventlog des ADFSService/Admin sollten Sie einen Event 100 finden, der die erfolgreiche Kommunikation anzeigt.

Wichtiger Hinweis
Die ADFS-Dienste beachten den HostHeader. Wenn ihr ADFS-Server also z.B. unter https://adfs.msxfaq.de erreichbar wäre aber in Realität DEADFS.msxfaq.local heißt, dann sollten Sie keine Antwort mit dem FQDN des Servers erwarten. Sie müssen ihrer Monitoring-Lösung schon beibringen, dass ein HostHeader zu setzen ist.

federationmetadata.xml

Eine besondere Bedeutung kommt der federationmetadata.xml zu. Auf der Seite ADFS Zertifikat aktualisieren habe ich beschrieben, dass dass ADFS-Signing-Zertifikat immer mal wieder zu erneuern ist. Damit ist nicht das Zertifikate gemeint, welches für die Verschlüsselung der HTTPS-Kommunikation gedacht ist. Dieses Zertifikat können gängige Monitoring-Lösungen sehr einfach über einen HTTPS-Connect abrufen und die Restlaufzeit ermitteln. Aber das ADFS-Signing Zertifikat wird für die ADFS-Tokens verwendet und dessen Laufzeit sollte sehr wohl überwacht werden. Wenn es nämlich abläuft, dann können keine Tokens mehr ausgestellt werden und alle Anmeldungen der Anwender an darauf aufbauenden Diensten, z.B. Office 365 funktionieren auf einmal nicht mehr.

Daher ist es aus meiner Sicht wichtig, die URL "https://<fqdn des ADFS_Servers>/federationmetadata/2007-06/federationmetadata.xml" regelmäßig abzurufen und das darin hinterlegt Zertifikat zu prüfen. Sie sieht z.B. eine Antwort aus:

Der rot markierte Teil ist ein BASe64 codiertes Zertifikat. Sie können diesen Text einfach in "Notepad" übertragen und als CER-Datei speichern. Wenn Sie diese Datei dann mit einem Doppelklick öffnen, zeigt ihnen Windows das ADFS Signing Zertifikat an

Tokens des ADFS-Servers werden mit dem privaten Schlüssel dieses Zertifikats signiert. Stören Sie sich nicht daran, dass es ein "Self Signed" Zertifikat ist. Dies ist "normal", denn diese Zertifikat wird auf den Diensten eingetragen, die Tokens des ADFS-Servers vertrauen. Alternativ können sich diese Dienste das Zertifikat auch selbst über eben diese URL https://<fqdn des ADFS_Servers>/federationmetadata/2007-06/federationmetadata.xml holen.

ADFS PowerShell

Das Zertifikat liegt natürlich auch im Windows Zertifikatsspeicher des ADFS-Servers. Allerdings sehen Sie hier am Beispiel von Net at Work, dass nicht alle Zertifikats aus der ADFS-Verwaltung auch im Windows Zertifikatsspeicher liegen:

Insofern kann auch ein Überwachungstool, welches von Hause aus einfach alle Zertifikate auf einem Server überwacht, dieses Zertifikat nicht finden. Welches der vielen Zertifikate der ADFS-Service aber aktuell nutzt, lässt sich am besten über die ADFS-Powershell ermitteln.

PS C:\> Get-AdfsCertificate

Certificate     : [Subject]
                    CN=*.netatwork.de, OU=Domain Control Validated
                  [Issuer]
                    CN=AlphaSSL CA - SHA256 - G2, O=GlobalSign nv-sa, C=BE
                  [Serial Number]
                    1121250ADA10F0BE638D7E37AF8C053E1A4D
                  [Not Before]
                    4/20/2015 11:31:29 PM
                  [Not After]
                    7/2/2018 3:19:07 PM
                  [Thumbprint]
                    3F65896B1E2102515FC7942BD1FC6D9F3603C04A

CertificateType : Service-Communications
IsPrimary       : True
StoreLocation   : LocalMachine
StoreName       : My
Thumbprint      : 3F65896B1E2102515FC7942BD1FC6D9F3603C04A

Certificate     : [Subject]
                    CN=ADFS Encryption - adfs.netatwork.de
                  [Issuer]
                    CN=ADFS Encryption - adfs.netatwork.de
                  [Serial Number]
                    74BE661C3C0EA4B545B8A3EF612A4320
                  [Not Before]
                    1/14/2015 1:38:57 PM
                  [Not After]
                    1/14/2016 1:38:57 PM
                  [Thumbprint]
                    CA66DB34010191003336F4121C6FE63A4800826A

CertificateType : Token-Decrypting
IsPrimary       : True
StoreLocation   : CurrentUser
StoreName       : My
Thumbprint      : CA66DB34010191003336F4121C6FE63A4800826A

Certificate     : [Subject]
                    CN=ADFS Signing - adfs.netatwork.de
                  [Issuer]
                    CN=ADFS Signing - adfs.netatwork.de
                  [Serial Number]
                    6E1AA335412ECB904B2CDA73AD9AF60E
                  [Not Before]
                    1/14/2015 1:38:57 PM
                  [Not After]
                    1/14/2016 1:38:57 PM
                  [Thumbprint]
                    DA34989B3800A3DAEEA634E600FB063EDD938BB0

CertificateType : Token-Signing
IsPrimary       : True
StoreLocation   : CurrentUser
StoreName       : My
Thumbprint      : DA34989B3800A3DAEEA634E600FB063EDD938BB0

Allerdings kann dieser Befehl nur als lokale Administrator in einer Powershell mit dem passenden SnapIn auf dem ADFS-Server erfolgen. Das macht eine automatische Überwachung nicht einfacher.

Farm Status

Wer mehrere ADFS-Server in einer Hochverfügbarkeitsfarm betreibt, sollte jeden einzelnen Server und natürlich die Replikation überwachen Auch das geht per PowerShell

Beim zweiten Commandlet kann es schon interessant sein, den Zeitstempel der letzten Synchronisation mit der aktuellen Zeit und dem konfigurierten Intervall zu vergleichen. Per PowerShell geht das sehr einfach:

$AdfsSyncProperties = Get-AdfsSyncProperties
If ($AdfsSyncProperties.LastSyncTime -lt (get-date).addseconds(- $AdfsSyncProperties.PollDration)) {
   "ERROR"
}
else {
   "OK"
}

Dieses Skript können Sie durch die Monitoring-Lösung ihrer Wahl regelmäßig starten lassen und die Ergebnisse entsprechend passend an die Überwachung liefern.

Wer eine Farm einsetzt, hat in der Regel auch einen Loadbalancer zum Verteilen der Zugriffe. Diese Komponenten können natürlich auch die Erreichbarkeit der "Real-Server" überwachen und melden oder abgefragt werden.

Azure AD Connect Health

Microsoft betreibt natürlich selbst auch ADFS-Services und überwacht diese auch. Mit der gleichen Infrastruktur können Sie aber auch ihren eigenen ADFS-Service mit überwachen lassen. Mit ADConnect wird ein Health Agent installiert, mit dem Microsoft die lokalen Services überwacht und die Daten direkt in die Cloud übermittelt. Sie können dann als Administrator am Azure-Portal diese Daten auswerten.

Per Default ist die "Benachrichtigung" abgeschaltet. Sie sollten hier zumindest die globalen Administratoren aktivieren. Sie können aber gerne auch andere Mailadressen hinterlegen.

Check-ADFS -Powershell (PRTG)

Weitere Links