Mise en place d’une solution d’analyse des logs : SARG

I. Présentation

Dans ce tutoriel, nous allons apprendre à mettre en place un analyseur de logs qui travail avec Squid. Pour faire ce tutoriel, il faut que vous ayez un proxy Squid opérationnel, je vous conseille donc ce tutoriel si ce n'est pas le cas : Mise en place d'un proxy Squid.

II. Qu'est ce que l'analyse des logs ?

Les logs sont les fichiers ( textes ) créés par les proxy qui y listent et répertorient le comportement des utilisateurs du réseau. Les flux du réseau local vers internet sont donc tous capturés et inscrits dans un ou plusieurs fichiers de logs. Ces fichiers contiennent plusieurs milliers de lignes et un nombre immense d'informations. En voici un exemple :

sarg1

Nous voyons bien que la lecture de ces lignes est complexe. Dans une entreprise ou un organisme de plusieurs centaine de postes. Un fichier de logs peut atteindre plusieurs centaines de Mo en quelque jours.

Pour faciliter la consultation et le traitement de ces informations, des logiciels d'analyses de logs on été mis en place. SARG est l'un des analyseurs de logs les plus efficace et les plus précis pour les solutions libres sous GNU/Linux.

Voici un schéma de l'environnement et du fonctionnement de l'analyse de logs.

sarg2

Les clients vont donc sur Internet en passant par le serveur Proxy. Celui-ci met en sauvegarde les requêtes des clients et les stockes dans le fichiers de logs. SARG vient ensuite lire ces fichiers de logs pour créer des tableaux et des statistiques plus simples et plus claires pour les administrateurs.

III. Installation

Pour facilité la mise en place et le fonctionnement de SARG, il est préférable de l'installer sur le serveur faisant tourner SQUID.

apt-get update
apt-get install sarg apache2

IV. Configuration basique

Le fichier de configuration se situe dans "/etc/sarg/".

Assurez vous que le chemin vers le fichier de logs de Squid est le bon soit "/var/log/squid/acces.log".

Dé-commentez les lignes qui permettront l'affichage de graphiques :

graphs yes
graph_days_bytes_color orange

Changez la ligne 377 en UTF-8 qui est le type de caractère utilisé.

Vous pouvez dés à présent lancer une analyse des fichiers de logs avec SARG. Le fichier exécutable se trouve dans "/usr/bin"

/usr/bin/sarg

Par défaut, les analyses ne sont pas directement consultables via interface graphique. Il faut donc faire un lien symbolique entre le dossier ou ils sont déposés et le dossier "/var/www/" :

ln -s /var/lib/sarg/ /var/www

Pour automatiser nativement cette tâche, modifiez la ligne output_dir dans /etc/sarg/sarg.conf et mettez y le chemin vers le dossier voulu.

Regardez votre analyse en consultant : http://[IPServeurProxy]/sarg/

Voici un aperçu de ce que vous pourrez y voir :

sarg3

sarg4

sarg5

Ici, le fichier de logs à donc été lu et interprété par SARG qui a généré des tableaux et statistiques sur les connexions.

Réaliser une analyse sur une période donnée :

Afin d'avoir une analyse plus claire et rapide à lire. Il est possible de réaliser des analyses sur plusieurs plages temporelles. Ici, nous prendrons une plage hebdomadaire.

Pour faire une analyse allant du 6 au 12 février 2012 :

/usr/bin/sarg -d "06/02/2012-12/02/2012"

V. Automatisation des analyses :

Afin de rendre automatique l'exécution des analyses de logs sur le serveur. Il est possible de créer un script qui sera ensuite automatisé par crontab :

#!/bin/bash
LOG_FILES= if [ -s /var/log/squid/access.log.1 ]; then
LOG_FILES="$LOG_FILES -l /var/log/squid/access.log.1"
fi
if [ -s /var/log/squid/access.log ]; then
LOG_FILES="$LOG_FILES -l /var/log/squid/access.log"
fi
#Prendre le premier jour de la journée
# numéro du jours NUMDAY=$(date --date "6 day ago" +%u)
#Fait la différence avec lundi
DIFFSTART=`expr 5 + $NUMDAY`
DIFFEND=`expr $DIFFSTART - 6 `
#Prend le premier et dernier jour de la semaine au format jj/mm/AAAA (format d’envoi à l’exécution)
FIRSTDAYINWEEK=$(date --date "$DIFFSTART day ago" +%d/%m/%Y)
LASTDAYINWEEK=$(date --date "$DIFFEND day ago" +%d/%m/%Y)
# Création de l’intervalle utilisé pour délimiter le rapport
INTERVAL=$FIRSTDAYINWEEK-$LASTDAYINWEEK SARG_DIR=’/usr/local/bin’
# On définit le chemin vers l’exécutable SARG
#Exécution de sarg
# $LOG_FILES = Chemin vers les fichiers de log
# -d Interval de temporel de l’analyse
/usr/sarg $LOG_FILES -d $INTERVAL ;
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur en sécurité des systèmes d'information chez Amossys

mickael has 502 posts and counting.See all posts by mickael

7 pensées sur “Mise en place d’une solution d’analyse des logs : SARG

  • Bonjour,
    J’ai suivi votre tuto pour installer sarg ça marche impec avec le squid. Mais par contre je n’arrive pas à rajouter les logs pour squidguard j’ai l’impression que mes logs de squidguard ne sont pas au bon format.

    Voici le message d’erreur quand je fais un sarg -x :
    SARG: Line= »01/01/1970 01:00:14 [2459] – »
    SARG: Record= »http://www.mangas.fr/favicon.ico Request(test/manga/-) 15:12:36 «  » »
    SARG: searching for ‘x9’
    SARG: getword backtrace:
    SARG: 1:sarg() [0x4091c7]
    SARG: 2:sarg() [0x409a68]
    SARG: 3:sarg() [0x40e723]
    SARG: 4:sarg() [0x4081b7]
    SARG: 5:/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f72ae44376d]
    SARG: Il y a un enregistrement erroné ou inattendu dans le fichier /tmp/sarg/get.log

    Voici mon fichier manga.log :
    2014-03-14 15:12:36 [2459] Request(test/manga/-) http://www.mangas.fr/ 192.168.0.10/- – GET REDIRECT
    2014-03-14 15:12:36 [2459] Request(test/manga/-) http://www.mangas.fr/favicon.ico 192.168.0.10/- – GET REDIRECT
    2014-03-14 15:12:39 [2459] Request(test/manga/-) http://www.manga-news.com/ 192.168.0.10/- – GET REDIRECT
    2014-03-14 15:12:39 [2459] Request(test/manga/-) http://www.manga-news.com/favicon.ico 192.168.0.10/- – GET REDIRECT
    2014-03-14 15:12:41 [2459] Request(test/manga/-) http://www.manga-sanctuary.com/ 192.168.0.10/- – GET REDIRECT
    2014-03-14 15:12:41 [2459] Request(test/manga/-) http://www.manga-sanctuary.com/favicon.ico 192.168.0.10/- – GET REDIRECT
    2014-03-14 15:12:50 [2459] Request(test/manga/-) http://www.mangaluxe.com/ 192.168.0.10/- – GET REDIRECT

    Auriez vous une idée du problème ?
    Merci d’avance
    Laurent

    Répondre
  • Salut.

    En ce qui concerne l’automatisation, pour ma part j’ai créer 3 scripts pour avoir des rapport journalier / semestriel / mensuel.

    Dans /usr/sbin:
    fichier sarg-daily-report:

    TODAY=$(date +%d/%m/%Y)
    YESTERDAY=$(date –date ‘1 day ago’ +%d/%m/%Y)
    sarg /var/log/squid/access.log -o /var/www/squid-reports/daily -z -d $YESTERDAY-$TODAY
    exit 0

    fichier sarg-weekly-report:

    TODAY=$(date +%d/%m/%Y)
    STARTWEEK=$(date –date ‘1 week ago’ +%d/%m/%Y)
    sarg /var/log/squid/access.log -o /var/www/squid-reports/weekly -z -d $STARTWEEK-$TODAY
    exit 0

    fichier sarg-monthly-report:

    TODAY=$(date +%d/%m/%Y)
    STARTMONTH=$(date –date ‘1 month ago’ +%d/%m/%Y)
    sarg /var/log/squid/access.log -o /var/www/squid-reports/monthly -z -d $STARTMONTH-$TODAY
    exit 0

    et balancer tout ca dans crontab de root:

    #crontab -e:

    0 0 * * * /usr/sbin/sarg-daily-report
    0 1 * * 1 /usr/sbin/sarg-weekly-report
    3 2 1 * * /usr/sbin/sarg-monthly-report

    Petite modification du fichier index.html dans /var/www/squid-reports/ (je met juste la partie body, le reste ne change pas)

    #nano /var/www/squid-reports/index.html

    <img src="./images/sarg.png" title="SARG, Squid Analysis Report Generator"
    Squid User Access Report

    FICHIER/PERIODE
    Rapport journalier
    Rapport Hebdomadaire
    Rapport Mensuel

    ITPPA

    Profiter en pour faire vos modifications /personnalisation a vous (genre changer le logo ou la phrase du bas).
    CTRL+x -> Y pour sauvegarder
    et le tour est jouer, il vous suffit d’accéder a cette page:
    http:///squid-reports/

    et vous devriez avoir une page comme ceci:

    ATTENTION, ceci implique que vous devez faire un rotation du log /var/log/squid/acces.log mensuellement et APRES la génération du rapport mensuel, sinon les rapport ne seront pas complet

    pour cela, modifier (ou creer) le fichier /etc/logrotate.d/squid comme suis:

    /var/log/squid/*.log {
    compress
    delaycompress
    missingok
    nocreate
    sharedscripts
    postrotate
    test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
    endscript
    monthly
    }

    Y’a moyen d’améliorer tout ca, comme par exemple faire qu’un seul script en passant une variable en paramètre, et modifier la variable dans les taches cron, j’avais fait ca il y a quelque année et je ne me suis jamais pencher sur l’amélioration, ca fait plus d’un ans que ca marche comme ca et j’en suis satisfais.

    ITPPA

    Répondre
  • Bonjour,

    Je tiens avant tout à te remercier de ton tuto.
    Super intéressant. Je suis novice et j’ai quelques questions:
    1- En mettant en place ta solution, j’ai eu ce message d’erreur en éxecutant /usr/bin/sarg:
    >>>SARG: (grepday) Fichier de police /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf pas trouvé

    2- Y a-t-il un moyen de mettre en place un mode recherche pour plus affiner des analyses.?

    Répondre
  • Salut,

    Un grand merci pour ce tuto clair qui m’a permis de mettre en place SARG.
    Par contre, lorsque je lance sarg -x je reste sans cesse sur la période 01Jan1970-01Jan1970
    Si je lance sarg -x -d « 28/08/2017 », j’ai le résultat SARG: SARG version: 2.3.10 Apr-12-2015

    SARG: Loading user table from LDAP
    SARG: Reading access log file: /var/log/squid/access.log
    SARG: Records read: 54387, written: 0, excluded: 0
    SARG: Squid log format
    SARG: No records found
    SARG: End

    Pour autant, le fichier access.log contient bien toutes les url des sites visités.

    Une idée ?

    Répondre
    • Hello

      Solution trouvée : logformat dans la conf de squid qui ne doit pas être modifiée pour que SARG puisse les lire.
      Par contre ma colonne « accessed sites » me renvoi les valeurs « GET », « CONNECT », « HEAD ».
      Dans l’access.log ce sont des valeurs qui précèdent l’URL des sites qui devraient apparaître dans « accessed sites ».
      Une idée ? 😉

      Répondre
  • Bonjour,

    Merci pour votre tuto.
    J’ai bien suivi la procédure jusqu’à l’obtention de l’interface SARG, squid user access report.
    Mais lorsque je clique sur les options Top sites, sites et users, denied accesses, je reçoit successivement les messages d’erreurs suivantes:
    – The request url / squid-reports /2017sept27-2017sept27/topsites.html was not found on this server.
    – The request url / squid-reports /2017sept27-2017sept27/siteuser.html was not found on this server.
    – The request url / squid-reports /2017sept27-2017sept27/denied.html was not found on this server.

    J’ai l’impression qu’il reste une dernière configuration à faire .

    Merci pour votre aide

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.