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

SquidGuard

Accueil ] [ Fonctionnement ] [ Squid ] [ + sur squid ] [ SquidGuard ] [ + sur SquidGuard ]


Installation

Autant il est simple de mettre en service une configuration minimale de Squid opérationnelle, autant squidGuard va nécessiter un travail méticuleux et délicat. Vous voilà prévenu...

Installer squidGuard depuis les paquetages Debian

Utilisons "deselect". Une recherche ( commande "/" suivie de "squidguard") permet de pointer directement sur le paquet.

Sélection avec "+", dselect va indiquer un certain nombre de dépendances nécessaires, principalement des modules perl et également un paquetage recommandé intitulé : "chastity". Ce paquetage contient une liste de sites et d'URI que les bonnes moeurs déconseillent de visiter. Nous n'utiliserons pas ce paquetage, en préférant récupérer ces informations ailleurs.

Après installation, nous devrions retrouver :

A ce stade, squidGuard est loin d'être opérationnel, ce qui n'est d'ailleurs pas un problème, puisque Squid, qui n'est pas encore informé de sa présence, ne l'utilise pas.

Installation du module squidGuard pour Webmin

Ce module se trouve sur : http://www.niemueller.de/webmin/. Il faut le télécharger, puis l'installer dans webmin :

webmin

L'installation proprement dite est terminée.

Configuration

Un squidGuard.conf minimum

Comme nous avons renommé le fichier de configuration par défaut, il n'y en a plus. Le module squidGuard de Webmin va nous aider à en faire un autre, tout neuf.

Depuis, l'onglet "Servers" de Webmin, démarrons ce module. Il pourra se faire qu'il soit mal ou pas configuré et qu'il apparaisse ainsi :

squidguard

Indiquez le chemin où l'on doit disposer du fichier de configuration.

Mais ce n'est pas tout :

squidguard

Il faut aussi savoir sous quels UID/GID squidGuard doit tourner. Il constituera des processus fils pour squid, c'est donc le même utilisateur que pour squid, "proxy" par défaut pour Debian.

Le module va maintenant créer un squidGuard.conf minimum :

squidguard

Vous n'avez pas le choix... "Create" donc.

basic

Indiquez les chemins par défaut pour Debian et, surtout, faites attention à bien sélectionner "No traffic" pour la règle par défaut. Si l'on est en train de s'embêter, ce n'est pas pour réaliser une passoire !

Comme ce module est intelligent, il va constater que squid n'est pas configuré pour utiliser le "helper" squidGuard. Il va donc vous en avertir :

squidguard

Configurez donc Squid. Vous pourrez vérifier, toujours au moyen de Webmin, mais avec le module Squid :

helper

Dans la pratique, Webmin a ajouté pour vous la ligne : 

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

Dans le fichier de configuration de Squid : /etc/squid.conf.

Nous devrions avoir ceci dans la fenêtre Webmin de gestion de SquidGuard :

squidguard

Mais nous sommes encore très loin du compte...

dead Puisqu'on n'est pas là pour réaliser une passoire, signalons tout de même ceci :

squidQuard redirige les URI interdits vers un URI local, généralement destiné à expliquer pourquoi le site convoité a été bloqué. Généralement, il s'agit d'un script CGI.

Si cet URI de redirection n'est pas indiqué, ne sachant pas où rediriger les requêtes interdites, squidGuard les laissera tout de même passer, réalisant ainsi une pernicieuse passoire !!!

Il est donc impératif d'installer un tel script ou, à défaut, une page d'avertissement quelconque vers laquelle rediriger les URI interdits.

Le paquetage Debian de squidGuard n'installe rien à ce propos, mais vous trouverez dans /usr/share/doc/squidguard/examples deux scripts dont vous pourrez vous inspirer ou essayer d'utiliser en l'état (après les avoir installés dans /usr/lib/cgi-bin et rendus exécutables).

Mais ce n'est pas tout, il vous faudra aussi revenir sur l'ACL "Default", pour spécifier la redirection :

ACL

http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u

Cette ligne part du principe que vous avez sur la machine locale un serveur HTTP en état de marche et qu'il dispose d'un script squidGuard.cgi. Les paramètres transmis dans cet exemple permettent de communiquer au script toutes les informations nécessaires pour identifier les circonstances du blocage.

Bien entendu, ce script, ou un autre (page php comprise) peuvent être situés sur une machine autre, il suffit de rédiger l'URI de redirection en fonction.

Et voilà. Une magnifique configuration par défaut est réalisée. Il faut maintenant relancer Squid et, sans l'état actuel des choses, plus personne ne pourra visiter quoi que ce soit, SquidGuard interdisant tout par défaut à quiconque.

Nous avons actuellement un fichier squidGuard.conf qui a cette allure :

#
# 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 11:39
#
dbhome /var/lib/squidguard/db
logdir /var/log/squid

acl {
  default {
    redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
    pass none
   }
}

Les "Source Groups"

Ce sont les groupes d'utilisateurs de votre LAN. Vous pouvez créer autant de groupes que vous voulez, ces groupes seront principalement basés sur les blocs d'IPs. Ceci peut vous amener déjà à reconsidérer complètement vos stratégies d'attribution d'IPs...

Pour le moment, nous allons redonner un accès sans limites à tous les utilisateurs de notre LAN en créant un "source group" rassemblant toutes les IPs que nous utilisons :

sourcegroups

Un groupe nommé poétiquement LAN. Vous pourrez aisément trouver mieux...

sourcegroups

Il faut maintenant définir son contenu :

edit

Nous ajoutons un "subnet", mais beaucoup de possibilités sont proposées. User et Userlist ne seront utilisables que s'il est mis en place un système d'authentification des utilisateurs de votre LAN.  La gestion par les domaines ne fonctionnera pas non plus dans la configuration Squid mise en oeuvre ici. Nous nous contenterons donc de travailler avec les IPs.

add

Tout notre réseau local, constitué ici d'une unique classe C privée.

edit

Mais, ce choix n'est pas limitatif, nous pourrions encore ajouter d'autres membres à ce groupe.

Notre fichier squidGuard.conf ressemble maintenant à ceci :

#
# 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 11:39
#
dbhome /var/lib/squidguard/db
logdir /var/log/squid

source LAN {
	ip  192.168.0.0/24
}

acl {
  default {
    redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
    pass none
   }
}

Les "Access Control Lists"

Rien n'est encore changé quant aux droits d'accès, toujours rien ne passe.

Nous allons maintenant créer une nouvelle ACL pour permettre au LAN de voyager sur le Net, sans aucune restriction pour le moment :

access

Nous ajoutons une ACL pour le groupe LAN.

access

Nous définissons maintenant cette ACL de façon laxiste (nous n'avons pas pour l'instant les moyens de faire autre chose que tout ou rien) :

edit

Nous avons maintenant un fichier de configuration qui a cette allure :

#
# 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
}

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
  }
}

Il suffit de relancer squid et, cette fois-ci, tout le LAN pourra passer sur le web.


Précédente ] [ Accueil ] [ Suivante ]