===== Monitoring der Logins =====
Dieser Artikel ist ein Community-Beitrag für Shibboleth IdP 3.x. Es ist unklar, ob er für Shibboleth IdP 4.x so noch gilt.
Standardmäßig werden innerhalb der ''idp-audit.log''-Dateien viele interessante Informationen mitgeloggt.
In der [[http://docs.cacti.net/usertemplate:graph:shibboleth:idp_audit_log|Cacti-Dokumentation]] erfahren Sie, wie Sie z.B. die Anzahl der Logins und weitere Parameter eines IdP 2.x auslesen und ins Monitoring aufnehmen können. Um das verwendete Analyse-Tool auch in höheren IdP-Versionen verwenden zu können, müssen Sie zwei kleine Anpassungen vornehmen:
- Anpassung des Log-Formates: Es fehlt ein abschließendes "|" am Ende der Zeile.
- Anpassung des eigentlichen Analyse-Tools: Ersetzen Sie den Filter für einen Profil-Typ:
if msgProfile.lower().endswith("/sso/browser"):
db['logins'] += 1
===== Alter der heruntergeladenen Metadaten =====
Die Föderationsmetadaten der DFN-AAI sind fünf Tage lang gültig. Wenn der Download über den Zeitraum von ein paar Tagen nicht funktioniert, können sie ungültig werden.
Hier finden Sie in sehr einfaches Skript, das das Alter der Dateien für Sie prüft. Es lässt sich via NRPE durch Nagios oder andere kompatible Monitoring-Systeme direkt auf dem Shibboleth-IdP ausführen und warnt wenn die heruntergeladenen Dateien nicht existieren oder deren Zeitstempel zu weit in der Vergangenheit liegt.
#!/bin/bash
RC=3
ERR="Unknown error."
WARN="86400" # 1 day
CRIT="259200" # 3 day
METAPATH="/opt/shibboleth-idp/metadata/"
METADATA=("DFN-AAI-Basic-metadata-backingFile.xml" "DFN-AAI-metadata-backingFile.xml")
CURTIME=$(date +%s)
MAX=0
for i in "${METADATA[@]}"
do
FILE="$METAPATH$i"
MODTIME=$(stat -c %Y "$FILE" 2>/dev/null)
if [ -z "$MODTIME" ]; then
echo "Metadata is missing!"
exit 2
else
DUR=$(( $CURTIME - $MODTIME ))
if [ $DUR -gt $MAX ]; then
MAX=$DUR
fi
fi
done
if [ $MAX -lt $WARN ]; then
RC=0
ERR="Metadata is up-to-date."
else
if [ $MAX -gt $CRIT ]; then
RC=2
else
RC=1
fi
ERR="Metadata is too old ($MAX sec(s))"
fi
echo "$ERR"
exit $RC
Gern kann dieses mit Parametern versehen werden, um dynamisch die zu prüfenden Metadaten-Dateien zu bestimmen oder die Schwellwerte für Warnungen anzupassen.
===== Automatischer Test-Login =====
Um zu wissen, ob der Login am Shibboleth-IdP aus Sicht der Nutzer*innen möglich ist, empfiehlt es sich, einen kompletten Login-Vorgang durchzuführen.
Dazu können Sie folgendes Python-Skript in Ihrem Monitoring-System verwenden. Es wird lokal auf dem IdP (z.B. via NRPE) ausgeführt.
Voraussetzungen:
* Der IdP muss [[https://wiki.shibboleth.net/confluence/display/IDP4/UnsolicitedSSOConfiguration|UnsolicitedSSO]] unterstützen.
* Das Python-Modul 'python-pyOpenSSL' muss installiert sein.
{{ :de:check_shiblogin_v3.txt?linkonly |}} (Nach dem Download einfach die Dateiendung auf '.py' ändern.)
Folgende Stellen müssen Sie für Ihre Infrastruktur anpassen:
* Test-Nutzer und -Passwort,
* der zum Login verwendete SP
sp_entityid = "https://my.own.sp/shibboleth"
sp_target_url = "https://my.own.sp/Shibboleth.sso/Session"
user = "myuser"
password = "mypassword"
Das Skript kann in drei verschiedenen Modi ausgeführt werden:
* NormalLoginMode, Standard, ohne Angabe zusätzlicher Parameter, endet nach der Attributfreigabe
* ShortLoginMode, endet nach der Eingabe der Zugangsdaten, auf der User-Consent-Seite vor der Attributfreigabe
* FullLoginMode, endet nach dem Besuch der Session-Seite am SP
usage: check_shiblogin_v3.py [-h] [-s | -f]
Script to check if shibboleth-login is working. Normal login attempt stops after attribute release.
optional arguments:
-h, --help show this help message and exit
-s, --short short login attempt, which stops after entering credentials at idp-side (stops on attribute-release-page)
-f, --full full login attempt, which stops after visiting session-page at sp-side
===== Gültigkeitsdauer der Zertifikate lokaler Metadaten prüfen =====
Bindet man an der DFN-AAI vorbei auf dem IdP weitere lokale Metadatensätze ein, so empfiehlt es sich, die Gültigkeitsdauer der darin verwendeten Zertifikate zu überwachen. Ein Shibboleth-IdP stellt keine Verbindung zu Systemen mit abgelaufenen Zertifikaten her.
Die folgenden drei PHP-Skripte müssen dazu auf dem IdP hinterlegt und z.B. via NRPE vom Monitoring-Dienst ausgeführt werden.
{{ :de:functions.txt?linkonly |}} (Nach dem Download einfach die Dateiendung auf '.php' ändern.)
{{ :de:metadataProviderManager.txt?linkonly |}} (Nach dem Download einfach die Dateiendung auf '.php' ändern.)
{{ :de:metadataCertificateValidator.txt?linkonly |}} (Nach dem Download einfach die Dateiendung auf '.php' ändern.)
Dieses Skript wird genutzt, um die Gültigkeit der Zertifikate zu prüfen, die in den Metadaten der Shibboleth Service Provider hinterlegt sind. Es wurde speziell auf die Version 3.2.1 des Shibboleth Identity Providers zurecht geschnitten. FIXME
Funktionsweise:
Zunächst wird versucht die Datei ''/opt/shibboleth-idp/conf/metadata-providers.xml'' zu parsen. Hierbei wird nach allen ''''-Blöcken gesucht.
Berücksichtigt werden dabei jedoch nur Einträge mit dem Attribut ''type="FilesystemMetadataProvider"''. Von den gefundenen Einträgen wird der Pfad zur Metadaten-Datei auf der Festplatte ausgelesen (''metadataFile="..."''). Im Anschluss werden die genannten Dateien der Reihe nach untersucht. Dabei werden die ''''-Blöcke auf die Gültigkeitsdauer hin geprüft. Unterschreitet sie einen bestimmten Zeitrahmen (z.B. 30 Tage), so wird die zugehörige entityID des SPs bemängelt.
Nachdem alle Dateien durchlaufen wurden, wird eine Zusammenfassung im Nagios-Format ausgegeben. Mit Hilfe dieser Ausgabe kann im Centreon ein Check eingerichtet werden, wodurch vor ablaufenden SPs gewarnt wird.
Die Ausgabe enthält die entityIDs der betroffenen SPs und kann wie folgt aussehen:
OK - OK (30/30)
WARNING - OK (25/30), WARN (5/30)
CRITICAL - OK (20/30), WARN (8/30), CRIT (2/30)
WARN - The certificates of the following SPs are running End-Of-Live:
https://bs.zih.tu-dresden.de/shibboleth
...
http://campussachsen.tu-dresden.de/shibboleth
CRIT - This are the SPs whome certificates are expired
https://selfservice.zih.tu-dresden.de
...
Der Aufruf des Skriptes kann wie folgt geschehen:
This script reads metadata of shibboleth service providers and checks the lifetime of their certificates.
Usage:
PHP metadataCertificateValidator.php
PHP metadataCertificateValidator.php [-h | --help]
PHP metadataCertificateValidator.php [-v | --verbose]
PHP metadataCertificateValidator.php [-p | --provider ]
PHP metadataCertificateValidator.php [-m | --metadata ]
PHP metadataCertificateValidator.php [-w | --warning ]
PHP metadataCertificateValidator.php [-c | --critical ]
-h, --help
shows this help
-v, --verbose
turn on verbose-mode
-p, --provider
path to config-file: metadata-providers.xml
-m, --metadata
directory of metadata-files
-w, --warning
days until expiration of certificate (default: 30)
-c, --critical
days until expiration of certificate (default: 7)
{{tag>archiv monitoring}}