Bonjour à tous Voici un petit bout de code que j'ai créé et qui pourrait vous être utile.
J'aime bien regarder mes fichiers de logs régulièrement. Malheureusement, le nombre de messages concernant les paquets bloqués est devenu énorme et ennuyant (surtout depuis l'apparition du virus Blaster). J'utilise donc logcheck pour faire la synthèse de mes fichiers de logs. Il m'envoie un courriel chaque matin. J'ai trouvé logcheck sur mes CD de MDK8.2 (prosuite). Prière de ne pas m'informer qu'il en existe des meilleurs. J'aurais pu, tout simplement, configurer logcheck pour filtrer les messages DROP mais, par intérêt personnel, j'étais intéressé à connaître leur nombre. J'ai donc modifié logcheck (un script Bash) pour y ajouter une fonction de comptage facilement configurable. Voici donc ce que j'ai créé: Les règles de comptage sont définies dans un fichier dont voici un exemple: #Lignes pour lesquelles on veut un compteur # syntaxe: nom : règle # le : est le séparateur # le nom ne doit pas contenir le caractère : # la règle peut en contenir # un commentaire est une ligne débutant par # (en colonne 1) # une ligne vide n'a pas d'effet # la règle peut être vide. Cela retournera le nombre de lignes analysées. gShield (default drop): gShield.*default drop gShield (INVALID drop): gShield.*INVALID drop Nombre de lignes analysées: Vous aurez compris que j'ai utilisé gShield pour configurer mon firewall. Si j'en change, je pourrai facilement modifier ce fichier de configuration. Sommairement, ce fichier contient des commentaires et des lignes de configuration. Chacune des lignes de configuration contient un texte (nom du compteur) qui sera affiché dans le rapport, puis une règle grep. Un caractère : sépare le nom de sa règle. Pour ceux qui ne sont pas familiers avec les règles grep, la séquence .* signifie toute chaine de caractère. Puis j'ai créé un script de test #!/bin/sh if [ -s compteurs ]; then EX_IFS="$IFS" IFS=: while read NOM REGLE; do # ne pas traiter les lignes vides et celles commençant par # if [ -z "${NOM###*}" ]; then continue; fi N=`grep -c "$REGLE" /var/log/syslog` if [ $N -gt 0 ]; then echo $NOM: $N fi done < compteurs IFS=$EX_IFS unset EX_IFS fi Après l'avoir testé, je l'ai intégré dans logcheck (vers la ligne 266), comme ceci: COMPTEURS=/etc/logcheck/compteurs # note: les lignes qu'on veut compter seront généralement aussi définies dans # le fichier $IGNOREFILE if [ -s "$COMPTEURS" ]; then echo >> $TMPDIR/checkreport.$$ echo "Compteurs non-nuls" >> $TMPDIR/checkreport.$$ echo "=-=-=-=-=-=-=-=-=-=-=" >> $TMPDIR/checkreport.$$ EX_IFS="$IFS" IFS=: while read NOM REGLE; do # ne pas traiter les lignes vides et celles commençant par # if [ -z "${NOM###*}" ]; then continue; fi N=`$GREP -c "$REGLE" $TMPDIR/check.$$` if [ $N -gt 0 ]; then echo $NOM: $N >> $TMPDIR/checkreport.$$ fi done < $COMPTEURS IFS=$EX_IFS unset EX_IFS fi Puis j'ai configuré logcheck pour qu'il n'inclue pas les lignes DROP dans son rapport. J'ai ajouté la ligne qui suit dans /etc/logcheck/ignore: gShield.*drop Les résultats sont excellents. Environ 4000 lignes se sont éliminées du rapport quotidien mais mes compteurs continuent de m'informer de l'état d'agressivité de la jungle Internet. Note: logcheck utilise un programme (inclus) nommé logtail qui a la particularité de "marquer" les fichiers de logs pour ensuite ne ressortir que les données récentes. Il peut donc fonctionner avec les logs qui ne sont pas archivés tous les jours. Vos commentaires sont les bienvenus. Vivent les logiciels ouverts. Gilles
Vous souhaitez acquerir votre Pack ou des Services MandrakeSoft? Rendez-vous sur "http://www.mandrakestore.com"