Solution 1 :
Dans l'ensemble, la documentation disponible pour Logwatch manque d'explications adéquates et est souvent beaucoup trop vague. J'ai reconstitué quelques exemples utiles et j'ai réduit le bruit Logwatch de plus de 95 %.
Voici ce que j'ai trouvé.
Gardez à l'esprit que vous pouvez trouver de la documentation Logwatch sur /usr/share/doc/logwatch-*/HOWTO-Customize-LogWatch
, et il contient quelques exemples utiles.
-
Sur RHEL/CentOS/SL, la configuration logwatch par défaut est sous
/usr/share/logwatch/default.conf/logwatch.conf
Ces paramètres peuvent être remplacés en plaçant votre configuration locale sous
/etc/logwatch/conf/logwatch.conf
. Placez ce qui suit dans ce fichier pour indiquer à logwatch d'ignorer complètement les services tels que "httpd" et les vérifications quotidiennes de l'utilisation du disque :# Don't spam about the following Services Service = "-http" Service = "-zz-disk_space"
-
Parfois, je ne veux pas désactiver complètement logwatch pour un service spécifique, je veux juste affiner les résultats pour les rendre moins bruyants.
/usr/share/logwatch/default.conf/services/*.conf
contient la configuration par défaut des services. Ces paramètres peuvent être remplacés en plaçant votre configuration locale sous/etc/logwatch/conf/services/$SERVICE.conf
. Malheureusement, la capacité de logwatch ici est limitée, et de nombreux exécutables de logwatch sont remplis de Perl non documenté. Votre choix est de remplacer l'exécutable par autre chose ou d'essayer de remplacer certains paramètres à l'aide de/etc/logwatch/conf/services
.Par exemple, j'ai un scanner de sécurité qui exécute des analyses sur le réseau. Lors de l'exécution des tests, l'analyseur de sécurité génère de nombreux messages d'erreur dans les journaux d'application. J'aimerais que logwatch ignore les erreurs de mes scanners de sécurité, mais me prévienne quand même des attaques d'autres hôtes. Ceci est couvert plus en détail dans Logwatch :Ignorer certaines adresses IP pour les vérifications SSH et PAM ?. Pour ce faire, je place ce qui suit sous
/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 vous permet également de supprimer la sortie des e-mails logwatch en plaçant des expressions régulières dans
/etc/logwatch/conf/ignore.conf
. HOWTO-Personnaliser-LogWatch dit :ignore.conf :ce fichier spécifie des expressions régulières qui, lorsqu'elles correspondent à la sortie de logwatch, suppriment la ligne correspondante, quel que soit le service en cours d'exécution.
Cependant, je n'ai pas eu beaucoup de chance avec cela. Mes exigences nécessitent une instruction conditionnelle, qui ressemble à quelque chose comme "S'il y a des avertissements de sécurité dus à mon scanner de sécurité, alors n'imprimez pas la sortie. Mais s'il y a des avertissements de sécurité de mon scanner de sécurité et de certains méchants, puis imprimez les parties utiles-- L'en-tête qui dit "Échec des connexions de :", les IP des mauvais hôtes, mais pas les IP des scanners.'
-
Pincez-le à la source (comme suggéré par @ user48838). Ces messages sont générés par une application, puis Logwatch vous envoie joyeusement les résultats. Dans ces cas, vous pouvez modifier l'application pour vous connecter moins.
Ce n'est pas toujours souhaitable, car parfois vous voulez que les journaux complets soient envoyés quelque part (vers un serveur syslog central, un serveur IDS central, Splunk, Nagios, etc.), mais vous ne voulez pas que logwatch vous envoie un e-mail à ce sujet depuis chaque serveur, chaque jour.
Solution 2 :
Oui - logwatch est souvent trop bruyant. Vous avez déjà mentionné la désactivation complète des vérifications.
Si vous ne voulez pas faire cela, vous devez empêcher certains événements d'apparaître. Par exemple - ce n'est pas intéressant si nagios se connecte via ssh à un système DMZ. Mais c'est intéressant s'il y a d'autres connexions via ssh.
Nous utilisons rsyslog au lieu de ksyslogd (installez d'abord rsyslog, puis supprimez ksyslogd). Avec rsyslog, vous pouvez affiner ce qui va dans les journaux et ce qui ne l'est pas (par exemple, créez une expression qui supprime les messages de sshd contenant "nagios connecté"). De cette façon, logwatch ne rapportera que des informations utiles.
Un autre cas pourrait être xinetd - je ne veux pas être informé des connexions réussies - cela peut être configuré dans xinetd lui-même - sans désactiver le contrôle de journalisation pour xinetd.
Solution 3 :
Comme point d'intérêt, j'ai suivi l'option 2 de la réponse de Stefan Lasiewski, mais pour mes besoins, je voulais n'inclure que des lignes spécifiques plutôt que d'exclure tout le bruit que je ne voulais pas.
Je configurais vsftpd donc j'ai créé /etc/logwatch/conf/services/vsftpd.conf
et au lieu d'utiliser quelque chose comme *Remove = testuser
qui supprime les lignes contenant le texte testuser
J'ai utilisé la ligne *OnlyContains = "testuser"
qui ne renvoie que les lignes contenant ce texte.
Ces 2 scripts fonctionnent de manière très basique en utilisant grep
et grep -v
.
La différence étant que vous pouvez utiliser *Remove
autant de fois que vous voulez mais avec *OnlyContains
vous devez l'utiliser une fois si vous voulez quelque chose ou autre chose ou autre chose. Donc, pour plusieurs valeurs, vous faites *OnlyContains = "testuser|testuser2|testuser3"