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.
Beachte dazu auch die Seite PRTG Check ADFS
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 |
|
|
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 |
|
503 Fehler |
WSWSDL-Beschreibung des WebService als XML-Datei |
https://<fqdn des ADFS_Servers>/adfs/services/trust/mex |
|
|
WSDL-Beschreibung des WebService als XML-Datei. |
https://<fqdn des ADFS_Servers>/federationmetadata/2007-06/federationmetadata.xml |
|
|
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.
- PRTG Check ADFS
- Verify That a Federation Server Is
Operational
https://technet.microsoft.com/en-us/library/dd807076.aspx - How to Enable IdpInitiatedSignon Page In
AD FS 2016
https://blogs.technet.microsoft.com/rmilne/2017/06/20/how-to-enable-idpinitiatedsignon-page-in-ad-fs-2016/
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
- Get-AdfsFarmInformation
https://docs.microsoft.com/en-us/powershell/module/adfs/get-adfssyncproperties?view=win10-ps
Liefert Informationen über die Farm, Insbesondere die Mitglieder und die Farmbetriebsart - Get-AdfsSyncProperties
https://docs.microsoft.com/en-us/powershell/module/adfs/get-adfssyncproperties?view=win10-ps
Liefert auf dem primären Server nur die Information, dass er primär ist. Auf dem sekundären Server sehen Sie aber den Status der Synchronisation
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.
- Kemp RESTfulAPI
https://support.kemptechnologies.com/hc/en-us/articles/203863435-RESTful-API - StatisticAPI
https://support.kemptechnologies.com/hc/en-us/articles/203863435-RESTful-API#MadCap_TOC_43_2 - Monitoring a KEMP LoadMaster Using PRTG:
A Detailed How To Guide
https://blog.paessler.com/monitoring-a-kemp-loadmaster-using-prtg-a-detailed-ho-to-guide
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.
- Azure AD Connect Health
https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect-health/ - Azure AD Connect Health Agent
Installation
https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect-health/ - Azure AD Connect Health Operations
https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect-health-operations/ - Using Azure AD Connect Health for sync
https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect-health-sync/ - Using Azure AD Connect Health with AD DS
https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect-health-adds/ - Using Azure AD Connect Health with AD FS
https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect-health-adfs/ - Azure AD Connect Health FAQ
https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect-health-faq/ - Azure AD Connect Health Version History
https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect-health-version-history/
Check-ADFS -Powershell (PRTG)
Bitte beachten Sie die Seite PRTG Check ADFS für eine Überwachung von ADFS mit PRTG
Weitere Links
- PRTG Check ADFS
- ADFS Zertifikat aktualisieren
- PRTG
- PRTG:Custom Sensor
- Monitor ADFS
http://kb.paessler.com/en/topic/55603-monitor-adfs - Tools for parsing AD FS logs (admin
events, audits, and debug logs)
https://GitHub.com/Microsoft/adfsLogTools