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

Fondateur d'IT-Connect.fr et d'Information-security.fr. Auditeur sécurité chez Amossys.

    mickael has 478 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.