PRTG Check ADFS
Die Funktion eines ADFS-Servers wird immer wichtiger, insbesondere wenn Office 365 Anmeldungen daran hängen. Daher sollten Sie zum einen die Erreichbarkeit ihres ADFS-Servers verifizieren aber auch die verwendeten Zertifikate sollten nicht unbemerkt ablaufen. Der ADFS-Server stellt dazu einige Links (Siehe ADFS Monitoring) bereit, die per Skript abgefragt werden können.
Die normale Überwachung eines WebServers, und nichts anderes ist ADFS erst einmal, kann mit Bordmitteln von PRTG erfolgen. Diese Seite beschreibt ein PowerShell-Script, welches Sie in PRTG als Custom Sensor einbinden können, welches aber auch das Signing-Zertifikat abruft und die Gültigkeit erfasst.
Auch wenn ADFS etwaige Probleme im Eventlog meldet und die "Anwender" auch einen guten Fühler für die Funktion hergeben, bevorzuge ich regelmäßige aktive Checks zusätzlich zu einer passiven Überwachung von Eventlog und Performance Counter. In dem Zuge ist ein Script entstanden, welches ich nach und nach ausbaue. Es verbindet sich per HTTPS mit dem ADFS-Server, fragt relevante URLs ab und gibt die Ergebnisse entsprechend aus. Da ich als Überwachungsprogramm gerne mit PRTG arbeite, ist der Sensor als PRTG:Custom Sensor ausgeführt, der die Ergebnisse unter PRTG als XML-Datei ausgibt.
Einbindung
Die aktuelle Version verbindet sich direkt per HTTPS mit dem angegeben ADFS-Namen und prüft sowohl das Alter des HTTPS-Zertifikats als auch das Alter des Signing Zertifikats
Sie können das Skript auf jedem PC mit einer Powershell aufrufen lassen. Bedenken Sie aber, dass Sie natürlich ihren ADFS-Server als Parameter mit angeben müssen. Das Beispiel "adfs.msxfaq.de" funktioniert nicht. Wie Sie das Skript in PRTG als PRTG:Custom Sensor einbinden, ist auf den PRTG-Seiten beschrieben. Achten Sie vielleicht darauf, dass Sie das Skript z.B. nach check-adfs.ps1 umbenennen, damit sie später eine aktuelle Version einfach ersetzen können. Zudem ist es sicher ausreichend, wenn Sie den Sensor nur einmal in 24h starten und nicht alle 60 Sekunden, solange er eh nur das Alter der beiden Zertifikate ermittelt.
Beispielausgabe
Hier das Ergebnis meiner Installation:
In dem LiveGraph und den anderen Grafiken ist natürlich erst dann die Abnahme der Restlaufzeit zu sehen, wenn der Sensor einige Wochen Daten ermittelt hat. Wenn später z.B. auch eine Anmeldung erfolgen kann, macht eine häufigere Messung wieder mehr Sinn.
Weitere Links
- ADFS Monitoring
- PRTG:Custom Sensor
- Get-TCPCert
- How can I figure out if my ADFS 2.0
works?
http://blog.codeinside.eu/2013/04/29/how-can-i-figure-out-if-my-adfs-2-0-works/
http://www.dagint.com/how-to-test-if-adfs-is-functioning/ - Powershell:Reading a Certificate off a
remote SSL Server für Troubleshooting with
Powershell!
http://blogs.technet.com/b/parallel_universe_-_ms_tech_blog/archive/2014/06/26/reading-a-certificate-off-a-remote-ssl-server-for-troubleshooting-with-powershell.aspx - X509Certificate2 Constructor (Ab NET
2.0)
https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.x509certificate2(v=vs.110).aspx - Adding a Certificate to a Store Using
PowerShell
https://mcpmag.com/Articles/2014/11/18/Certificate-to-a-Store-Using-PowerShell.aspx?Page=2 - Eight tips für working with X.509
certificates in .NET
http://paulstovell.com/blog/x509certificate2
Tip 5: Don't load direct from a byte array
- X509Certificate2-Konstruktor (Byte[])
https://msdn.microsoft.com/de-de/library/ms148413(v=vs.110).aspx - X509Certificate2 Constructor
https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.x509certificate2(v=vs.110).aspx - Convert-Klasse
https://msdn.microsoft.com/de-de/library/system.convert(v=vs.110).aspx - Powershell:Reading a Certificate off a
remote SSL Server für Troubleshooting with
Powershell!
http://blogs.technet.com/b/parallel_universe_-_ms_tech_blog/archive/2014/06/26/reading-a-certificate-off-a-remote-ssl-server-for-troubleshooting-with-powershell.aspx - Using Federation Metadata to establish a
Relying Party Trust in AD FS 2.0
http://blogs.msdn.com/b/card/archive/2010/06/25/using-federation-metadata-to-establish-a-relying-party-trust-in-ad-fs-2-0.aspx - Invoke-RestMethod
http://technet.microsoft.com/en-us/library/hh849971(v=wps.620).aspx - 509Certificate2 Constructor
https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.x509certificate2(v=vs.110).aspx - Path.GetTempFileName-Methode ()
https://msdn.microsoft.com/de-de/library/system.io.path.gettempfilename(v=vs.110).aspx - PowerTip: Use PowerShell to Create
Temporary File Name
http://blogs.technet.com/b/heyscriptingguy/archive/2014/08/01/powertip-use-powershell-to-create-temporary-file-name.aspx - Reading a Certificate off a remote SSL
Server für Troubleshooting with Powershell!
http://blogs.technet.com/b/parallel_universe_-_ms_tech_blog/archive/2014/06/26/reading-a-certificate-off-a-remote-ssl-server-for-troubleshooting-with-powershell.aspx - Checking SSL and TLS Versions With
PowerShell
http://blog.whatsupduck.net/2014/10/checking-ssl-and-tls-versions-with-powershell.html - Test web server SSL/TLS protocol support
with PowerShell
https://www.sysadmins.lv/blog-en/test-web-server-ssltls-protocol-support-with-powershell.aspx