Proxy HTTP avec contrôle d'accès
09/02/2005
 Christian CALECA 
Liste des cours

+ sur SquidGuard

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

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 :

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/ :

file

Et nous faisons un peu de ménage. 

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" :

destination

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

ACL

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.

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é :

destination

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

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 :

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.

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


Précédente ] [ Accueil ]