Aus Linux-Magazin 06/2013

Aus dem Alltag eines Sysadmin: Snoopy

© Nailia Schwarz, 123RF.com

Manchmal möchte Kolumnist Charly wissen, was er wann auf einem Server Geniales getan hat. Eine unfehlbare Gedächtnisstütze zu finden? Peanuts!

Bei der Arbeit plagen mich manchmal Erinnerungslücken: Wie hieß das schicke Tool, mit dem ich die LEDs an einer bestimmten Netzwerkkarte habe blinken lassen, um sie im Serverschrank finden zu können? Oder: Wie hatte ich damals alle Dateien in einem Verzeichnis, die älter als sieben Tage waren, gelöscht? Die Antwort auf all diese Fragen kennt die Bash-History, aber die ist gemäß Murphys Gesetz immer zu kurz. Außerdem quält die Unsicherheit: Auf welchem Server hat das Ganze stattgefunden?

Eine mögliche Lösung ist Snoopy. Die kleine Bibliothek mit dem Hundenamen wickelt sich als Wrapper um »execve()« und wacht immer dann auf, wenn der Rechner ein Kommando ausführt. Viele Distributionen haben Snoopy im Zwinger, ansonsten hilft Github unter [1] weiter. Damit Snoopy gleich beim Systemstart aktiv wird, ist ein Eintrag in »/etc/ld.so.preload« notwendig. Hier füge ich die folgende Zeile hinzu: »/Pfad/snoopy.so« . Pfad ist in der Regel »lib« . Wenn ich Snoopy selbst kompiliere, liegt die Bibliothek auch gern unter »/usr/local/lib/« oder ähnlich.

Snoopy selbst zu kompilieren besitzt einen Vorteil: Ich kann vorher in den Quellen die Headerdatei »snoopy.h« editieren. Setze ich dort

#define ROOT_ONLY 1

wird Snoopy nur Kommandos loggen, die mit Rootrechten ablaufen. Installiere ich das Tool dagegen aus den Distributionsrepositories, ist diese Option nicht gesetzt und es loggt alle Kommandos aller Privilegien-Coleur.

Snoopy schreibt, wenn ich es nicht anders konfiguriere, in »/var/log/auth.log« . Abbildung 1 zeigt das Log einiger einfacher Kommandos. Die Gliederung bleibt stets gleich: Jeder Eintrag beginnt mit der Benutzer-ID, gefolgt von der Sitzungs-ID und dem verwendeten TTY. Danach kommt das jeweils aktuelle Verzeichnis. Das ist wichtig, weil Snoopy Kommandos wie »cd /etc« nicht protokolliert. Im Dateisystem zu navigieren ist für den Beagle also nicht das Gleiche wie eine Datei auszuführen.

Danach kommt der vollständige Pfad zu der ausgeführten Datei und zuletzt das expandierte Kommando. Eine Expansion können zum Beispiel Aliases hervorrufen. Viele Distributionen führen beispielsweise »ls –color=auto« aus, wenn ich lediglich »ls« eintippe – Snoopy erschnüffelt auch dies.

Abbildung 1: Eine sauber gepflegte History – Snoopy sei Dank.

Abbildung 1: Eine sauber gepflegte History – Snoopy sei Dank.

Sammelstelle

Jetzt muss ich die Logs nur noch an einer zentralen Stellen konsolidieren. Einen Server konfiguriere ich so, dass er Log-Nachrichten anderer Maschinen empfangen kann. Wenn dort etwa Rsyslog läuft, genügt es, ihm beim Start den Parameter »-r« mitzugeben, und schon ist Rsyslog auf Empfang.

Den anderen Servern bringe ich bei, Einträge in »/var/log/auth.log« zusätzlich an den frisch gebackenen Syslog-Server zu schicken. Dazu ergänze ich nur eine Zeile in der Syslog-Konfiguration:

auth,authpriv.*   @192.168.2.80

Das Auth-Log wächst in der Regel nicht gerade ins Unendliche, weshalb ich nur wöchentlich oder gar monatlich rotieren lasse. Mit Snoopy füllt sich Tag für Tag ein beachtliches Archiv meiner administrativen Heldentaten – Tippfehler und ähnliche Peanuts inklusive.

Der Autor

Charly Kühnast administriert Unix-Systeme im Rechenzentrum Niederrhein. Zu seinen Aufgaben gehören Sicherheit und Verfügbarkeit der Firewalls und der DMZ.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben