Logwatch: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
'''Logwatch''' | '''Logwatch''' - Analyse von Logdateien | ||
= | == Beschreibung == | ||
* Es soll Systemadministratoren helfen, die Übersicht über alle Vorgänge auf einem Serversystem zu behalten. | * Es soll Systemadministratoren helfen, die Übersicht über alle Vorgänge auf einem Serversystem zu behalten. | ||
* Logwatch durchsucht die Logdateien des Systems und generiert eine Kurzfassung daraus, deren Gestaltung individuell konfiguriert werden kann. | * Logwatch durchsucht die Logdateien des Systems und generiert eine Kurzfassung daraus, deren Gestaltung individuell konfiguriert werden kann. | ||
Zeile 21: | Zeile 21: | ||
* SASL | * SASL | ||
= Vorbereitung = | == Vorbereitung == | ||
* Falls die von Logwatch generierten Berichte per Mail versandt werden sollen, muss ein lokaler Mailserver vorhanden sein. | * 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. | * 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 = | == Installation == | ||
# apt install logwatch | # apt install logwatch | ||
Zeile 36: | Zeile 36: | ||
* Es kann dabei die Ausgabemethode, das Ziel der Ausgabe, die Detailtiefe und der Zeitraum des Berichts angegeben werden. | * Es kann dabei die Ausgabemethode, das Ziel der Ausgabe, die Detailtiefe und der Zeitraum des Berichts angegeben werden. | ||
= Startparameter = | == Startparameter == | ||
Parameter Beschreibung | Parameter Beschreibung | ||
--output stdout|mail|file Bestimmt die Ausgabemethode. (Default: stdout) | --output stdout|mail|file Bestimmt die Ausgabemethode. (Default: stdout) | ||
Zeile 50: | Zeile 50: | ||
* Die Namen der Dienste entsprechen den Namen des jeweiligen Konfigurationsskripts in /usr/share/logwatch/default.conf/services. | * Die Namen der Dienste entsprechen den Namen des jeweiligen Konfigurationsskripts in /usr/share/logwatch/default.conf/services. | ||
= Beispiele = | == Beispiele == | ||
Einen Kurzbericht für den aktuellen Tag ausgeben: | Einen Kurzbericht für den aktuellen Tag ausgeben: | ||
logwatch --detail low --range today | logwatch --detail low --range today | ||
Zeile 60: | Zeile 60: | ||
logwatch --detail low --range 'between 30 days ago and yesterday' --mailto nobody@ubuntuusers.de | logwatch --detail low --range 'between 30 days ago and yesterday' --mailto nobody@ubuntuusers.de | ||
= Konfiguration = | == Konfiguration == | ||
== Automatisierung (Cron) == | === Automatisierung (Cron) === | ||
* In der Standardkonfiguration wird ein Skript namens /etc/cron.daily/00logwatch verwendet. | * 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. | * Dieses wird jeden Tag einmal gestartet und führt dann Logwatch mit den dort festgelegten Parametern aus. | ||
Zeile 170: | Zeile 170: | ||
--------------------- Sudo (secure-log) Begin ------------------------ | --------------------- Sudo (secure-log) Begin ------------------------ | ||
============================================================================== | =============================================================================== | ||
root => simon | root => simon | ||
Zeile 176: | Zeile 176: | ||
/usr/bin/vlc - 1 Times. | /usr/bin/vlc - 1 Times. | ||
============================================================================== | =============================================================================== | ||
simon => root | simon => root | ||
Zeile 200: | Zeile 200: | ||
###################### Logwatch End ######################### | ###################### Logwatch End ######################### | ||
= Eigene Dienste = | == Eigene Dienste == | ||
* Das Hinzufügen eigener Dienste zu Logwatch erfordert den Umgang mit der Skriptsprache Perl. | * Das Hinzufügen eigener Dienste zu Logwatch erfordert den Umgang mit der Skriptsprache Perl. | ||
* Um so ein Modul entwickeln zu können, muss man zuerst die Verzeichnisstruktur von Logwatch verstehen. | * Um so ein Modul entwickeln zu können, muss man zuerst die Verzeichnisstruktur von Logwatch verstehen. | ||
Zeile 207: | Zeile 207: | ||
Logwatch ist auf mehrere Konfigurationsverzeichnisse aufgeteilt. Nachfolgend wird deren Funktion erläutert: | Logwatch ist auf mehrere Konfigurationsverzeichnisse aufgeteilt. Nachfolgend wird deren Funktion erläutert: | ||
== Verzeichnisse == | === Verzeichnisse === | ||
Pfad Beschreibung | Pfad Beschreibung | ||
/etc/logwatch/ Dieses Verzeichnis enthält die benutzerdefinierte Konfiguration. Dieses Verzeichnis enthält die gleiche Struktur wie /usr/share/logwatch. | /etc/logwatch/ Dieses Verzeichnis enthält die benutzerdefinierte Konfiguration. Dieses Verzeichnis enthält die gleiche Struktur wie /usr/share/logwatch. | ||
Zeile 219: | Zeile 219: | ||
* 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. | * 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. | * Es empfiehlt sich, einen bereits existierenden Dienst als Vorlage zu nutzen. | ||
<noinclude> | |||
= | == Anhang == | ||
== | === Siehe auch === | ||
{{Special:PrefixIndex/{{BASEPAGENAME}}}} | |||
== Weblinks == | ==== Dokumentation ==== | ||
==== Links ==== | |||
===== Projekt ===== | |||
===== Weblinks ===== | |||
[[Kategorie:Linux/Logging]] | [[Kategorie:Linux/Logging]] | ||
</noinclude> |
Version vom 31. August 2023, 11:33 Uhr
Logwatch - Analyse von Logdateien
Beschreibung
- Es soll Systemadministratoren helfen, die Übersicht über alle Vorgänge auf einem Serversystem zu behalten.
- 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
--output stdout|mail|file Bestimmt die Ausgabemethode. (Default: stdout) --format text|html Bestimmt das Ausgabeformat. (Default: text) --filename X Bestimmt die Ausgabedatei X. --detail low|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 sind der Hilfe von Logwatch (logwatch --help) oder der Manpage zu entnehmen: 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 so ein 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 durchaus 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.