Magnifying Glass

Logwatch, est un outil léger sous Linux permettant de remonter des alertes à partir d’une lecture des fichiers de logs.

Ci dessous, vous verrez comment écrire votre propre service logwatch pour remonter des alertes sur des évènements qui vous intéressent vraiment.

La documentation officielle est ici : https://github.com/TheApacheCats/logwatch/blob/master/HOWTO-Customize-LogWatch

Utilisation de base

Par défaut, Logwatch vient avec de nombreux services préconfigurés mais pas forcément adaptés à votre besoin.

Jetez quand même un premier coup d’oeil à ce qu’il a trouvé pour vous depuis hier :

logwatch --service All --range Yesterday --detail Med

Et pour surveiller Exim (qui s’est fait pourrir il y a peu, rappelons-le) : logwatch --service exim

Comment se présente un service

Un service Logwatch est défini par trois fichiers dans /etc/logwatch :

  1. conf/services : Définit les options du service
  2. conf/logfiles : Définit les fichiers de logs à consulter
  3. scripts/services : Un script (Bash, Python, Perl, …) qui prend en entrée les fichiers de logs et qui renvoie en sortie ce que vous voulez en extraire

Créez vos propres services

Nous allons créer un service très simple qui regarde le syslog et qui s’appelle “Eye On SSH” : /etc/logwatch/conf/services/eyeonssh.conf

# Logfile, par défaut cherche dans /var/log
LogFile = syslog
# Toutes les autres commandes sont facultatives
Title = Eye on SSH

Ce service va ensuite être filtré par vos soins avec ce script : /etc/logwatch/scripts/services/eyeonssh

#!/bin/bash
INPUT="$(cat -)"
echo -e "$INPUT" |grep -i "error\|Failed password\|Invalid user"

Dans l’exemple ci-dessous, je reçois en entrée tout le syslog et je renvoie uniquement les lignes contenant les mots “error” ou “Failed password” ou “Invalid user”.

Appeler ce service

Rappelons Logwatch avec ce service :

logwatch --service eyeonssh --output Mail --range Yesterday

Reste à mettre ça dans un cron et on a une remontée régulière d’alertes.