[ Accueil ] [ Fonctionnement ] [ Squid ] [ + sur squid ] [ SquidGuard ] [ + sur SquidGuard ]
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.
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é.
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 :
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.
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 :
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.
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.
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).
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.
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 :
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).
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.
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.
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 :
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. |
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.
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.