Linux: logwatch (8) ist zu laut. Wie kann ich den Geräuschpegel steuern?

30

Auf unseren Linux-Systemen wird standardmäßig das Dienstprogramm logwatch (8) ausgeführt . Auf einem RedHat / CentOS / SL-System wird Logwatch vom /etc/cron.daily/Cronjob aufgerufen, der dann eine tägliche E-Mail mit den Ergebnissen sendet. Diese E-Mails haben einen Betreff wie:

Subject: Logwatch for $HOSTNAME

Das Problem ist, dass diese täglichen E-Mails standardmäßig zu laut sind und eine Menge überflüssiger Informationen (HTTP-Fehler, tägliche Datenträgerverwendung usw.) enthalten, die bereits von anderen Diensten (Nagios, Cacti, zentrales Syslog usw.) überwacht werden. Bei 100 Systemen ist die E-Mail-Belastung unerträglich. Die Leute ignorieren die E-Mails, was bedeutet, dass wir möglicherweise Probleme übersehen, die von der Logwatch erfasst werden.

Wie kann ich das durch Logwatch verursachte Rauschen reduzieren und trotzdem Logwatch verwenden, um uns über erhebliche Probleme zu informieren?

Ich werde meine eigene Antwort unten posten, aber ich würde gerne sehen, was andere getan haben.

Hinweis : Ich habe eine ähnliche Frage zu FreeBSD, bei FreeBSD: periodic (8) ist zu laut. Wie kann ich den Geräuschpegel steuern?

Stefan Lasiewski
quelle

Antworten:

39

Insgesamt ist die verfügbare Dokumentation für Logwatch nicht ausreichend erklärt und oft viel zu vage. Ich habe einige nützliche Beispiele zusammengestellt und das Logwatch-Rauschen um über 95% reduziert.

Folgendes habe ich gefunden.

Denken Sie daran, dass Sie unter eine Logwatch-Dokumentation finden /usr/share/doc/logwatch-*/HOWTO-Customize-LogWatch, die einige nützliche Beispiele enthält.

  1. Unter RHEL / CentOS / SL befindet sich die Standard-Logwatch-Konfiguration unter /usr/share/logwatch/default.conf/logwatch.conf

    Diese Einstellungen können überschrieben werden, indem Sie Ihre lokale Konfiguration unter platzieren /etc/logwatch/conf/logwatch.conf. Fügen Sie Folgendes in diese Datei ein, um logwatch anzuweisen, Dienste wie 'httpd' und die täglichen Überprüfungen der Festplattennutzung vollständig zu ignorieren:

    # Don't spam about the following Services
    Service = "-http"
    Service = "-zz-disk_space"
    
  2. Manchmal möchte ich die Protokollüberwachung für einen bestimmten Dienst nicht vollständig deaktivieren, sondern nur die Ergebnisse optimieren, um sie leiser zu machen. /usr/share/logwatch/default.conf/services/*.confenthält die Standardkonfiguration für die Dienste. Diese Parameter können überschrieben werden, indem Sie Ihre lokale Konfiguration unter platzieren /etc/logwatch/conf/services/$SERVICE.conf. Leider sind die Möglichkeiten von Logwatch hier begrenzt und viele der ausführbaren Logwatch-Dateien sind voll mit undokumentiertem Perl. Sie können die ausführbare Datei durch etwas anderes ersetzen oder versuchen, einige Einstellungen mit zu überschreiben /etc/logwatch/conf/services.

    Zum Beispiel habe ich einen Sicherheitsscanner, der Scans über das Netzwerk ausführt. Während die Tests ausgeführt werden, generiert der Sicherheitsscanner viele Fehlermeldungen in den Anwendungsprotokollen. Ich möchte, dass Logwatch Fehler von meinen Sicherheitsscannern ignoriert, mich jedoch über Angriffe anderer Hosts benachrichtigt. Dies wird bei Logwatch ausführlicher behandelt: Ignorieren bestimmter IPs für SSH- und PAM-Überprüfungen? . Dazu setze ich folgendes unter /etc/logwatch/conf/services/sshd.conf:

    # Ignore these hosts
    *Remove = 192.168.100.1
    *Remove = X.Y.123.123
    # Ignore these usernames
    *Remove = testuser
    # Ignore other noise. Note that we need to escape the ()
    *Remove = "pam_succeed_if\(sshd:auth\): error retrieving information about user netscan.*
    

    "

  3. Mit logwatch können Sie auch die Ausgabe der E-Mails von logwatch entfernen, indem Sie reguläre Ausdrücke in einfügen /etc/logwatch/conf/ignore.conf. HOWTO-Customize-LogWatch sagt:

    ignore.conf: Diese Datei gibt reguläre Ausdrücke an, die bei Übereinstimmung mit der Ausgabe von logwatch die übereinstimmende Zeile unterdrücken, unabhängig davon, welcher Dienst ausgeführt wird.

    Ich hatte jedoch nicht viel Glück damit. Für meine Anforderungen ist eine bedingte Anweisung erforderlich, z. B. "Wenn aufgrund meines Sicherheitsscanners Sicherheitswarnungen angezeigt werden, drucken Sie die Ausgabe nicht aus." Aber wenn es Sicherheitswarnungen von meinem Sicherheitsscanner und von einigen bösen Jungs gibt, dann drucken Sie die nützlichen Teile aus - Die Kopfzeile mit der Aufschrift "Fehlgeschlagene Anmeldungen von:", die IPs der bösen Hosts, aber nicht die IPs der Scanner.

  4. Halten Sie es an der Quelle fest (wie von @ user48838 vorgeschlagen). Diese Meldungen werden von einer Anwendung generiert, und Logwatch gibt Ihnen die Ergebnisse gerne weiter. In diesen Fällen können Sie die Anwendung so ändern, dass sie weniger protokolliert.

    Dies ist nicht immer wünschenswert, da Sie manchmal möchten, dass die vollständigen Protokolle an einen beliebigen Ort gesendet werden (an einen zentralen Syslog-Server, einen zentralen IDS-Server, Splunk, Nagios usw.), aber Sie möchten nicht, dass Sie von logwatch eine E-Mail darüber erhalten jeden Server, jeden Tag.

Stefan Lasiewski
quelle
Dies ist genau das, was ich getan habe. Wenn ich mich jedoch richtig erinnere, gab es einige Dienste (ich glaube, sie haben etwas mit E-Mail-Ablehnungen zu tun), die nicht korrekt aus den Protokollen analysiert wurden und daher in einer Art "anderer" Kategorie und aufgelistet wurden Die gesamten Zeilen aus den Protokollen wurden per E-Mail gesendet. Das war extrem laut. Ich habe daher gerade den Logwatch-Quellcode bearbeitet und die entsprechenden Filter hinzugefügt / geändert und wahrscheinlich 20 KB pro E-Mail abgeschnitten. Das war vor ein paar Jahren, also bin ich sicher, dass sich die Logwatch seitdem verbessert hat, aber ich habe meine Version nicht aktualisiert, falls dies nicht der Fall ist.
Mike
5

Ja - Logwatch ist oft zu laut. Sie haben bereits erwähnt, dass Überprüfungen vollständig deaktiviert werden sollen.

Wenn Sie dies nicht möchten, müssen Sie verhindern, dass bestimmte Ereignisse auftreten. Zum Beispiel ist es nicht interessant, wenn Nagios über SSH eine Verbindung zu einem DMZ-System herstellt. Ist aber interessant, wenn es andere Logins via ssh gibt.

Wir verwenden rsyslog anstelle von ksyslogd (installieren Sie zuerst rsyslog und entfernen Sie dann ksyslogd). Mit rsyslog können Sie feineinstellen, was in die Protokolle geschrieben wird und was nicht (z. B. einen Ausdruck erstellen, der Nachrichten von sshd löscht, die "nagios connected" enthalten). Auf diese Weise gibt logwatch nur nützliche Informationen aus.

Ein anderer Fall könnte xinetd sein - ich möchte nicht über erfolgreiche Verbindungen informiert werden - dies kann in xinetd selbst konfiguriert werden - ohne die Logwatch-Prüfung für xinetd zu deaktivieren.

Nils
quelle
3

Als Punkt von Interesse folgte ich Option 2 aus der Antwort von Stefan Lasiewski, aber für meine Zwecke wollte ich nur bestimmte Zeilen einschließen, anstatt alle Geräusche auszuschließen, die ich nicht wollte.

Ich habe vsftpd so konfiguriert, dass ich es erstellt habe, /etc/logwatch/conf/services/vsftpd.confund anstatt so etwas wie *Remove = testuserdas Entfernen von Zeilen, die den Text enthalten, habe testuserich die Zeile verwendet, *OnlyContains = "testuser"die nur Zeilen mit diesem Text zurückgibt.

Diese 2 Skripte funktionieren im Grunde genommen mit grepund grep -v.

Der Unterschied besteht darin, dass Sie *Removeso oft verwenden können, wie Sie möchten, aber *OnlyContainsSie müssen es einmal verwenden, wenn Sie etwas oder etwas anderes oder etwas anderes möchten. Also für mehrere Werte, die Sie tun*OnlyContains = "testuser|testuser2|testuser3"

Jacob Tomlinson
quelle
1

Haben Sie darüber nachgedacht, die E-Mail-Statusnachrichten an einen Listenserver weiterzuleiten, der möglicherweise Digests basierend auf programmierbaren Attributen für Größe und / oder Dauer / Alter bereitstellt? Der Ansatz reduziert nicht die Anzahl der E-Mails, sondern kann die Anzahl der einzelnen E-Mails durch Stapeln steuern, um die E-Mail-Häufigkeit zu verringern.

user48838
quelle
Ich habe. Wir haben auch eine reine Syslog-Lösung in Betracht gezogen, bei der wir einen Teil des Rauschens herausfiltern. Der Einfachheit halber wollten wir jedoch sehen, ob es möglich ist, dieses Zeug an der Quelle zu kontrollieren.
Stefan Lasiewski
1
Wenn Sie an der Quelle "drosseln" und dabei etwaige Pannen minimieren möchten, sollten Sie in Betracht ziehen, den Aufwand zum Anpassen der Protokollierungsstufen zu begrenzen, sofern verfügbar.
User48838
0

Ich musste kürzlich die Ausgabe vom sshd-Dienst leiser machen. Einige der Abschnitte waren ziemlich lang und konnten nicht durch Einstellen der Detailstufe gesteuert werden.

Es ist keine ideale Lösung, aber ich habe das sshd- Skript überschrieben, indem ich es von hier kopiert habe: /usr/share/logwatch/scripts/services/sshdnach hier:/etc/logwatch/scripts/services/sshd

Natürlich müssen Sie jetzt über alle Aktualisierungen dieser Skriptdatei auf dem Laufenden bleiben, aber Sie können damit sehr genau steuern, was ausgegeben wird. Alternativ könnte man die Ausgabe auch logwatchdurch ein Tool wie awkoder sedherausfiltern, was man nicht will, aber das erschien mir schwieriger.

Dominic P
quelle
0

Ich hatte die gleiche Frage zu UNIX & Linux Stackexchange und hier ist die Antwort, die ich für mich korrigiert habe:

Sie können logwatch anweisen, 7 Tage anstatt 1 Tag anzuzeigen, indem Sie den Parameter Range in Ihrem ändern logwatch.conf :

Range = between -7 days and -1 days

Sie können festlegen logwatch, dass wöchentlich statt täglich ausgeführt werden soll, indem Sie es aus dem wöchentlichen Cron-Verzeichnis in das tägliche Verzeichnis verschiebencron Verzeichnis verschieben:

mv /etc/cron.daily/00logwatch /etc/cron.weekly/

Danke an @JeffSchaller

etwas etwas
quelle