sommaire
Squid
+ SquidGuard
Gestion
La configuration de Squid une fois en place n'évolue que peu sauf à vouloir ajouter des plages ips ...
Les Blacklist / Whitelist:
L'ajout d'entrée dans les fichiers "domain" ou "url" entraine une reconstruction du fichier de base de donnes avec via:
/usr/local/squid/bin/squidGuard -C /usr/local/squid/squidGuard/db/"nom de la liste"/domains ou urls => (regénérera le fichiers .db) domains.db ou urls.db
Ces ajouts ne seront pris en compte qu'après avoir relancer Squid
invoke-rc.d squid stop
invoke-rc.d squid start
Exploitation SNMP:
Avec la configuration snmp vu précédement, on peut obtenir un grand
nombre d'informations et cela de plusieurs manières différentes
1/ via l'interface web en allant sur http://proxy.fredaria.org:8080/squid-internal-mgr/info vous aurez ce genre d'informations
2/ via une interrogation direct avec snmpwalk sur les OID
3/ Ou encore avec un logiciel de monitoring de type Cacti
Voici 2 OID utiles:
Le nombre de "File Descriptor": .1.3.6.1.4.1.3495.1.3.1.12.0
Le nombre de clients: .1.3.6.1.4.1.3495.1.3.2.1.15.0
Sarg - Squid Analysis Report Generator: Exploitation graphique des logs via une interface web
Le site du projet: http://sarg.sourceforge.net/
Cette outil permet de contruire une page web avec les statistiques d'utilisation par utilisateur / par site visités ...
La configuration est simple, les options du fichier de configuration les plus importantes sont:
language French
access_log /var/log/squid/access.log # la position du fichier de log de Squid
graphs yes
graph_days_bytes_bar_color orange
title "Statistiques du PROXY"
output_dir /var/www/html/squid/sarg/ # l'endroit ou seront mise les statistiques
date_format e # la date au format européen
lastlog 7 # le nombre de statistique conservées
authfail_report_limit 0
denied_report_limit 0
siteusers_report_limit 100 # le nombre d'utilisateurs affiché pour les sous catégorie de statistique
Il ne reste plus qu'à faire une entrée dans la crontab pour planifié les comptes rendus:
# Stats du proxy
01 5 * * 0 root /usr/bin/sarg
Attention tout de même ce genre d'informations peut prendre
énormément de place en fonction du nombre de clients et du nombre de
statistiques conservées
Pour 100-150 utilisateurs avec un log par semaine conservée 7 semaines cela prend environ: 2,6Go
Et pour 350: 6,4Go
Conservation légale des journaux de log:
En France légalement une entreprise se doit de conserver 1 an de log des outils comme un proxy internet.
Voici un simple script qui permet cela
#!/bin/sh
#
# permet le stockage pendant 52 semaines tournantes des logs du proxy http SQUID
#
# fmontagnat V1 2013-02-25
#
chemin=/var/log/squid
log_legal=/home/squid_legal
cp -f $chemin/access.log $log_legal/access_semaine_$(date '+%V').log
gzip $log_legal/access_semaine_$(date '+%V').log
une entrée dans la crontab permet son lancement hébdomadaire:
# Conservation legale sur 52 semaines des logs du proxy http SQUID
01 6 * * 7 root /root/bin/log_proxy_legal.sh
Observation du traffic en temps réel:
Squidview : http://www.rillion.net/squidview/
Ce soft permet de naviguer en temps réel dans le fichier de log , faire des recherche par mots clés , utilisateurs.
Il permet aussi de faire des classements en fonction des ip , bytes , derniere requetes cela en temps reels ou presque
ce qu'il ne fait pas :
voir en temps reels la bande passante consomée
voir ce qui est en cours de téléchargement mais on peut voir cela une fois le download terminé.
L'accès à une doc en ligne est disponible pas la touche "r"
l'accès à l'aide se fait par la touche "h"
Quelques autres scripts qui facilitent l'exploitation des logs:
copiecache.sh: copie le fichier access.log, le convertit au niveau des dates(convert.perl) pour l'exploiter ensuite via d'autres script
#!/bin/sh
chemin=/home/squid
fichier=access.log
cp /var/log/squid/$fichier $chemin
chown proxyadmin.proxyadmin $chemin/$fichier
cd $chemin
./convert.perl $chemin/$fichier > $chemin/$fichier.txt
rm -f $chemin/$fichier
convert.perl:
#! /usr/bin/perl -p
s/^\d+\.\d+/localtime $&/e;
search.sh: cherche une chaine (1er param: date , ip ...) dans les logs (donné en 2eme param)
#!/bin/sh
fichier_log=$2
echo $1
echo $2
if [ -z $2 ]
then
fichier_log="access.log.1.txt"
fi
grep "$1" $fichier_log > $1.log
ip_date_search.sh: cherche une ip a une date precise dans les logs
#!/bin/sh
ip=$1
date=$2
echo $1
echo $2
./search.sh $1
./search.sh "$2" $1.log