Frage Linux: Logwatch (8) ist zu laut. Wie kann ich den Geräuschpegel kontrollieren?


Unsere Linux-Systeme laufen Loguhr (8) Dienstprogramm standardmäßig. Auf einem RedHat / CentOS / SL System wird Logwatch von der /etc/cron.daily/ cronjob, der dann eine tägliche E-Mail mit den Ergebnissen sendet. Diese E-Mails haben ein Thema wie:

Subject: Logwatch for $HOSTNAME

Das Problem ist, dass diese täglichen E-Mails standardmäßig zu laut sind und viele überflüssige Informationen (HTTP-Fehler, tägliche Festplattennutzung usw.) enthalten, die bereits von anderen Diensten (Nagios, Cacti, zentrales Syslog usw.) überwacht werden. Für 100 Systeme ist die E-Mail-Belastung unerträglich. Die Leute ignorieren die E-Mails, was bedeutet, dass wir Probleme übersehen können, die von Logwatch erfasst werden.

Wie kann ich die von Logwatch erzeugte Geräuschentwicklung reduzieren, aber logwatch immer noch verwenden, um uns über erhebliche Probleme zu informieren?

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

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


27
2017-07-22 23:24


Ursprung




Antworten:


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 mehr als 95% reduziert.

Hier ist, was ich gefunden habe.

Beachten Sie, dass Sie einige Logwatch-Dokumentation unter finden können /usr/share/doc/logwatch-*/HOWTO-Customize-LogWatchund es enthält ein paar nützliche Beispiele.

  1. Unter RHEL / CentOS / SL befindet sich die standardmäßige Logwatch-Konfiguration /usr/share/logwatch/default.conf/logwatch.conf

    Diese Einstellungen können überschrieben werden, indem Sie Ihre lokale Konfiguration unter setzen /etc/logwatch/conf/logwatch.conf. Fügen Sie Folgendes in die Datei ein, um logwatch zu veranlassen, Dienste wie "httpd" und die tägliche Überprüfung der Festplattenbelegung vollständig zu ignorieren:

    # Don't spam about the following Services
    Service = "-http"
    Service = "-zz-disk_space"
    
  2. Manchmal möchte ich Logwatch für einen bestimmten Dienst nicht vollständig deaktivieren. Ich möchte die Ergebnisse nur feinabstimmen, um sie weniger laut zu machen. /usr/share/logwatch/default.conf/services/*.conf enthält die Standardkonfiguration für die Dienste. Diese Parameter können überschrieben werden, indem Sie Ihre lokale Konfiguration unter setzen /etc/logwatch/conf/services/$SERVICE.conf. Leider ist Logwatchs Fähigkeit hier begrenzt und viele der Logwatch-Programme sind voll von 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 aber immer noch über Angriffe von anderen Hosts informiert. Dies wird im Detail behandelt Logwatch: Ignoriere bestimmte IPs für SSH & PAM Checks?. Um dies zu tun, lege 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 Ausgaben aus den Logwatch-E-Mails entfernen, indem Sie reguläre Ausdrücke einfügen /etc/logwatch/conf/ignore.conf. HOWTO-Customize-LogWatch sagt:

    ignore.conf: Diese Datei spezifiziert reguläre Ausdrücke, die                   wenn es durch die Ausgabe von logwatch übereinstimmt, wird                   unterdrücken Sie die übereinstimmende Zeile, unabhängig davon                   Dienst wird ausgeführt.

    Allerdings hatte ich damit nicht viel Glück. Meine Anforderungen benötigen eine bedingte Anweisung, etwa "Wenn Sicherheitswarnungen aufgrund meines Sicherheitsscanners vorliegen, dann drucken Sie die Ausgabe nicht. Aber wenn Sicherheitswarnungen von meinem Sicherheitsscanner vorliegen und von einigen bösen Jungs, dann drucken Sie die nützlichen Teile-- Der Header, der sagt "fehlgeschlagen Logins von:", die IPs der schlechten Hosts, aber nicht die IPs von Scannern.

  4. Nippen Sie es an der Quelle (wie von @ user48838 vorgeschlagen). Diese Nachrichten werden von einer Anwendung generiert, und dann gibt Logwatch die Ergebnisse an Sie weiter. In diesen Fällen können Sie die Anwendung so ändern, dass weniger protokolliert wird.

    Dies ist nicht immer wünschenswert, da manchmal die vollständigen Protokolle irgendwo gesendet werden sollen (an einen zentralen Syslog-Server, einen zentralen IDS-Server, Splunk, Nagios usw.), aber Sie möchten nicht, dass logwatch Ihnen diesbezüglich eine E-Mail sendet Jeder Server, jeden Tag.


36
2017-07-22 23:40



Dies ist genau das, was ich gemacht habe, aber wenn ich mich richtig erinnere, gab es einige Dienste (ich glaube etwas mit E-Mail-Ablehnungen zu tun), die nicht korrekt aus den Logs geparst wurden und deshalb in einer Art "anderer" Kategorie aufgelistet wurden Die gesamten Zeilen aus den Logs wurden per E-Mail gesendet. Das war extrem laut. Ich habe also gerade den Logwatch-Quellcode bearbeitet und die entsprechenden Filter hinzugefügt / geändert und wahrscheinlich 20kb per Email geschnitten. Das war vor ein paar Jahren, also bin ich mir sicher, dass Logwatch sich seitdem verbessert hat, aber ich habe meine Version nicht aktualisiert, falls das nicht der Fall ist. - Mike


Ja - Logwatch ist oft zu laut. Sie haben bereits erwähnt, die Überprüfung vollständig zu deaktivieren.

Wenn Sie das nicht möchten, müssen Sie verhindern, dass bestimmte Ereignisse angezeigt werden. Zum Beispiel - es ist nicht interessant, wenn Nagios über SSH zu einem DMZ-System verbindet. Aber es ist interessant, wenn es andere Logins via ssh gibt.

Wir verwenden rsyslog anstelle von ksyslogd (zuerst rsyslog installieren, dann ksyslogd entfernen). Mit rsyslog können Sie genau einstellen, was zu den Protokollen gehört und was nicht (z. B. einen Ausdruck erstellen, der Nachrichten von sshd cointaining "nagios connected" löscht). Auf diese Weise meldet logwatch nur nützliche Informationen.

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


4
2017-07-30 19:07





Als einen Punkt des Interesses folgte ich Option 2 Form der Antwort von Stefan Lasiewski aber für meine Zwecke wollte ich nur bestimmte Linien einbeziehen, anstatt alle Geräusche auszuschließen, die ich nicht wollte.

Ich habe vsftpd so konfiguriert, dass ich erstellt habe /etc/logwatch/conf/services/vsftpd.conf und anstelle von etwas wie *Remove = testuser Das entfernt Zeilen, die den Text enthalten testuser Ich habe die Linie benutzt *OnlyContains = "testuser" Das gibt nur Zeilen zurück, die diesen Text enthalten.

Diese 2 Skripte funktionieren sehr grundsätzlich mit grep und grep -v.

Der Unterschied ist, dass Sie verwenden können *Remove so oft du willst aber mit *OnlyContains Sie müssen es einmal benutzen, wenn Sie etwas oder etwas anderes oder etwas anderes wollen. Also für mehrere Werte, die Sie tun *OnlyContains = "testuser|testuser2|testuser3"


3
2017-11-26 14:18





Haben Sie darüber nachgedacht, die E-Mail-Statusnachrichten an einen Listenserver zu leiten, möglicherweise einen, der Aufschlüsselungen basierend auf programmierbaren Attributen von Größe und / oder Dauer / Alter bereitstellt? Der Ansatz verringert nicht die Menge an Protokollierung, die per E-Mail gesendet wird, sondern kann die Menge einzelner E-Mails durch Stapelverarbeitung steuern, um die E-Mail-Häufigkeit zu reduzieren.


1
2017-07-27 01:06



Ich habe. Wir haben auch eine Syslog-only-Lösung in Betracht gezogen, bei der wir einige der Geräusche herausfiltern. Der Einfachheit halber wollten wir jedoch sehen, ob es möglich ist, dieses Zeug an der Quelle zu kontrollieren. - Stefan Lasiewski
Wenn Sie daran denken, es an der Quelle zu "knipsen" und dabei mögliche Fehler zu minimieren, sollten Sie die Bemühungen zur Anpassung der Protokolliergrade einschränken, wenn diese verfügbar sind. - user48838


Ich musste vor kurzem die Ausgabe vom sshd-Dienst beruhigen. Einige der Abschnitte waren ziemlich lang und konnten nicht durch Einstellen der Detailstufe gesteuert werden.

Es ist keine ideale Lösung, aber ich habe den sshd außer Kraft gesetzt Skript indem du es von hier kopierst: /usr/share/logwatch/scripts/services/sshd bis hierhin: /etc/logwatch/scripts/services/sshd

Natürlich müssen Sie jetzt mit allen Aktualisierungen dieser Skriptdatei fortfahren, aber Sie können sehr genau steuern, was ausgegeben wird. Alternativ könnten Sie die Ausgabe von logwatch durch ein Werkzeug wie awk oder sed um zu strippen, was du nicht willst, aber das schien mir härter.


0
2018-02-06 21:12