Logwatch

Aus Foxwiki

Logwatch - Analyse von Logdateien

Beschreibung

Wekkzeug für Systemadministratoren
Übersicht über Vorgänge auf einem Serversystem
  • Logwatch durchsucht die Logdateien des Systems und generiert eine Kurzfassung daraus, deren Gestaltung individuell konfiguriert werden kann.
  • Diese kann dann entweder als Datei weiterverarbeitet oder zum Versenden an einen Mailserver weitergereicht werden.
Zusätzlich zu den systemeigenen Logs können ohne weitere Konfiguration u.a. folgende Dienste überwacht werden
  • Firewall/ iptables, fail2ban
  • DNS-Server: BIND
  • DHCP-Server: ISC-DHCPD
  • SSH und OpenVPN
  • Apache
  • Mailserver: Postfix/Sendmail/Exim/qmail/Dovecot/Courier
  • SpamAssassin / Amavis-Spam-Virenfilter
  • FTP-Server: PureFTPd / ProFTPD / vsftpd
  • ClamAV
  • Samba
  • RAID
  • Cron
  • SASL

Vorbereitung

Falls die von Logwatch generierten Berichte per Mail versandt werden sollen, muss ein lokaler Mailserver vorhanden sein.
  • Für Benutzer, die Logwatch für ihren SOHO-Server verwenden wollen, muss ein Mailserver aufgesetzt werden, der die Nachrichten an einen Smarthost weiterleitet. Dies geschieht am einfachsten mit Postfix.

Installation

# apt install logwatch
  • Die vordefinierte Einstellung ist ein zeitlich geplanter Start durch einen Cronjob.
  • Mehr dazu findet sich unter Automatisierung.
  • Möchte man Logwatch lieber per Hand im Terminal oder aus einem Shell-Skript starten, geschieht das mit dem Befehl logwatch.
  • Im Terminal wird nun ein Bericht ausgegeben, der zunächst die Grundinformationen über das Geschehen des letzten Tages enthält.
  • Die Ausgabe kann nun mit den Parametern aus der nachfolgenden Tabelle den eigenen Wünschen angepasst werden.
  • Es kann dabei die Ausgabemethode, das Ziel der Ausgabe, die Detailtiefe und der Zeitraum des Berichts angegeben werden.

Startparameter

Parameter Beschreibung
mail|file Bestimmt die Ausgabemethode. (Default: stdout)
html Bestimmt das Ausgabeformat. (Default: text)
--filename X Bestimmt die Ausgabedatei X.
med|high Bestimmt die Detailtiefe des Berichts. (Default: low)
--mailto X Versendet den generierten Bericht per Mail an die Adresse X. (setzt einen installierten MTA voraus)
--range today Bestimmt den Zeitraum, über welchen berichtet werden soll (siehe logwatch --range help)
Weitere Parameter
  • logwatch --help
  • man logwatch

Erfahrene Benutzer sollten auch den --service-Parameter beachten.

  • Mit diesem ist es möglich, den Bericht auf nur einen Dienst oder eine Dienstgruppe zu beschränken.
  • Die Namen der Dienste entsprechen den Namen des jeweiligen Konfigurationsskripts in /usr/share/logwatch/default.conf/services.

Beispiele

Einen Kurzbericht für den aktuellen Tag ausgeben:

logwatch --detail low --range today

Einen detaillierten Bericht über den gestrigen Tag in einem Ordner als HTML-Datei mit Datum als Name ablegen:

logwatch --detail high --range yesterday --format html --filename ~/logwatch/$(date +%F).html

Einen Kurzbericht über die letzten 30 Tage generieren und versenden:

logwatch --detail low --range 'between 30 days ago and yesterday' --mailto nobody@ubuntuusers.de

Konfiguration

Automatisierung (Cron)

  • In der Standardkonfiguration wird ein Skript namens /etc/cron.daily/00logwatch verwendet.
  • Dieses wird jeden Tag einmal gestartet und führt dann Logwatch mit den dort festgelegten Parametern aus.
  • Das Skript kann auch nach /etc/cron.weekly, /etc/cron.monthly oder – weniger sinnvoll – nach /etc/cron.hourly verschoben werden.
  • Möchte man Logwatch zu einem Zeitpunkt ausführen, der keinem der oben genannten entspricht, muss statt Anacron die normale, systemweite Crontab verwendet werden.
  • Dazu muss das alte Logwatch-Skript gelöscht werden und ein neuer Eintrag in der Datei /etc/crontab hinzugefügt werden.

Dieser sollte nach folgendem Schema aufgebaut sein:

*   *   *   *   * /usr/sbin/logwatch <parameter>
|   |   |   |   |
|   |   |   |   +----- Wochentag (1 - 7)
|   |   |   +------- Monat (1 - 12)
|   |   +--------- Tag (1 - 31)
|   +----------- Stunde (0 - 23)
+------------- Minute (0 - 59)

Angenommen, Logwatch soll einen Bericht mit den folgenden Parametern generieren: werktags; 2:00 Uhr; nicht detailliert; reiner Text; gestern; per Mail; nobody@ubuntuusers.de

Der entsprechende Crontab-Eintrag würde dann wie folgt aussehen:

0   2   *   *   1,2,3,4,5 /usr/sbin/logwatch --detail low --format text --range yesterday --mailto nobody@ubuntuusers.de > /dev/null 2>&1

Der Inhalt der durch diesen Eintrag versandten E-Mail sähe wie folgt aus:

################### Logwatch 7.3.6 (05/19/07) ####################
   Processing Initiated: Tue Apr 3 01:55:24 2012
   Date Range Processed: yesterday
              ( 2012-Apr-02 )
              Period is day.
   Detail Level of Output: 0
   Type of Output/Format: stdout / text
   Logfiles for Host: itchy
##################################################################

--------------------- dpkg status changes Begin ------------------------

Installed:
 logwatch 7.3.6.cvs20090906-1ubuntu5
 postfix 2.8.5-2~build1

---------------------- dpkg status changes End -------------------------


--------------------- httpd Begin ------------------------

Requests with error response codes
 404 Not Found
   /robots.txt: 2 Time(s)

 408 Request Timeout
   null: 1 Time(s)

---------------------- httpd End -------------------------


--------------------- Kernel Begin ------------------------

WARNING: Kernel Errors Present
 [  18.959797] EXT4-fs (sdb1): re-mounted. Opts: errors=remount-ro ...: 1 Time(s)

---------------------- Kernel End -------------------------


--------------------- pam_unix Begin ------------------------

su:
 Sessions Opened:
   root -> nxpgsql: 7 Time(s)
   root -> daemon: 1 Time(s)
   root -> postgres: 1 Time(s)

sudo:
 Authentication Failures:
   simon(0) -> simon: 1 Time(s)


---------------------- pam_unix End -------------------------


--------------------- Connections (secure-log) Begin ------------------------

New Users:
 postfix (119)

New Groups:
 postfix (131)
 postdrop (132)

Changed password expiry for users:
 postfix : 1 Time(s)

---------------------- Connections (secure-log) End -------------------------


--------------------- SSHD Begin ------------------------

Users logging in through sshd:
 simon:
   192.168.100.185 (iPad-Simon.home.lan): 4 times


Received disconnect:
 11: Normal Shutdown. Thank you! : 3 Time(s)

---------------------- SSHD End -------------------------


--------------------- Sudo (secure-log) Begin ------------------------

===============================================================================

root => simon
-------------
/usr/bin/vlc - 1 Times.

===============================================================================

simon => root
-------------
/bin/chown - 1 Times.
/bin/cp - 2 Times.
/bin/zcat - 1 Times.
/usr/bin/apt-get - 1 Times.
/usr/bin/find - 1 Times.

---------------------- Sudo (secure-log) End -------------------------


--------------------- Disk Space Begin ------------------------

Filesystem      Size Used Avail Use% Mounted on
/dev/sdb1       221G 9.0G 200G  5% /
/dev/sda2       75G  58G  18G 78% /home
/dev/md0       917G 217G 654G 25% /home/simon/Archiv

---------------------- Disk Space End -------------------------

###################### Logwatch End #########################

Eigene Dienste

Das Hinzufügen eigener Dienste zu Logwatch erfordert den Umgang mit der Skriptsprache Perl
  • Um ein solches Modul entwickeln zu können, muss man zuerst die Verzeichnisstruktur von Logwatch verstehen.
  • Diese mag auf den ersten Blick ein wenig verwirrend wirken, ergibt aber Sinn.

Logwatch ist auf mehrere Konfigurationsverzeichnisse aufgeteilt

Nachfolgend wird deren Funktion erläutert:

Verzeichnisse
Pfad 	Beschreibung
/etc/logwatch/ 	Dieses Verzeichnis enthält die benutzerdefinierte Konfiguration. Dieses Verzeichnis enthält die gleiche Struktur wie /usr/share/logwatch.
/usr/share/logwatch/ 	Hier befindet sich die Standardkonfiguration. Diese sollte nicht editiert werden.
/usr/share/logwatch/default.conf/ 	Konfiguration der von Haus aus in Logwatch integrierten Dienste.
/usr/share/logwatch/dist.conf/ 	Konfiguration der speziell für Ubuntu hinzugefügten Dienste.
/usr/share/logwatch/scripts/ 	Perl-Skripte zum Verarbeiten der Logfiles.
  • In den *.conf-Verzeichnissen befinden sich noch je zwei weitere Verzeichnisse namens logfiles und services.
  • Im ersten wird das Logfile definiert, im letzteren die Dienste.
  • Möchte man nun einen eigenen Dienst konfigurieren, erstellt man – falls nicht vorhanden – diese Verzeichnisstruktur unter /etc/logwatch/ und legt dort das Perl-Skript und die Konfigurationsdateien ab.
  • Es empfiehlt sich, einen bereits existierenden Dienst als Vorlage zu nutzen.


Anhang

Siehe auch

Dokumentation

Links

Projekt
Weblinks