Logwatch: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „Logwatch ist ein in Perl geschriebenes Tool zur Analyse von Logdateien. Es soll Systemadministratoren helfen, die Übersicht über alle Vorgänge auf einem Ser…“ |
K Textersetzung - „–“ durch „-“ |
||
(49 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
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 | |||
<div style="column-count:2"> | |||
* 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 | |||
</div> | |||
== 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 == | |||
{| class="wikitable options" | |||
|- | |||
! 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 | |||
* 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. | |||
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 | |||
Möchte man Logwatch zu einem Zeitpunkt ausführen, der keinem der oben genannten entspricht, muss statt | |||
Dieser sollte nach folgendem Schema aufgebaut sein: | 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) | +------------- 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 | Angenommen, Logwatch soll einen Bericht mit den folgenden Parametern generieren: werktags; 2:00 Uhr; nicht detailliert; reiner Text; gestern; per Mail; nobody@ubuntuusers.de | ||
Zeile 97: | Zeile 97: | ||
Der entsprechende Crontab-Eintrag würde dann wie folgt aussehen: | Der entsprechende Crontab-Eintrag würde dann wie folgt aussehen: | ||
0 | 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: | 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 | |||
################### Logwatch 7.3.6 (05/19/07) #################### | 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: | Installed: | ||
logwatch 7.3.6.cvs20090906-1ubuntu5 | |||
postfix 2.8.5-2~build1 | |||
---------------------- dpkg status changes End ------------------------- | |||
--------------------- httpd Begin ------------------------ | --------------------- httpd Begin ------------------------ | ||
Requests with error response codes | 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: | su: | ||
Sessions Opened: | |||
root -> nxpgsql: 7 Time(s) | |||
root -> daemon: 1 Time(s) | |||
root -> postgres: 1 Time(s) | |||
sudo: | sudo: | ||
Authentication Failures: | |||
simon(0) -> simon: 1 Time(s) | |||
---------------------- pam_unix End ------------------------- | |||
--------------------- Connections (secure-log) Begin ------------------------ | --------------------- Connections (secure-log) Begin ------------------------ | ||
New Users: | New Users: | ||
postfix (119) | |||
New Groups: | New Groups: | ||
postfix (131) | |||
postdrop (132) | |||
Changed password expiry for users: | Changed password expiry for users: | ||
postfix : 1 Time(s) | |||
---------------------- Connections (secure-log) End ------------------------- | |||
---------------------- | --------------------- SSHD Begin ------------------------ | ||
Users logging in through sshd: | Users logging in through sshd: | ||
simon: | |||
192.168.100.185 (iPad-Simon.home.lan): 4 times | |||
Received disconnect: | Received disconnect: | ||
11: Normal Shutdown. Thank you! : 3 Time(s) | |||
---------------------- SSHD End ------------------------- | |||
--------------------- Sudo (secure-log) Begin ------------------------ | --------------------- Sudo (secure-log) Begin ------------------------ | ||
============================================================================== | =============================================================================== | ||
root => simon | root => simon | ||
Zeile 193: | Zeile 191: | ||
/usr/bin/vlc - 1 Times. | /usr/bin/vlc - 1 Times. | ||
============================================================================== | =============================================================================== | ||
simon => root | simon => root | ||
Zeile 203: | Zeile 201: | ||
/usr/bin/find - 1 Times. | /usr/bin/find - 1 Times. | ||
---------------------- Sudo (secure-log) End ------------------------- | ---------------------- 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 ------------------------- | |||
---------------------- Disk Space 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 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 | |||
{|class="wikitable options" | |||
! 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. | |||
<noinclude> | |||
== Anhang == | |||
=== Siehe auch === | |||
{{Special:PrefixIndex/{{BASEPAGENAME}}/}} | |||
=== Dokumentation === | |||
=== Links === | |||
==== Projekt ==== | |||
==== Weblinks ==== | |||
[[Kategorie:Linux/Logging]] | |||
</noinclude> |
Aktuelle Version vom 11. Mai 2025, 20:47 Uhr
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.