Surveiller un service avec Logwatch, le SIEM du pauvre
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 :
conf/services
: Définit les options du serviceconf/logfiles
: Définit les fichiers de logs à consulterscripts/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.