Lösung 1:
Insgesamt fehlt es der verfügbaren Dokumentation zu Logwatch an ausreichender Erklärung und sie ist oft viel zu vage. Ich habe einige nützliche Beispiele zusammengestellt und das Logwatch-Rauschen um über 95 % reduziert.
Hier ist, was ich gefunden habe.
Denken Sie daran, dass Sie einige Logwatch-Dokumentationen unter /usr/share/doc/logwatch-*/HOWTO-Customize-LogWatch
finden können , und es enthält einige nützliche Beispiele.
-
Unter RHEL/CentOS/SL befindet sich die Standard-Logwatch-Konfiguration unter
/usr/share/logwatch/default.conf/logwatch.conf
Diese Einstellungen können außer Kraft gesetzt werden, indem Sie Ihre lokale Konfiguration unter
/etc/logwatch/conf/logwatch.conf
platzieren . 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"
-
Manchmal möchte ich Logwatch für einen bestimmten Dienst nicht vollständig deaktivieren, ich möchte nur die Ergebnisse 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/etc/logwatch/conf/services/$SERVICE.conf
platzieren . Leider ist die Fähigkeit von logwatch hier begrenzt, und viele der ausführbaren Dateien von logwatch sind voll von undokumentiertem Perl. Sie haben die Wahl, die ausführbare Datei durch etwas anderes zu ersetzen oder zu versuchen, einige Einstellungen mit/etc/logwatch/conf/services
zu überschreiben .Zum Beispiel habe ich einen Sicherheitsscanner, der Scans im gesamten Netzwerk durchführt. Während der Tests generiert der Sicherheitsscanner viele Fehlermeldungen in den Anwendungsprotokollen. Ich möchte, dass Logwatch Fehler meiner Sicherheitsscanner ignoriert, mich aber trotzdem über Angriffe von anderen Hosts benachrichtigt. Dies wird ausführlicher unter Logwatch behandelt:Bestimmte IPs für SSH- und PAM-Prüfungen ignorieren?. Dazu platziere 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.*
"
-
logwatch ermöglicht es Ihnen auch, die Ausgabe der logwatch-E-Mails zu entfernen, indem Sie reguläre Ausdrücke in
/etc/logwatch/conf/ignore.conf
platzieren . HOWTO-Customize-LogWatch sagt:ignore.conf:Diese Datei spezifiziert reguläre Ausdrücke, die, wenn sie mit der Ausgabe von logwatch übereinstimmen, die übereinstimmende Zeile unterdrücken, unabhängig davon, welcher Dienst ausgeführt wird.
Allerdings hatte ich damit wenig Glück. Meine Anforderungen erfordern eine bedingte Anweisung, die so etwas wie „Wenn es Sicherheitswarnungen aufgrund meines Sicherheitsscanners gibt, dann drucke die Ausgabe nicht. Aber wenn es Sicherheitswarnungen von meinem Sicherheitsscanner gibt und von einigen Bösewichten, dann drucken Sie die nützlichen Teile aus -- Die Kopfzeile, die sagt "Fehlgeschlagene Anmeldungen von:", die IPs der bösen Hosts, aber nicht die IPs von Scannern.'
-
Nippen Sie es an der Quelle (wie von @user48838 vorgeschlagen). Diese Meldungen werden von einer Anwendung generiert, und Logwatch gibt Ihnen die Ergebnisse dann 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 irgendwohin gesendet werden (an einen zentralen Syslog-Server, zentralen IDS-Server, Splunk, Nagios usw.), aber Sie möchten nicht, dass Logwatch Sie darüber per E-Mail informiert jeden Server, jeden Tag.
Lösung 2:
Ja - logwatch ist oft zu laut. Sie haben bereits das vollständige Deaktivieren von Überprüfungen erwähnt.
Wenn Sie das nicht möchten, müssen Sie verhindern, dass bestimmte Ereignisse erscheinen. Zum Beispiel - es ist nicht interessant, wenn sich Nagios über ssh mit einem DMZ-System verbindet. Aber es ist interessant, wenn es andere Anmeldungen über ssh gibt.
Wir verwenden rsyslog anstelle von ksyslogd (installieren Sie zuerst rsyslog, entfernen Sie dann ksyslogd). Mit rsyslog können Sie feinabstimmen, was in die Protokolle geht und was nicht (z. Auf diese Weise wird logwatch nur nützliche Informationen melden.
Ein anderer Fall könnte xinetd sein - ich möchte nicht über erfolgreiche Verbindungen informiert werden - dies kann in xinetd selbst konfiguriert werden - ohne den Logwatch-Check für xinetd zu deaktivieren.
Lösung 3:
Als interessanter Punkt habe ich Option 2 aus der Antwort von Stefan Lasiewski befolgt, aber für meine Zwecke wollte ich nur bestimmte Zeilen einbeziehen, anstatt all das Rauschen auszuschließen, das ich nicht wollte.
Ich habe vsftpd konfiguriert, also habe ich /etc/logwatch/conf/services/vsftpd.conf
erstellt und statt so etwas wie *Remove = testuser
zu verwenden wodurch Zeilen entfernt werden, die den Text testuser
enthalten Ich habe die Zeile *OnlyContains = "testuser"
verwendet die nur Zeilen zurückgibt, die diesen Text enthalten.
Diese 2 Skripte funktionieren sehr einfach, indem sie grep
verwenden und grep -v
.
Der Unterschied besteht darin, dass Sie *Remove
verwenden können beliebig oft, aber mit *OnlyContains
Sie müssen es einmal verwenden, wenn Sie etwas oder etwas anderes oder etwas anderes wollen. Für mehrere Werte machen Sie also *OnlyContains = "testuser|testuser2|testuser3"