Installation /pré-requis

sudo aptitude install logcheck

 Les NOUVEAUX paquets suivants vont être installés :
 lockfile-progs{a} logcheck logcheck-database{a} logtail{a}

Note logcheck fonctionne aussi avec syslog-summary, ce qui permet d'avoir des fichiers log plus petits et plus lisible et les fonctionnalités de logcheck.

Configuration

La configuration de logcheck passe par 2 fichiers : logcheck.conf et logcheck.logfiles

/etc/logcheck/logcheck.conf

Ce fichier règle le fonctionnement de logcheck :


# le format de la date (envoyés dans le mail)
#DATE="$(date +'%Y-%m-%d %H:%M')"

# Indique si on inclus le contenu de /etc/logcheck/header.txt et 
#/etc/logcheck/footer.txt en haut et en bas de chaque mail d'alerte
#INTRO=1

#Définit le niveau de sécurité a utilisé, si on utilise "paranoid" tous le contenu 
#de {{/etc/logcheck/ignore.d.paranoid/}} sera ignoré.
# Si on utilise "server" tous le contenu de {{/etc/logcheck/ignore.d.paranoid/}} 
#et de {{/etc/logcheck/ignore.d.server/}}
#Si on utilise "workstation" tous le contenu de {{/etc/logcheck/ignore.d.paranoid/}} ;
# {{/etc/logcheck/ignore.d.server/}} et de {{/etc/logcheck/ignore.d.workstation/}} 
REPORTLEVEL="server"

# l'adresse mail ou envoyé les alertes qui peut être une adresse réelle 
#(ou un user du système.)
SENDMAILTO="adressemaildel'admin" 

# Envois les alertes dans le corps du message et non pas en pièce jointe
MAILASATTACH=0

# Utilise le FQDN pour envoyer le mail (utile si on passe par un server mail externe)
FQDN=1

#Indique si il faut montrer l'erreur une fois ou plusieurs 
#(si on laisse a zero on garde l'ordre historique des alertes)
#SORTUNIQ=0

# Indique si il faut ignorer les exceptions contenu dans 
#{{/etc/logcheck/craking.ignore.d/}}. De base ce répertoire est vide 
#SUPPORT_CRACKING_IGNORE=0

# Controls the base directory for rules file location
# This must be an absolute path
#RULEDIR="/etc/logcheck"

#Contrôle si syslog-summary est utilisé sur les fichiers de log
#SYSLOGSUMMARY=0

# Indique les titres a mettre en fonction des niveau d'alertes
#ATTACKSUBJECT="Security Alerts"
#SECURITYSUBJECT="Security Events"
#EVENTSSUBJECT="System Events"

#Indique si il faut mettre le tag [logcheck] dans l'intitulé du mail
ADDTAG="yes"

# Indique quel répertoire temporaire utiliser pour générer le mail 
#(utile en cas de /tmp trop petit)
TMP="/tmp"

/etc/logcheck/logcheck.logfiles

Ce fichier contient les fichiers de log à scanner. Par défaut il n'y a que /var/log/syslog et /var/log/auth.log.

personnellement j'y ai rajouter :

/var/log/apache2/error.log
/var/log/apache2/access.log
/var/log/apache2/other_vhosts_access.log
/var/log/inadyn.log
/var/log/dpkg.log

Utilisation

Logcheck est un outil a utiliser en tache de fond, par défaut une crontab est mise dans /etc/cron.d/logcheck qui lance logcheck toutes les heures.

Si l'on veut tester en temps réel logcheck le plus simple est d'utiliser la commande :

sudo -u logcheck logcheck -o -t

le -o est là pour rediriger la sortie de logcheck vers l'écran, le -t est là pour indiquer que c'est un test (les erreurs seront toujours présentes dans le prochain mail)

les logs affichés par cette commande sont ceux qui ne sont pas connu de logcheck. Généralement des logs d'erreurs (ce qui m'a permis de voir que mon serveur ne pouvait pas mettre son horloge à jour et que le support diskIO de mon agent snmp n'est pas parfait et qu'il faut que je l'en occupe!).

Quelques fois ce sont des logs que logcheck ne connait simplement pas et qui ne sont pas intéressant, par exemple pour apache2, les logs suivants ne sont pas utiles (dans le sens il n'apporte aucune information a part que tout fonctionne normalement). Il faut donc dire à logcheck de les ignorer. Par exemple :

[Sun Oct 12 06:25:05 2008] [notice] Digest: generating secret for digest authentication ...
[Sun Oct 12 06:25:05 2008] [notice] Digest: done
[Sun Oct 12 06:25:05 2008] [notice] Apache/2.2.9 (Debian) PHP/5.2.6-3 with Suhosin-Patch configured -- resuming normal operations

ces lignes peuvent être ignorer par les expressions régulières suivantes:

^\[\w{3} \w{3} [0-9]{2} [ 0-9:]{13}\] \[notice\] Digest:
^\[\w{3} \w{3} [0-9]{2} [ 0-9:]{13}\] \[notice\] Apache\/2.2.9 \(Debian\) PHP\/5.2.6-3 with Suhosin-Patch configured -- resuming normal operations

l'intérêt de la 2eme regexp est assez limité car elle ne validera que la ligne exacte et c'est contre productif de faire une regexp par ligne de code...

Ces expressions régulières doivent être placé dans /etc/logcheck/ignore.d.(paranoid|server|workstation)/"Nom du service". Il est préférable de les mettre dans un fichier local-"nom du service" quand celles ci sont personnel à l'application (de plus si une mise à jour de logcheck est faite les régles officielles risque d'être remplacé).

Note on peut aussi "customiser" le nom de ces règles mais il vaut mieux ne pas utiliser de "." dans le nom.



Liens

le site officiel (avec une bonne doc en anglais)

Un site sur les expressions régulières

Un post de blog sur le sujet