Logwatch
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.
Konfigurationsverzeichnisse
Die Logwatch-Konfiguration ist auf mehrere Verzeichnisse aufgeteilt
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 |
- logfiles und services
- 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.