Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:shibidp3monitoring [2020/04/16 09:04] Silke Meyerde:shibidp:config-monitoring [2021/05/03 14:58] (aktuell) – ↷ Seite von de:shibidp3monitoring nach de:shibidp:config-monitoring verschoben und umbenannt Silke Meyer
Zeile 1: Zeile 1:
-===== Monitoring der Logins auf Seiten des IdP mit Hilfe der audit log files =====+===== Monitoring der Logins ===== 
 +<callout color="#ff9900" title="Archiv"> 
 +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. 
 +</callout> 
 +Standardmäßig werden innerhalb der ''idp-audit.log''-Dateien viele interessante Informationen mitgeloggt.
  
-Standardmäßig werden innerhalb der audit log files 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önnenmüssen Sie zwei kleine Anpassungen vornehmen: 
-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. +  - Anpassung des Log-Formates: Es fehlt ein abschließendes "|" am Ende der Zeile. <file xml conf/audit.xml>
- +
-[[http://docs.cacti.net/usertemplate:graph:shibboleth:idp_audit_log|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. +
- +
-<file xml conf/audit.xml>+
 <!-- ... --> <!-- ... -->
  
Zeile 19: Zeile 15:
 <!-- ... --> <!-- ... -->
 </file> </file>
- +  - Anpassung des eigentlichen Analyse-Tools: Ersetzen Sie den Filter für einen Profil-Typ<file python bin/analyseLog.py>
-Der zweite Punkt wäre die Anpassung des eigentlichen Analyse-Tools. Hier ersetzen wir den Filter für einen Profil-Typ+
- +
-<file python bin/analyseLog.py>+
 <!-- ... --> <!-- ... -->
  
Zeile 31: Zeile 24:
 </file> </file>
  
-===== Prüfen des Alters von aus dem Web heruntergeladenen Metadaten =====+===== Alter der heruntergeladenen Metadaten =====
  
-Hat man ein Monitoring-System, so entsteht schnell der Wunsch die wichtigsten Informationen des Shibboleth IdP zu überwachen.\\ +Die Föderationsmetadaten der DFN-AAI sind fünf Tage lang gültigWenn der Download über den Zeitraum von ein paar Tagen nicht funktioniertkönnen sie ungültig werden
-Um nicht Gefahr zu laufendass 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.+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.
  
-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.+<file bash check_metadata_time.sh> 
 +#!/bin/bash
  
-{{ :de:check_metadata_time.txt?linkonly |}} (Nach dem Download einfach die Dateiendung auf '.sh' ändern.)+RC=3 
 +ERR="Unknown error."
  
-Wie bereits erwähnt handelt es sich hierbei um ein sehr einfaches Skript, welches eher als Anreiz für eigene Überlegungen dienen soll.\\ +WARN="86400" # 1 day 
-Gern kann dieses mit Parametern versehen werden, um dynamisch die zu prüfenden Metadaten-Dateien zu bestimmen oder die Schwellwerte für Warnungen anzupassen.+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
  
-===== Prüfen ob der Login-Vorgang aus Sicht des Nutzers möglich ist (automatischer Test-Login) =====+echo "$ERR" 
 +exit $RC 
 +</file> 
 + 
 +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.\\ +===== Automatischer Test-Login =====
-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. +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. 
-Dabei wird das Skript lokal auf dem IdP (z.B. via NRPE) ausgeführt.+Dazu können Sie folgendes Python-Skript in Ihrem Monitoring-System verwendenEs 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.) {{ :de:check_shiblogin_v3.txt?linkonly |}} (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.\\ +Folgende Stellen müssen Sie für Ihre Infrastruktur anpassen: 
-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.+  Test-Nutzer und -Passwort, 
 +  * der zum Login verwendete SP
  
 <file python check_shiblogin_v3.py> <file python check_shiblogin_v3.py>
Zeile 67: Zeile 102:
 </file> </file>
  
-Des weiteren ist es nötig, dass der IdP [[https://wiki.shibboleth.net/confluence/display/IDP30/UnsolicitedSSOConfiguration|UnsolicitedSSO]] unterstützt. +Das Skript kann in drei verschiedenen Modi ausgeführt werden: 
- +  * NormalLoginMode, Standard, ohne Angabe zusätzlicher Parameter, endet nach der Attributfreigabe 
-Und zu guter Letzt muss eventuell neben Python noch ein zusätzliches Modul Namens 'python-pyOpenSSL' für OpenSSL installiert werden. +  * 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
-Im Anschluss kann das Skript in verschiedenen Modi ausgeführt werden.\\ +
-Defaultmäßig, ohne Angabe zusätzlicher Parameter, arbeitet dieses im NormalLoginMode. Daneben existieren der ShortLoginMode und der FullLoginMode.+
  
 <code> <code>
Zeile 87: Zeile 120:
 ===== Gültigkeitsdauer der Zertifikate lokaler Metadaten prüfen ===== ===== Gültigkeitsdauer der Zertifikate lokaler Metadaten prüfen =====
  
-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.\\ +Bindet man an der DFN-AAI vorbei auf dem IdP weitere lokale Metadatensätze ein, so empfiehlt es sichdie Gültigkeitsdauer der darin verwendeten Zertifikate zu überwachenEin Shibboleth-IdP stellt keine Verbindung zu Systemen mit abgelaufenen Zertifikaten her.
-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 drei PHP-Skripte müssen dazu auf dem IdP hinterlegt und z.B. via NRPE vom Monitoring-Dienst ausgeführt werden.
- +
-Die folgenden 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:functions.txt?linkonly |}} (Nach dem Download einfach die Dateiendung auf '.php' ändern.)
Zeile 98: Zeile 128:
 {{ :de:metadataCertificateValidator.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, welche in den Metadaten der Shibboleth Service Provider hinterlegt sind.\\ +Dieses Skript wird genutztum 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 
-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="...").\\ +Funktionsweise: 
-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.\\ +Zunächst wird versucht die Datei ''/opt/shibboleth-idp/conf/metadata-providers.xml'' zu parsen. Hierbei wird nach allen ''<MetadataProvider>''-Blöcken gesucht.  
-Unterschreitet dessen Gültigkeitsdauer einen bestimmten Zeitrahmen (z.B 30 Tage) so wird die zugehörige entityID des SPs bemängelt.+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 ''<ds:X509Certificate>''-Blöcke auf die Gültigkeitsdauer hin geprüft. Unterschreitet sie einen bestimmten Zeitrahmen (z.B30 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.\\ +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.
-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:\\+Die Ausgabe enthält die entityIDs der betroffenen SPs und kann wie folgt aussehen:
  
 <code> <code>
Zeile 157: Zeile 180:
 </code> </code>
  
-{{tag>idp3}}+{{tag>archiv monitoring}}
  • Zuletzt geändert: vor 4 Jahren