Open Source im professionellen Einsatz

Schneller Logsurfer

Ein großer Nachteil von Logcheck und Logtail ist, dass der Admin sie über Cron regelmäßig aufrufen muss und die Programme dadurch nicht unmittelbar reagieren. Das lässt sich mit dem Einsatz von Logsurfer [3] ändern. Dieses auf dem Loganalyse-Tool Swatch basierende Programm hängt sich wie »tail« an ein Logfile und erfasst neue Einträge zur Laufzeit. Da Logsurfer in C geschrieben ist, ergibt sich auch ein Performancevorteil gegenüber dem in Bash realisierten Logcheck.

Während Logcheck einfach nur bekannte Logmeldungen mit einem regulären Ausdruck ausfiltert, verwendet Logsurfer leistungsfähige Regeln. Deren grundsätzlichen Aufbau demonstriert Listing 3. Dabei gibt »Match_regex« den regulären Ausdruck an, der auf die gesuchte Logzeile passt. Mit dem zweiten Feld »Not_match_regex« kann der Anwender Muster ausschließen. Findet »Stop_regex« einen Treffer, streicht Logsurfer die Regel von der aktuellen Liste der aktiven Regeln, das Feld »Not_stop_regex« beschreibt wieder die Ausschlusskriterien. Der Timeout-Eintrag definiert, wie lange die Regel aktiv sein soll. Wer an dieser Stelle eine 0 angibt, legt die Gültigkeit als unbegrenzt fest.

Listing 3

Logsurfer-Regeln

01 Match_regex Not_match_regex Stop_regex Not_stop_regex Timeout [continue] Action [...]

Die optionale Angabe »continue« teilt dem Programm Logsurfer mit, dass es die aktuelle Zeile auch dann parsen soll, wenn eine zuvor definierte Regel zutrifft. Tatsächlich hört Logsurfer standardmäßig nach dem ersten Treffer auf, eine Zeile zu verarbeiten. Das Minuszeichen »-« lässt sich zum Markieren unbenutzter Felder verwenden.

In Aktion treten

Tabelle 1 zeigt die möglichen Schlüsselwörter für die Aktion im letzten Feld. Jeder Regel kann der Admin eine eigene Aktion zuweisen, um auf verschiedene Ereignisse auch unterschiedlich zu reagieren. Neben dem Ausführen beliebiger Programme mit den »exec« - und »pipe« -Aktionen erstellt die »open« -Aktion kontextabhängige Regeln. Dabei speichert die Software sämtliche Zeilen, die auf einen regulären Ausdruck passen. Die »report« -Aktion gibt sie später als kompletten Block zusammenhängender Logeinträge aus.

Tabelle 1: Werte für action

Listing 4 enthält ein einfaches Beispiel für eine Regel, die beim Ereignis »Out of memory« eine Mail mit der entsprechenden Logzeile verschickt. Der erste reguläre Ausdruck trifft auf Zeilen mit der Zeichenkette »kernel: Out of memory« zu. In diesem Fall schickt die Regel eine Mail an Root. Der Betreff der Mail verwendet Variablen aus dem Suchmuster, um betroffene Prozess-ID (»$2« ) und weitere Informationen (»$3« ) hinzuzufügen. Daneben übergibt die Regel die komplette Logzeile an die Standardeingabe des Programms »mailx« .

Listing 4

Mail verschicken

01 'kernel: Out of memory: Kill process ([0-9]*) (.*)'- - - 0
02         pipe "/usr/bin/mailx -s \"Warning! Out of memory! Process $2 killed: $3\" root "

Ein komplexeres Beispiel demonstrieren die drei Regeln in Listing 5. Sie erkennen SSH-Sessions und zeigen alle Daten der Session, falls der Benutzer ein falsches Passwort angibt. Passiert innerhalb der SSH-Sitzung nichts Auffälliges (ist also das Passwort korrekt), verwerfen die Regeln die Logmeldungen.

Listing 5

Logsurfer-Kontext

01 '^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ sshd\[([[:digit:]]+)\]: .*' - - - 0 continue
02         open "$2" - 5000 86400 3600
03         report "/bin/cat" "$2"
04
05 '^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ sshd\[([[:digit:]]+)\]: Failed password .*' - - - 0
06         report "/bin/cat" "$2"
07
08 '^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ sshd\[([[:digit:]]+)\]: Connection closed.*' - - - 0
09         delete "$2"

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook