PRINCIPE
SQUID est un serveur proxy très utilisé qui permet de suivre et d’optimer le traffic http d’un réseau accédant à Internet.
Mais pour interdire l’accès à des sites pornos ou pirates, il faut que SQUID soit au courant du contenu illégal du site.
Ce travail d’information est déléguè à SQUIDGUARD, qui à l’instar d’un antivirus possède une base de sites classés par catégories qui est mise à jour par diverses contributions via Internet.
Je ne détaille pas ici la configuration « de base » de SQUID qui dans la plupart des cas est on ne peut plus simple.
Pour que les postes du réseau soient « protégés » il faut bien entendu que les navigateurs des postes clients passent obligatoirement par le proxy. Cela peut être obtenu en paramétrant le proxy dans la configuration du navigateur ou par l’usage d’un proxy transparent.
INSTALLATION
Cette installation nécessitte le dépot DAG contenu dans le paquet freshrpms.
Pour cela, téléchargez le paquet correspondant à votre distribution et installez-le. Voir le site http://dag.wieers.com/packages/rpmforge-release/.
Tapez alors la commande yum -y install squidguard-blacklists
.
Cela installera squid, squidguard et squidguard-blacklists gràce au système de dépendances de yum. Il suffira de mettre à jour ces blacklists pour avoir une protection optimale de son réseau informatique.
J’active SQUID au démarrage du serveur, avec la commande chkconfig squid on
.
J’installe aussi apache sur ce serveur car il faut présenter une page expliquant le blocage à l’utilisateur client.
Pour cela j’utilise la commande suivante :
yum -y install httpd mod_perl && chkconfig httpd on
CONFIGURATION DE SQUID
L’appel à SQUIDGUARD se fait par SQUID. On modifie donc la configuration de ce dernier en modifiant un paramètre du fichier /etc/squid/squid.conf.
# TAG: redirect_program
# Default:
# none
redirect_program /usr/bin/squidGuard -c /etc/squid/squidguard.conf
Vérifiez bien le chemin du binaire squidGuard et le nom du fichier de conf.
CONFIGURATION DE SQUIDGUARD
Le fichier de conf par défaut est nommé /etc/squid/squidguard.conf.
Ici j’ai utilisé un /etc/squid/squidguard.conf plus simple, car celui d’origine est trop détaillé à mon gout.
Je crée mon fichier à partir du modèle squidguard :
cd /etc/squid
mv squidguard.conf squidguard.conf.old
cp squidguard-blacklists.conf squidguard.conf
On copie un script cgi de la distrib et on le place dans l’arborescence d’apache. Ce script expliquera à l’utilisateur pourquoi sa requête a été bloquée.
cp /usr/share/doc/squidguard-1.2.0/squidGuard-simple.cgi /var/www/cgi-bin/squidGuard.cgi
chown apache: /var/www/cgi-bin/squidGuard.cgi
chmod +x /var/www/cgi-bin/squidGuard.cgi
Editer squidguard.conf et modifiez l’acl par défaut. il faut lui indiquer l’url à afficher en cas de détection de site bloqué. Si cet url ne fonctionne pas, le site sera affiché sans restrictions, ce qu’on ne souhaite pas.
Je présente ici que la portion de code que j’ai modifié. Le fichier de configuration complet sera fourni en pièce jointe à l’article.
### ACL definition
acl
default
pass good !bad !adult !aggressive !audio-video !hacking !warez any
redirect http://IP.DE.MON.SERVEUR/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u
Personnalisation de Squidguard
La page d’erreur affichée par squidguard affiche une image nommée blocked.gif, il faut la créer dans l’arborescence d’apache pour que celui-ci la trouve et l’affiche.
Pour ma part, j’ai utilisé le logo standard de squidguard, mais rien ne vous empêche de la personnaliser.
mkdir /var/www/html/images/
cp /usr/share/doc/squidguard-1.2.0/squidGuard.gif /var/www/html/images/blocked.gif
Modifiez aussi le contenu du fichier /var/www/cgi-bin/squidGuard.cgi à votre convenance.
Par exemple entrez l’email de l’administrateur et l’url de votre site par défaut dans ce fichier pour ne pas afficher les informations « bateau » du fichier d’exemple que j’ai utilisé.
Attention, la syntaxe est particulière, il faut la calquer sur la syntaxe existante.
Création des bases de données
Pour que squidguard focntionne correctement, il lui faut lire des bases de données.
Il faut donc les lui créer avec les commandes suivantes :
cd /var/lib/squidguard/
squidGuard -d -C all
Le -d passe en mode verbeux, très utile en cas de problème de configuration de squidguard.
Attention, les bases de données doivent appartenir à squid afin que le service proxy puisse les lire sans problème.
Si c’est root qui les crée elles lui appartiennent et squidguard ne pouvant les utiliser correctement passe en mode bypass et ne bloque plus rien du tout.
Vous obtenez des access denied dans les logs de squidguard ( /var/log/squidguard/squidguard.log ).
Vérifiez donc les droits et les propriétaires des dossiers dans /var/lib/squidguard et /etc/squid/local
En cas de doute utilisez la commande suivante :
chown -R squid: /var/lib/squidguard/*
chown -R squid: /etc/squid/local/*
Démarrage des services
Squidguard et squid sont maintenant paramétrés, il faut donc lancer les services.
service squid start
service httpd start
Test
Pour tester le fonctionnement, il vous faut paramétrer un poste client pour utiliser le proxy, puis d’accéder au site www.playboy.com par exemple.
Une superbe page Squiguard Accès Refusé devrait apparaitre ( ou Access Denied si vous n’avez pas traduit le script CGI ).