Mise en place d’une blacklist sur Squid

Date: 6/11/2007 | Catégories: Open-source,Reseau,Web | Tags: ,,,

Squid est le plus connu des proxy Web open-source. Une fois installé, un proxy Web permet de filtrer/optimiser/loguer les accès Internet (HTTP ou FTP) issues de votre réseau. Une des fonctions les plus souvent demandée à un administrateur est d'interdire l'accès à certaines catégories de sites (porno, violent, messagerie personnelle...). Squid répond à ce besoin grâce à SquidGuard.

Voici deux schémas fonctionnels expliquant le fonctionnement de SquidGuard:

Squidguard OKSquidGuard NOK

Installation de SquidGuard

Afin de disposer de la dernière version (1.3 au moment de l'écriture de ce billet), il est préférable de compiler SquidGuard depuis les sources. Une fois récupérées, on lance la célèbre séquence:

# tar zxvf squidGuard-1.3.tar.gz
# ./configure
# make
# sudo make install

SquidGuard utilise une base de donnée contenant la liste des sites classées par thèmes. Afin de maintenir cette base à jour, le plus simple est d'écrire un shell script qui sera lancé automatiquement toutes les nuits (par exemple par crontab). Voici un exemple de script (à adapter selon votre configuration):

#!/bin/sh

blacklisturl=ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
blacklistfile=blacklists.tar.gz
blacklistdir=/var/db

echo "Download from $blacklisturl"
fetch -q -o /tmp/$blacklistfile $blacklisturl

if [ -r $gzdir/$rules ]; then
echo "Update the database"
cd $blacklistdir
tar zxvf /tmp/$blacklistfile 2>&1 > /dev/null
chown -R www:www blacklists
cd -
echo "Restart Squid"
squid -k reconfigure
echo "Done..."
exit
fi

J'utilise personnellement une base de donnée mise à disposition sur le serveur FTP de l'université de Toulouse.

Remarque: Il faut lancer ce script avant la première utilisation de SquidGuard.

Configuration de SquidGuard

La configuration se fait via un seul fichier: SquidGuard.conf

Voici un exemple de configuration qui interdit l'accès aux sites pornos:

logdir /usr/local/squid/logs
dbhome /var/db/squidGuard

dest porn {
domainlist porn/domains
urllist porn/urls
}

acl {
default {
pass !porn all
redirect http:/localhost/filtered.html
}
}

Des configurations simples ou plus complexes sont disponibles sur le site officiel.

Configuration de Squid pour utiliser SquidGuard

La dernière étape consiste à configurer Squid pour qu'il utilise le système de filtrage de SquidGuard. C'est là aussi très simple:

# vi squid.conf
...
redirect_program /usr/local/bin/squidGuard -c /usr/local/squid/squidGuard.conf
...
# squid -k reconfigure

Il ne vous reste plus qu'à tester votre tout nouveau système de filtrage en essayant d'accèder à un site interdit (vous pouvez voir la liste dans le fichier /var/db/squidGuard/porn/domains) depuis un navigateur Web configuré pour utiliser votre proxy Squid. Si cela marche vous serez automatiquement redirigé vers la page http://localhost/filtered.html.