Dies ist eine alte Version des Dokuments!


Standardmäßig werden innerhalb der audit log files viele interessante Informationen mitgeloggt.
Wie Sie z.B. die Anzahl an Logins und weiterer Parameter ihres IdP 2.x auslesen und ins Monitoring aufnehmen können entnehmen Sie folgender Seite.

idp audit log

Um das verwendete Analyse-Tool auch für den neuen IdP 3.x verwenden zu können müssen Sie jedoch zwei kleine Anpassungen vornehmen.

Zum einen müssen Sie das Log-Format anpassen. Hier fehlt ein abschließendes „|“ am Ende der Zeile.

conf/audit.xml
<!-- ... -->
 
    <util:map id="shibboleth.AuditFormattingMap">
        <entry key="Shibboleth-Audit" value="%T|%b|%I|%SP|%P|%IDP|%bb|%III|%u|%ac|%attr|%n|%i|" />
    </util:map>
 
<!-- ... -->

Der zweite Punkt wäre die Anpassung des eigentlichen Analyse-Tools. Hier ersetzen wir den Filter für einen Profil-Typ.

bin/analyseLog.py
<!-- ... -->
 
    if msgProfile.lower().endswith("/sso/browser"):
        db['logins'] += 1
 
<!-- ... -->

Hat man ein Monitoring-System, so entsteht schnell der Wunsch die wichtigsten Informationen des Shibboleth IdP zu überwachen.
Um nicht Gefahr zu laufen, dass aus dem Web heruntergeladene Metadaten veralten und ungültig werden, so finden Sie hier ein wirklich sehr simples Shell-Skript was dies für Sie prüft.

Dieses Skript lässt sich z.B. 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.

check_metadata_time.txt (Nach dem Download einfach die Dateiendung auf '.sh' ändern.)

Wie bereits erwähnt handelt es sich hierbei um ein sehr einfaches Skript, welches eher als Anreiz für eigene Überlegungen dienen soll.
Gern kann dieses mit Parametern versehen werden, um dynamisch die zu prüfenden Metadaten-Dateien zu bestimmen oder die Schwellwerte für Warnungen anzupassen.

Um eine aussagefähige Antwort geben zu können, ob der Login am Shibboleth IdP möglich ist empfiehlt es sich nicht nur einzelne Bestandteile des IdP zu betrachten, sondern im Idealfall einen kompletten Login-Vorgang durch zu führen.
Erst dann kann man aus Sicht des Nutzers sagen ob der Dienst wie gewünscht funktioniert.

Dazu finden Sie folgendes in Python geschriebene Skript, welches sich anbietet in das eigene Monitoring-System aufgenommen zu werden. Dabei wird das Skript lokal auf dem IdP (z.B. via NRPE) ausgeführt.

check_shiblogin_v3.txt (Nach dem Download einfach die Dateiendung auf '.py' ändern.)

Damit das Skript mit der eigenen Infrastruktur funktioniert müssten ein paar kleinere Anpassungen vorgenommen werden.
Der Test-Nutzer samt Passwort, sowie der zum Login benötigte SP sollten zunächst im Skript benannt werden. Gern kann dies auch durch weitere Parameter beim Aufruf des Skriptes übergeben werden.

check_shiblogin_v3.py
<!-- ... -->
 
    sp_entityid = "https://my.own.sp/shibboleth"
    sp_target_url = "https://my.own.sp/Shibboleth.sso/Session"
    user = "myuser"
    password = "mypassword"
 
<!-- ... -->

Des weiteren ist es nötig, dass der IdP UnsolicitedSSO unterstützt.

Und zu guter Letzt muss eventuell neben Python noch ein zusätzliches Modul Namens 'python-pyOpenSSL' für OpenSSL installiert werden.

Im Anschluss kann das Skript in 3 verschiedenen Modi ausgeführt werden.
Defaultmäßig, ohne Angabe zusätzlicher Parameter, arbeitet dieses im NormalLoginMode. Daneben existieren der ShortLoginMode und der FullLoginMode.

    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

Bindet man (außerhalb der DFN-AAI Metadatenverwaltung) lokale Metadaten ein, so empfiehlt es sich die Gültigkeitsdauer der darin verwendeten Zertifikate im Auge zu behalten.
Denn ist dieses einmal abgelaufen stellt der Shibboleth IdP die Verbindung zu diesen SPs ein.

Kommt noch erschwerend hinzu, dass es sich dabei eventuell nicht um PKI-Zertifikate handelt oder aus anderen Gründen vom Zertifikatsaussteller keine Benachrichtigungen verschickt werden oder diese an die falschen Adressen zugestellt werden, so empfiehlt sich hier eine automatische Überwachung.

Die folgenden 3 PHP-Skripte müssen dazu auf dem IdP hinterlegt und z.B. via NRPE vom Monitoring-Dienst ausgeführt werden.

functions.txt (Nach dem Download einfach die Dateiendung auf '.php' ändern.) metadataprovidermanager.txt (Nach dem Download einfach die Dateiendung auf '.php' ändern.) metadatacertificatevalidator.txt (Nach dem Download einfach die Dateiendung auf '.php' ändern.)

Dieses Skript wird genutzt um die Gültigkeit der Zertifikate zu prüfen, welche in den Metadaten der Shibboleth Service Provider hinterlegt sind.
Es wurde speziell auf die Version 3.2.1 des Shibboleth Identity Providers zurecht geschnitten.

Zunächst wird versucht die Datei /opt/shibboleth-idp/conf/metadata-providers.xml zu parsen.
Hierbei wird nach allen <MetadataProvider>-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.

Es werden hierbei die <ds:X509Certificate>-Blöcke betrachtet und geprüft, ob das Zertifikat noch gültig ist.
Unterschreitet dessen Gültigkeitsdauer einen bestimmten Zeitrahmen (z.B 30 Tage) so wird die zugehörige entityID des SPs bemängelt.

Nachdem alle Dateien durchlaufen wurden, so wird zum Schluss 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 <file> | --provider <file>]
PHP metadataCertificateValidator.php [-m <directory> | --metadata <directory>]
PHP metadataCertificateValidator.php [-w <days> | --warning <days>]
PHP metadataCertificateValidator.php [-c <days> | --critical <days>]

-h, --help
		shows this help
-v, --verbose
		turn on verbose-mode
-p, --provider <file>
		path to config-file: metadata-providers.xml
-m, --metadata <directory>
		directory of metadata-files
-w, --warning <days>
		days until expiration of certificate (default: 30)
-c, --critical <days>
		days until expiration of certificate (default: 7)
  • Zuletzt geändert: vor 8 Jahren