Zum Inhalt springen

Logwatch: Unterschied zwischen den Versionen

Aus Foxwiki
K Dirkwagner verschob die Seite Entwurf:Logwatch nach Linux:Logging:logwatch, ohne dabei eine Weiterleitung anzulegen
K Textersetzung - „[[Kategorie:“ durch „[[Category:“
Zeile 226: Zeile 226:
TODO
TODO


[[Kategorie:Linux:Logging]]
[[Category:Linux:Logging]]

Version vom 18. Mai 2022, 11:24 Uhr

Logwatch ist ein Tool zur Analyse von Logdateien.

Allgemeines

  • 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.

Links

Interne Links

TODO

Weblinks

TODO