Viele Dienste und Prozesse, die in einer Domäne laufen, dokumentieren im Hintergrund vollautomatisch ihre Aktivitäten. In den Logfiles sind unter anderem Informationen zu den Anmeldungen der Benutzer*innen am System, zur Installation und Deinstallation von Software, Zugriffe auf Webseiten, Fehlermeldungen und andere Hinweise enthalten. Auch Univention Corporate Server (UCS) erstellt solche Berichte – entweder hinter den Kulissen in Form von Logfiles oder mit dem UCS Admin Diary. Fertige Reports als CSV- oder PDF-Datei erhalten Sie außerdem über die Univention Management Console oder die Shell.
In diesem Artikel möchte ich Ihnen zeigen, wie Sie mit dem Univention Directory Logger revisionssichere Logfiles des LDAP-Verzeichnisdienstes erzeugen, mit dem Admin Diary einen Gesamtüberblick der Ereignisse in einer UCS-Domäne erhalten und wie Sie mit Univention Directory Reports Daten aus dem Verzeichnisdienst auswerten.
Univention Directory Logger: revisionssichere LDAP-Protokollierung
Der LDAP-Verzeichnisdienst protokolliert auf einem Standard-UCS-System u.a. in den beiden Dateien /var/log/univention/listener.log und /var/lib/univention-ldap/notify/transaction. Der Dienst notiert dann allerdings nur den dn (Distinguished Name) des Objekts sowie einen Zeitstempel im listener.log und macht nummerierte Angaben zur Art der Änderung (a wie „add“, m wie „modify“ und d wie „delete“) im Logfile transaction. Deutlich mehr Informationen, darunter geänderte Attribute oder Angaben darüber, wer die Änderungen vorgenommen hat, erhalten Admins, wenn sie den Univention Directory Logger installieren. Darüber hinaus werden die LDAP-Logfiles damit revisionssicher, das heißt, vor einer Revision (Abänderung) geschützt. Manipulationen an den Protokollen sind damit nicht mehr möglich.
Um den Directory Logger nachzurüsten, installieren Admins das Paket univention-directory-logger, was gleichzeitig den LDAP-Dienst neu startet und ein neues Logfile namens /var/log/univention/directory-logger.log erzeugt. Die einzelnen Datensätze dort erhalten nun Hash-Werte und wiederholen jeweils den Hash-Wert des vorhergehenden Datensatzes, sodass Manipulationen an der Datei sofort auffallen würden. Das folgende Listing zeigt einen Auszug des Logfiles /var/log/univention/directory-logger.log:
ID 454: START ID 454: Old Hash: 8d1ba93957e1cdbb88a6778079be42db ID 454: DN: cn=Printer-Admins,cn=groups,dc=test-installation,dc=intranet ID 454: ID: 454 ID 454: Modifier: uid=petronella,cn=self registered users,dc=test-installation,dc=intranet ID 454: Timestamp: 27.08.2020 09:30:10 ID 454: Action: modify ID 454: ID 454: Old values: ID 454: entryCSN: 20200826141005.172661Z#000000#000#000000 ID 454: modifyTimestamp: 20200826141005Z ID 454: modifiersName: cn=admin,dc=test-installation,dc=intranet ID 454: ID 454: New values: ID 454: entryCSN: 20200827093010.354523Z#000000#000#000000 ID 454: memberUid: egbert ID 454: modifyTimestamp: 20200827093010Z ID 454: modifiersName: uid=petronella,cn=self registered users,dc=test-installation,dc=intranet ID 454: uniqueMember: uid=egbert,cn=self registered users,dc=test-installation,dc=intranet ID 454: END [...]
Am Zeilenanfang sehen Sie jeweils die so genannte Transaktions-ID, die seit UCS 4.4-0 Erratum 536 standardmäßig mit in den directory-logger.log geschrieben wird. Dabei handelt es sich um eine fortlaufende Nummer, die zur besseren Orientierung dient. Wenn Sie den Univention Directory Logger vor dem Update installiert haben, können Sie das Feature nachträglich aktivieren, indem Sie die UCR-Variable ldap/logging/id-prefix auf yes setzen. Die Variablen erreichen Sie über System /Univention Configuration Registry; dort gibt es ein Suchfeld, über das Sie nach den Namen der Variablen suchen können.
Es besteht zudem die Möglichkeit für Admins, weitere Informationen zum Debugging im Logfile /var/log/syslog zu speichern. Dazu bearbeiten Sie die UCR-Variable ldap/debug/level entsprechend; weitere Informationen finden Sie in der Manpage zu spald.conf, wenn Sie dort nach loglevel suchen.
Nach dem Anpassen der UCR-Variable ist ein Neustart von sladp notwendig. Diesen führen Sie mit dem Befehl service slapd restart
aus. Um das Fehlerpotenzial zu minimieren, empfiehlt es sich, den Neustart des Dienstes außerhalb der Stoßzeiten des Systems auszuführen.
Achtung: Je nach Loglevel entstehen schnell extrem große Logfiles mit vielen Einträgen; daher sollten Sie diese Variable nur zum Debuggen verändern und danach wieder auf den ursprünglichen Wert none zurücksetzen.
Tipp: Manchmal ist es wünschenswert, einzelne Teilbereiche des Verzeichnisdienstes von der Protokollierung auszunehmen. Das kann aus datenschutzrechtlichen Gründen geschehen, wenn z. B. Änderungen an bestimmten Accounts nicht aufgezeichnet werden dürfen. Oder auch in speziellen Anwendungsfällen, wenn etwa fortlaufende häufige Anpassungen an Benutzern/Gruppen geplant sind, die nicht interessant bzw. relevant für die Funktionalität des Systems sind. Um einzelne Zweige aus den Protokollen auszuschließen, bearbeiten Sie die UCR-Variablen ldap/logging/exclude1,
/ldap/logging/exclude2 usw. In der Voreinstellung ist exclude1 so eingerichtet, dass Änderungen am Container mit temporären Objekten (cn=temporary,cn=univention) nicht protokolliert werden. Wenn Sie hier Änderungen vornehmen, starten Sie anschließend den Dienst über das Kommando systemctl restart univention-director-listener.service
neu.
Admin Diary: Überblick über alle administrativen Ereignisse
Das Admin Diary, das wir mit UCS 4.4 eingeführt haben, gibt Antworten auf viele Fragen. Es bietet einen schnellen Überblick über Ereignisse in einer UCS-Domäne, wie z. B. Software- und App-Installationen und -Updates, Anlegen, Ändern und Löschen von Benutzer*innen und anderen Verzeichnisdienst-Objekten, Passwortänderungen usw.
Das Admin Diary besteht aus zwei Apps: dem Admin Diary Backend und dem Admin Diary Frontend. Das Backend sammelt von allen UCS-Instanzen in der Domäne Daten ein und speichert diese in einer Datenbank. Das Frontend bietet über die Univention Management Console dann Zugriff auf das Protokoll und zeigt die Ereignisse an. In der Voreinstellung sind diese chronologisch sortiert; Sie können aber gezielt ein Datum auswählen und auch verschiedene Suchfilter anwenden.
Beachten Sie, dass bei der Installation der Admin Diary App zuerst das Backend auf einem System in der Domäne installiert sein muss, bevor Sie ein Frontend einrichten. Es ist auch möglich, mehrere Frontends auf verschiedenen UCS-Systemen zu installieren. Mehr zur Einrichtung und dem Betrieb von Backend und Frontend auf verschiedenen Rechnern sowie zu den allgemeinen Funktionen des Admin Diary finden Sie in dem Artikel: Tagebuch für Sysadmins: Admin Diary .
Univention Directory Reports: Berichte als CSV und PDF
Vordefinierte Berichte zu beliebigen, im Verzeichnisdienst verwalteten Objekten gibt es dank Univention Directory Reports. UCS-Admins erstellen solche Berichte im CSV- oder PDF-Format direkt über die Univention Management Console oder mit dem Kommandozeilentool univention-directory-reports
auf der Shell. Die Reports können als Bestandsaufnahme gelten (PDF) oder als Importquelle für andere Programme dienen (CSV), etwa um Benutzer mit bestimmten Attributen aufzulisten oder eine Liste von Accounts in eine externe Schulverwaltungs-Software einzulesen.
In der UMC finden Sie die Funktion entweder über Benutzer / Benutzer, Benutzer / Gruppen oder über Geräte / Rechner. In der Liste wählen Sie eines oder mehrere Objekte aus und öffnen dann das Menü MEHR. Dort wählen Sie den Eintrag Report erstellen und entscheiden sich dann für ein Ausgabeformat (CSV oder PDF).
Es gibt sechs verschiedene Vorlagen (drei für CSV-Dateien und drei für PDF-Dokumente), die das Layout und die Struktur der Berichte definieren. Die Templates für PDF-Reports liegen im RML-Format vor und verwenden Platzhalter, die jeweils durch die Werte aus dem LDAP-Verzeichnis ersetzt werden.
Es ist möglich, eigene Vorlagen einzurichten und so beispielsweise sehr detaillierte Reports oder auch nur einfache Adresslisten zu generieren. Wenn Sie CSV-Templates mit einem Texteditor wie vi bearbeiten, muss im Anschluss noch der Befehl perl -pi -e 'chomp if eof' <Name der Templatedatei>
ausgeführt werden, um durch den Editor automatisch erzeugte Zeichen wieder zu entfernen. Welches Template für den Bericht über Benutzer, Gruppen und Rechner jeweils verwendet wird, bestimmen die UCR-Variablen directory/reports/templates/csv/[…] und directory/reports/templates/pdf/[…]. Außerdem ist es möglich, das Logo aus der Kopfzeile der PDF-Reports zu ersetzen (Variable directory/reports/logo). Hier können Sie ein eigenes Bild in den Formaten JPG, PNG oder GIF definieren; es wird automatisch auf eine feste Breite von 5 cm skaliert.
In den Voreinstellungen ist definiert, dass die Reports zwölf Stunden lang aufbewahrt werden; danach werden sie durch einen Cron-Job gelöscht. Die Dauer können Sie konfigurieren, indem Sie die UCR-Variable directory/reports/cleanup/age anpassen und das maximale Alter der Berichte in Sekunden eintragen. Darüber hinaus können Sie bestimmen, wann der Cron-Job zum Aufräumen läuft (Variable directory/reports/cleanup/cron). Der Eintrag muss in Cron-Syntax erfolgen (man crontab).
Die Reports können Sie, wie erwähnt, auch auf der Shell erzeugen und nehmen dazu das Kommandozeilentool univention-directory-reports
zu Hilfe. Eine Manpage hat das Werkzeug nicht, aber mit dem Schalter --help
blenden Sie eine Übersicht aller verfügbaren Parameter und Optionen ein.
Gut informiert
Wie Sie sehen, gibt es viele Möglichkeiten, Berichte über die Systeme, Benutzer und Gruppen Ihrer UCS-Domäne anzulegen und Informationen herauszufiltern. Ob es nun um revisionssichere Protokolle des Verzeichnisdienstes, eine grafische Übersicht mit Notizfunktion oder vollautomatisch generierte Berichte und Bestandslisten geht: Univention Corporate Server hat die richtigen Werkzeuge an Bord.