5. La configuration du service de filtrage des URLs

Comme dans le cas du service mandataire, le fichier /etc/squid/squidGuard.conf est point de départ de la configuration de l'outil. À la différence de squid, cette configuration dépend essentiellement de «l'alimentation» en listes noires d'URLs ou de noms de domaines.

Même si ce fichier est moins volumineux que celui de la section précédente, on reprend la technique du patch pour illustrer les différences entre le fichier distribué via le paquet et celui exploité dans le contexte courant.

$ diff -uBb /etc/squid3/squidGuard.conf squidGuard.conf.new 

--- squidGuard.conf.dpkg-dist   2008-11-10 11:17:36.000000000 +0100
+++ squidGuard.conf.new 2008-11-10 11:15:29.000000000 +0100
@@ -3,7 +3,7 @@
 #
 
 dbhome /var/lib/squidguard/db
-logdir /var/log/squid
+logdir /var/log/squid3
 
 #
 # TIME RULES:
@@ -46,19 +46,106 @@
 # DESTINATION CLASSES:
 #
 
-dest good {
+dest adult {
+       domainlist      adult/domains
+       expressionlist  adult/expressions
+       urllist         adult/urls
 }
 
-dest local {
+dest agressif {
+       domainlist      agressif/domains
+       expressionlist  agressif/expressions
+       urllist         agressif/urls
 }
 
-#dest adult {
-#      domainlist      adult/domains
-#      urllist         adult/urls
-#      expressionlist  adult/expressions
-#      redirect        http://admin.foo.bar.no/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u
-#}
+dest astrology {
+       domainlist      astrology/domains
+       urllist         astrology/urls
+}
+
+dest dangerous_material {
+       domainlist      dangerous_material/domains
+       urllist         dangerous_material/urls
+}
+
+dest drogue {
+       domainlist      drogue/domains
+       urllist         drogue/urls
+}
+
+dest financial {
+       domainlist      financial/domains
+       urllist         financial/urls
+}
+
+dest forums {
+       domainlist      forums/domains
+       urllist         forums/urls
+}
+
+dest gambling {
+       domainlist      gambling/domains
+       urllist         gambling/urls
+}
+
+dest games {
+       domainlist      games/domains
+       urllist         games/urls
+}
+
+dest hacking {
+       domainlist      hacking/domains
+       urllist         hacking/urls
+}
+
+dest malware {
+       domainlist      malware/domains
+}
 
+dest marketingware {
+       domainlist      marketingware/domains
+}
+
+dest mixed_adult {
+       domainlist      mixed_adult/domains
+}
+
+dest phishing {
+       domainlist      phishing/domains
+}
+
+dest redirector {
+       domainlist      redirector/domains
+       expressionlist  redirector/expressions
+       urllist         redirector/urls
+}
+
+dest sect {
+       domainlist      sect/domains
+       urllist         sect/urls
+}
+
+dest strict_redirector {
+       domainlist      strict_redirector/domains
+       expressionlist  strict_redirector/expressions
+       urllist         strict_redirector/urls
+}
+
+dest strong_redirector {
+       domainlist      strong_redirector/domains
+       expressionlist  strong_redirector/expressions
+       urllist         strong_redirector/urls
+}
+
+dest warez {
+       domainlist      warez/domains
+       expressionlist  warez/expressions
+       urllist         warez/urls
+}
+
+dest white {
+        domainlist      white/domains
+}
 
 acl {
 #      admin {
@@ -76,8 +163,13 @@
 #      }
 
        default {
-               pass     local none
+               pass    white 
+               pass    !adult !agressif !astrology !dangerous_material !drogue
+               pass    !financial !forums !gambling !games !hacking !malware
+               pass    !marketingware !mixed_adult !phishing !redirector !sect
+               pass    !strict_redirector !strong_redirector !warez all
+
 #              rewrite  dmz
-#              redirect http://admin.foo.bar.no/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u
+               redirect http://www.stri/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u
        }
 }

Bien entendu, la sélection des catégories retenues est totalement arbitraire et le patch de configuration proposé ne prétend pas répondre à tous les besoins. Voici quelques éléments sur la configuration de squidguard en reprenant les mêmes limitations que pour le service mandataire : la documentation de toutes les options de l'outil sort complètement du cadre de ce billet.

dbhome

Définition du répertoire de stockage de la base de données des listes noires. L'utilisation de ce répertoire est détaillée dans Section 6, « La gestion des listes noires ».

logdir

Définition du répertoire de stockage du fichier de journalisation de l'outil. Généralement, on utilise le même répertoire que le service mandataire sachant que les processus des deux services sont exécutés sous la même identité. Ces processus ont donc les mêmes droits sur l'arborescence.

Comme toutes les entrées de liste noire utilisent la même syntaxe, on ne s'intéresse qu'à un exemple : les listes noires warez.

dest warez

Définition d'une catégorie de trafic à bloquer. À l'intérieur de cette catégorie, on peut définir des listes de noms de domaines, d'URLs et d'expressions rationnelles.

domainlist warez/domains

Fichier contenant la liste des noms de domaines de la catégorie à bloquer. Il s'agit d'un fichier texte avec un nom de domaine par ligne.

expressionlist warez/expressions

Fichier texte de définition des expressions rationnelles de filtrage. Généralement, il s'agit de filtrer les accès aux contenus stockés dans les caches des outils de recherche célèbres.

urllist warez/urls

Fichier texte contenant la liste des URLs accessibles à partir de noms de domaines «valides». Il s'agit généralement de sous-répertoires d'hébergement de fournisseurs d'accès Internet.

Une catégorie white pour «liste blanche» a été ajoutée manuellement pour traiter les exceptions ; c'est-à-dire les domaines pour lesquels l'accès est toujours autorisé.

La dernière section concerne l'application des règles de traitement des catégories définies plus haut.

acl

Section d'application des règles de traitement. Il est possible de définir plusieurs sections de ce type et de mettre en place une administration plus fine du service. Dans notre exemple, on ne définit qu'un seul mode de traitement global pour tous les utilisateurs situés dans le périmètre d'interception du service mandataire.

default

Section de définition des traitements par défaut.

pass

Tout le trafic vers les entrées enregistrées dans une catégorie précédée du caractère ! est bloqué. À l'inverse, tout le trafic correspondant à une catégorie listée est autorisé.

Dans l'exemple, on a utilisé plusieurs lignes débutant par l'instruction pass pour éviter d'avoir une ligne trop longue. Il faut considérer que les catégories sont examinées séquentiellement pour les lignes pass saisies.

La dernière «catégorie» notée all correspond à toutes les autres destinations non filtrées.

redirect

Instruction de redirection vers une page Web donnée pour les destinations bloquées. Ici, la redirection a lieu vers le service Web interne à l'infrastructure de travaux pratiques. Voir Section 7, « La redirection de page Web pour le trafic bloqué ».