Proxy SQUID avec blacklists

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 ).

Laisser un commentaire

Votre adresse e-mail 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.