Par Xavier GRUSELLE et Grégory ALLAIN (Site optimisé pour Firefox 1.5)
Liens conseillés
Compléments pour SquidGuard
Que faire maintenant ?
http://cri.univ-tlse1.fr/documentations/cache/squidguard.html
Il nous reste à configurer des "Destination Groups" et des "Blacklists" pour filtrer l'accès au Web. Nous allons voir comment nous y prendre.
Destination Groups et Blacklists
C'est maintenant que ça va commencer à vraiment se compliquer...
La différence entre une "blacklist" et un "destination group" est une notion qui n'existe pas dans squidGuard, mais dans le module webmin associé.
Destination Groups
Les "Destination Groups" sont des ensembles de domaines, d'URI et/ou d'expressions régulières qui définissent des cibles potentielles pour les internautes de votre LAN.
Au moyen de ces "Destination Groups", vous pourrez définir des cibles accessibles, ou interdites. Par exemple, vous pourrez définir des ensembles de domaines ou d'URI qui seront les seuls à pouvoir être atteints par certains "source groups" ou, à l'inverse, définir des ensembles de domaines ou d'URI dont l'accès sera interdit.
Comme d'habitude, il est possible :
- d'interdire tout à part... ce qui est généralement trop restrictif, mais c'est à vous de construire votre monde de façon totalitaire, vous êtes chez vous...
- d'autoriser tout sauf... ce qui est nettement plus "démocratique", mais laissera obligatoirement la porte ouverte à des cibles que l'on aurait aimé interdire si l'on avait été au courant de leur existence...
Cruelle responsabilité que de devoir choisir entre ces deux stratégies. Nous verrons ici comment exploiter la seconde, mais si vous avez compris le principe, vous pourrez sans plus de difficultés utiliser la première.
Les expressions régulières sont volontairement mises de côté, elles sont fortement consommatrices de ressources système. Rien ne vous empêche cependant de faire quelques manipulations avec par la suite.
Blacklists
Comme leur nom l'indique, ces listes seront là uniquement pour interdire des accès. Par rapport aux "destination groups", elles présentent deux différences majeures :
- comme nous l'avons dit, elles ne peuvent servir qu'à interdire,
- leur mode de gestion présente quelques différences par rapport aux "destination groups".
Comment les construire ?
Nous trouvons des listes toutes faites sur le Net.
Prenons par exemple celles-ci : blacklists.tar.gz, maintenue par le centre de ressources informatiques de l'université de Toulouse.
Nous décompressons cette archive dans /var/lib/squidguard/db/ :

Et nous faisons un peu de ménage.
- Le dossier "aggressive" ne présente pas d'intérêt, il vaudra mieux utiliser "agressif", nous le détruisons.
- Les liens symboliques sont là pour assurer une compatibilité avec les blacklists par défaut de squidGuard. Comme nous faisons nous même notre configuration, autant les supprimer.
- Dans chacun de ces dossiers, il y aura au moins deux fichiers : "domains" et "urls". Si un fichier intitulé "expressions" existe, nous le supprimerons, nous allons éviter systématiquement les expressions régulières.
- Enfin, nous déplaçons tous ces dossiers dans /var/lib/squidguard/db/ et nous utiliserons ces données comme "destination groups" plutôt que comme des "blacklists"
Configurer les "Destination Groups"
Nous allons utiliser ces blacklists téléchargées pour construire les groupes de destination. Malheureusement, nous ne pourrons le faire qu'avec un éditeur de texte. Prenons donc notre courage d'une main et un éditeur quelconque de l'autre, pour modifier /etc/squid/squidGuard.conf comme suit :
#
# Configuration File for SquidGuard
#
# Created with the SquidGuard Configuration Webmin Module
# Copyright (C) 2001 by Tim Niemueller <tim@niemueller.de>
# http://www.niemueller.de/webmin/modules/squidguard/
#
# File created on 4/May/2003 15:03
#
dbhome /var/lib/squidguard/db
logdir /var/log/squid
source LAN {
ip 192.168.0.0/24
}
destination pornographie {
urllist adult/urls
domainlist adult/domains
}
destination agressif {
urllist agressif/urls
domainlist agressif/domains
}
destination audio-video {
urllist audio-video/urls
domainlist audio-video/domains
}
destination drogues {
urllist drugs/urls
domainlist drugs/domains
}
destination forums {
urllist forums/urls
domainlist forums/domains
}
destination jeux {
urllist gambling/urls
domainlist gambling/domains
}
destination hackers {
urllist hacking/urls
domainlist hacking/domains
}
destination redirecteurs {
urllist redirector/urls
domainlist redirector/domains
}
destination violence {
urllist violence/urls
domainlist violence/domains
}
destination warez {
urllist warez/urls
domainlist warez/domains
}
acl {
LAN {
pass any
redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
}
default {
redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
pass none
}
}
Vous l'avez compris, il s'agit d'expliquer à squidGuard où vont se trouver les définitions de nos groupes de destination, à partir du répertoire de base, mentionné au début du fichier.
Construire les bases de données
Il nous faut maintenant construire les bases Berkeley associées. Pour y arriver, c'est simple, utilisez la commande suivante :
squidGuard -C all
et attendez que ça se passe... Et ça risque d'être long.
A la fin, vous aurez la joie de trouver dans les répertoires de vos groupes de destination, les bases de données associées. Elles portent le même nom que les fichiers texte de définition, suivi du suffixe .db
Mais ce n'est pas tout. Si vous avez fait ça étant root, squidGuard risque fort de ne pas pouvoir exploiter ces bases, il fonctionne avec l' UID "proxy". Donc, placez vous dans le répertoire /var/lib/squidguard/ et faites :
chown -R proxy db chmod -R 760 db
Relancez maintenant squid et, en principe, ça devrait fonctionner. Si ce n'est pas le cas, le fichier /var/log/squid/squidGuard.log pourra peut-être vous permettre de déterminer la panne.
Mais soyons positif, si tout a été correctement fait, ça doit fonctionner. Si nous allons maintenant dans Webmin/squidGuard, nous devrions trouver ceci dans les "Destination Groups" :

Ce qui ne veut pas dire qu'un quelconque filtrage ait été ajouté. Il nous faut maintenant modifier l'ACL de LAN :

Nous voyons bien apparaître dans la liste "Destination Groups" tous les groupes que nous avons importés, de même que leurs contraires (ils sont précédés d'un point d'exclamation).
- Si vous voulez que vos étudiants ne puissent accéder qu'aux sites pornographiques, sélectionnez uniquement "pornographie" et faites "save",
- Si vous préférez que vos étudiants puissent accéder à tout sauf aux sites pornographiques, sélectionnez seulement "!pornographie" et faites "save".
Bien entendu, vous pouvez choisir plusieurs items dans la liste en cliquant dessus avec la touche "Ctrl" enfoncée.
Dans l'exemple, le LAN accèdera à tout sauf à la pornographie, les jeux, les forums, les sites agressifs... Ce qui donne le fichier de configuration suivant :
#
# Configuration File for SquidGuard
#
# Created with the SquidGuard Configuration Webmin Module
# Copyright (C) 2001 by Tim Niemueller <tim@niemueller.de>
# http://www.niemueller.de/webmin/modules/squidguard/
#
# File created on 4/May/2003 15:03
#
dbhome /var/lib/squidguard/db
logdir /var/log/squid
source LAN {
ip 192.168.0.0/24
}
destination pornographie {
urllist adult/urls
domainlist adult/domains
}
destination agressif {
urllist agressif/urls
domainlist agressif/domains
}
destination audio-video {
urllist audio-video/urls
domainlist audio-video/domains
}
destination drogues {
urllist drugs/urls
domainlist drugs/domains
}
destination forums {
urllist forums/urls
domainlist forums/domains
}
destination jeux {
urllist gambling/urls
domainlist gambling/domains
}
destination hackers {
urllist hacking/urls
domainlist hacking/domains
}
destination redirecteurs {
urllist redirector/urls
domainlist redirector/domains
}
destination violence {
urllist violence/urls
domainlist violence/domains
}
destination warez {
urllist warez/urls
domainlist warez/domains
}
acl {
LAN {
pass !pornographie !agressif !audio-video !drogues !forums !jeux !hackers !redirecteurs !violence !warez
redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
}
default {
redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
pass none
}
}
Relancez squid et vérifiez que tout se passe comme prévu.
Modifier ces listes
Webmin permet de modifier ces listes ou même d'en créer à partir de rien. Vous aurez probablement l'occasion de vous servir de ces fonctionnalités. Regardons ce que ça donne dans un groupe pas trop encombré :

Vous pouvez :
- consulter la liste actuelle,
- ajouter ou supprimer un domaine ou un URI.
Si vous ajoutez ou enlevez quelque chose, SquidGuard s'arrêtera, parce que vous avez agi sur les fichiers texte et que les bases Berkeley ne sont plus synchronisées. Relancez Squid et les bases seront reconstruites automatiquement (normalement).
Créer de nouvelles listes à partir de rien
Vous pouvez le faire. Le module de Webmin acceptera de créer de nouveaux groupes vides et de les inscrire dans squidGuard.conf, en créant les fichiers texte qui vont avec. Ceci peut vous permettre de créer de petits groupes supplémentaires si le besoin s'en fait sentir.
Les Blacklists
Le module de Webmin ne vous permet pas de créer de blacklists, il ne vous permet que d'en télécharger. Si vous le faites à partir du site de SquidGuard, vous retomberez sur les mêmes (ou à peu près) que celles que nous avons utilisées. Aurions nous pris le problème à l'envers ?
Visiblement, il semblerait que oui. Mais c'était volontaire. Rappelons-nous que la différence entre "destination groups" et "blacklists" est introduite par le module webmin, pas par squidGuard.
Dans le fichier de configuration, "destination groups" et "blacklists" sont traités de la même façon.
Pratiquement
Si vous désirez utiliser des listes noires, le module SquidGuard de Webmin ne vous sera d'aucune utilité pour leur création. Tout au plus pourra-t-il servir à gérer des listes déjà existantes, même si elle ont été créées vides au départ, mais créées tout de même. Pour créer une nouvelle liste noire, il faut par exemple agir comme suit :
- créer le répertoire /var/lib/squidguard/db/blacklists,
- créer dedans un répertoire, par exemple "mablacklist",
- créer dedans les fichiers "domains" et "urls" (même vides),
- modifier /etc/squid/squidGuard.conf comme suit :
destination bl_mablacklist { domainlist blacklists/mablacklist/domains urllist blacklists/mablacklist/urls }A insérer avant les ACL.
Vous pourrez ensuite renseigner cette liste noire avec le module SquidGuard de webmin. Vous le voyez, les listes noires ne sont rien d'autres que des groupes de destination. Encore une fois, la seule différence visible depuis le module webmin sera qu'il n'est pas possible d'autoriser une destination à partir d'une liste noire. Dans le fichier de configuration, le "!" sera forcément présent dans l'ACL.
![]() |
Si vous importez une série de blacklists depuis le site de SquidGuard (ou autre) en utilisant le module de Webmin, l'arborescence /var/lib/squidguard/db/blacklists/ sera bien créée et mise à jour, mais le fichier /etc/squid/squidGuard.conf ne sera pas correctement modifié et, alors que tout semblera en ordre, le filtrage ne fonctionnera pas pour autant. En effet, le chemin d'accès aux fichiers de définition des listes noires n'est pas mis à jour dans squidGuard.conf. Vous devrez le compléter manuellement. |
Finalement ?
A vous de voir maintenant si vous préfèrerez travailler avec les listes noires ou les groupes de destination pour interdire des sites. Si vous avez des bases de données très volumineuses ("porn" en est une), lisez attentivement la documentation de SquidGuard, qui propose d'autres moyens de mise à jour des bases, plus appropriés si vous faites ces mises à jour "on line". Pensez que la reconstruction complète d'une base peut être très longue et affecte sérieusement le fonctionnement de Squid pendant ce temps.
Il existe en effet la possibilité de créer des fichiers texte supplémentaires, destinés à ajouter ou a enlever des enregistrements dans la base, sans pour autant le reconstruire totalement, mais cette possibilité n'est pas accessible depuis Webmin.
A propos du module webmin pour squidGuard
Tel qu'il est conçu, ce module présente des dangers dans la mesure où certaines configurations devront être reprises manuellement dans le fichier squidGuard.conf. De plus, il ne relance pas squid après une modification des bases.
Pratiquement, je vous conseille la plus grande prudence et la configuration directe semble nettement préférable.
