Monitoring réseauSquidAnalyzer est un outil de statistiques extrêmement pratique qui permet d’analyser en un coup d’œil l’ensemble du trafic web d’un réseau. On a donc facilement accès à des informations comme les URLs visitées, les sites les plus populaires, les sites et/ou les utilisateurs les plus « gourmands », et autres choses encore.

Prérequis

SquidAnalyzer utilise les fichiers logs du serveur proxy Squid, qui doit donc être configuré correctement. Pour les détails, allez voir les deux articles qui expliquent en détail la configuration de Squid comme proxy cache HTTP transparent et la gestion des connexions HTTPS.

Les résultats de SquidAnalyzer sont disponibles sous forme de pages HTML assez joliment présentées, avec des tableaux et des graphismes. Il faut donc disposer d’un serveur Web fonctionnel sur la machine avec un hôte virtuel.

Installation

Le développeur de SquidAnalyzer met à disposition un dépôt de paquets compatible avec Red Hat Enterprise Linux 8 et Rocky Linux 8. Voici les instructions détaillées pour la mise en place de ce dépôt :

Une fois qu’on a importé la clé GPG et qu’on a activé le dépôt, il ne reste qu’à installer le paquet :

# dnf install -y squidanalyzer

ImportantLe mainteneur du projet semble avoir oublié un paquet Perl dans la liste des dépendances. On va donc rectifier le tir ici :

# dnf install -y perl-Time-HiRes

Configuration de l’hôte virtuel

Mon proxy Squid est installé sur la machine proxy.microlinux.lan. Je vais mettre en place un hôte virtuel squidreport.proxy.microlinux.lan qui pointe vers le répertoire /var/www/squidanalyzer.

AstuceLe proxy se charge également de la configuration DNS locale avec Dnsmasq. L’astuce consiste ici à utiliser les sous-domaines Dnsmasq pour définir notre nouvel hôte :

# /etc/dnsmasq.conf
domain-needed
bogus-priv
interface=enp2s0
dhcp-range=192.168.2.100,192.168.2.200,24h
local=/microlinux.lan/
domain=microlinux.lan
expand-hosts
server=208.67.222.222
server=208.67.220.220
no-resolv
log-facility=/var/log/dnsmasq.log
address=/proxy.microlinux.lan/192.168.2.1
dhcp-host=D4:85:64:B2:B2:1B,alphamule,192.168.2.2
dhcp-host=B0:83:FE:90:4D:64,sandbox,192.168.2.3
dhcp-host=68:54:5A:B2:D0:81,dell-xps,192.168.2.4
dhcp-host=D0:37:45:24:61:BD,gustave,192.168.2.5
dhcp-host=00:22:64:8A:4C:C2,nestor,192.168.2.250
dhcp-host=10:62:E5:D4:95:60,hp-officejet,192.168.2.252
dhcp-host=00:11:32:26:63:A5,nas,192.168.2.253

Ensuite, je crée un fichier /etc/httpd/conf.d/10-squidreport.proxy.conf qui contient la configuration de l’hôte virtuel :

# /etc/httpd/conf.d/10-squidreport.proxy.conf
#
# squidreport.proxy.microlinux.lan

<VirtualHost *:80>
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/squidanalyzer"
  <Directory "/var/www/squidanalyzer">
    Options -Indexes +FollowSymlinks +MultiViews
    AllowOverride None
  </Directory>
  ServerName squidreport.proxy.microlinux.lan
  ServerAlias squidreport.proxy
  ErrorLog logs/squidreport.proxy-error_log
  CustomLog logs/squidreport.proxy-access_log common
</VirtualHost>

Configuration de SquidAnalyzer

SquidAnalyzer se configure par le biais du fichier de configuration /etc/squidanalyzer/squidanalyzer.conf, que l’on adaptera à nos besoins. La configuration par défaut est déjà raisonnablement fonctionnelle, et il suffira de modifier quelques directives :

# /etc/squidanalyzer/squidanalyzer.conf
Output  /var/www/squidanalyzer
WebUrl  /
LogFile /var/log/squid/access.log
UseClientDNSName  0
DNSLookupTimeout  0.0001
...
Lang  /etc/squidanalyzer/lang/fr_FR.txt
...
TransfertUnit GB
...
Locale fr_FR
...

Premier essai

Dans la configuration actuelle, SquidAnalyzer utilise le fichier /var/log/squid/access.log pour générer les rapports. Il faut donc que l’on ait quelque chose à se mettre sous la dent, autrement dit, vérifiez si le fichier n’est pas vide. Les pages du rapport en elles-mêmes sont générées par le script Perl squid-analyzer.

# which squid-analyzer
/usr/bin/squid-analyzer
# file /usr/bin/squid-analyzer 
/usr/bin/squid-analyzer: Perl script text executable

Lancez le script, qui peut mouliner un certain temps en fonction de la taille du fichier /var/log/squid/access.log et de la puissance de calcul du serveur :

# time squid-analyzer 
...
real    0m8.325s
user    0m7.220s
sys     0m0.967s

Vérifiez si le rapport a été généré correctement :

# tree /var/www/squidanalyzer/
/var/www/squidanalyzer/
├── 2024
│   ├── 03
│   │   ├── 09
│   │   │   ├── denied.html
│   │   │   ├── domain.html
│   │   │   ├── index.html
│   │   │   ├── mime_type.html
│   │   │   ├── network.html
│   │   │   ├── networks
│   │   │   │   └── 192.168.2.0
│   │   │   │       └── 192.168.2.0.html
.............

Affichez les pages dans un navigateur web depuis n’importe quel poste du réseau local. Sur la page d’accueil, cliquez sur Stat <année>, puis sur les infos que vous souhaitez afficher :

  • Réseaux
  • Utilisateurs
  • Top URLs
  • Top domaines
  • etc.

SquidAnalyzer

Définition d’une tâche automatique

À partir de là, on peut définir une tâche automatique (cronjob) pour la génération des rapports. Dans l’exemple qui suit, on va produire un rapport quotidien tous les jours à 13h00. Ce n’est pas une mauvaise idée de programmer cette tâche à l’heure du repas. L’exécution du script est relativement gourmande en ressources, et si le serveur n’est pas très puissant, il peut arriver qu’il soit un peu dur de la feuille pendant quelques minutes.

# crontab -l
# SquidAnalyzer
00 13 * * * /usr/bin/squid-analyzer 1> /dev/null

La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


0 commentaire

Laisser un commentaire

Emplacement de l’avatar

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