LogWatch
logwatch est un analyseur de log. Exécuté chaque jour, il envoie par courriel un bilan des logs de la machine. Cela présente un interêt "global", mais ne permet pas vraiment de suivre la vie de son serveur en détail, juste d'avoir une vue d'ensemble.
LogCheck
logcheck est complement indispensable si on veut vraiment suivre ses serveurs.
Le principe de base est le suivant : il analyse tous les nouveaux logs depuis son dernier lancement. Il fait le tri dans les lignes de log, en retirant toutes les lignes "habituelles" (il faut configurer et adapter cela). Il envoie alors le résultat de ce tri par mail.
logcheck est donc assez complexe à mettre en place (au début) car il fonctionne sur le principe de "on notifie tout ce qui n'est pas habituel". Il faut donc réflechir à la notion "d'habituel".
Cependant, au fur et à mesure de l'écriture des règles de filtrage, on apprend a bien connaitre les particularités de son système. Logcheck est donc un outil utile à double titre.
Installation de logcheck
Comme d'habitude : aptitude install logcheck
Attention : logcheck nécessite un MTA (agent de tranport de messagerie) car il doit envoyer des messages. Nous vous conseillons d'installer d'abord votre serveur de messagerie (Postfix de préférence, ou Exim sur une machine non dédiée au mail).
Configuration de base
La configuration de base se situe dans /etc/logcheck/logcheck.conf. On doit notamment y indiquer l'adresse de destination des messages du type SENDMAILTO=root@quelquepart.org. Il faut aussi configurer le niveau d'alerte qu'on veut détecter : le mode "server" proposé par défaut est une bonne base de départ (Jérôme t'es d'accord ?) : REPORTLEVEL="server".
Ensuite il faut donner la liste des fichiers à surveiller dans /etc/logcheck/logcheck.logfiles.
Enfin on peut éventuellement adapter la fréquence de lancement de logcheck dans /etc/cron.d/logcheck. Par défaut logcheck est lancé une fois par heure ainsi qu'à chaque redémarrage.
Les filtres
Les filtres sont des expressions rationnelles (regular expressions ou regex). Ils sont placés dans des fichiers, classés dans des sous-répertoires de /etc/logcheck. Un répertoire par fonction :
cracking.d : contient les filtres indiquant les erreurs graves à rapporter. Son petit frère cracking.d.ignore permet de supprimer les faux positifs : on y indique les erreurs qui n'en sont pas.
violations.d : même chose, mais avec les erreurs "classiques".
ignore.d.server : les filtres caractérisant toutes les lignes de logs à ignorer. C'est dans ce répertoire que quasiment tout se passe !
S'adapter au fur et à mesure : ajouter des filtres
Une fois que logcheck est installé, il va commencer à envoyer des tas de messages par mail (un par heure, contenant des logs qui ne sont pas forcément des erreurs).
Il faut déterminer quelles sont les lignes de logs qui ne sont pas des problèmes, et ajouter des filtres dans ignore.d concernant ces règles.
Ces filtres étant des expressions rationnelles, il faut un peu maîtriser le sujet : http://fr.wikipedia.org/wiki/Expression_rationnelle
Quelques idées :
- faites en sorte de définir une expression rationnelle la plus restrictive possible : il ne faut pas qu'une expression trop laxiste fasse que logcheck ignore tout un ensemble de lignes de log. Il ne doit ignorer que les lignes que vous avez repérées.
utiliser les options -t et -o pour voir si vos filtres fonctionnent : # sudo -u logcheck logcheck -to
- inspirez-vous des filtres déjà existants
- demandez à la liste de discussion tech@ quand vous avez un doute : il faut vraiment éviter les faux positifs (ignorer une ligne de log qui représentait une anomalie).
Quelques exemples de filtres
Allez, à toi Jérôme !