Association Bordelaise des Utilisateurs de Logiciels libres

Accueil ›› Utilisation de logiciels libres ›› Logiciels grand public ›› Contrôle parental avec Dansguardian et Squid

Contrôle parental avec Dansguardian et Squid

Posté le lundi 7 décembre 2009 par David Abdelli

Objectif

Le but recherché est de pouvoir autoriser un enfant ou adolescent, préalablement formé à l’utilisation raisonnée d’Internet, à y avoir accès pour les loisirs ou des recherches pédagogiques.

On souhaite cependant éviter qu’il accède à des contenus inappropriés de manière fortuite ou volontaire, sans se reposer sur une surveillance parentale constante de ses faits et gestes qui serait la solution idéale sur le papier (quoiqu’au point de vue de l’autonomie de l’enfant cela soit discutable) mais qui est dans la pratique irréaliste.

Configuration

L’enfant dispose d’un ordinateur personnel sous Debian Lenny avec son compte préconfiguré et un accès Internet fonctionnel.

Le filtrage s’effectuera entièrement sur son poste, sans passage par une passerelle d’accès qui procèderait au filtrage.

Choix du filtrage de contenu

Le logiciel retenu ici est Dansguardian, un logiciel de filtrage de contenu.

Ce logiciel analyse le contenu des sites consultés et leur attribue un score en fonction duquel il permettra ou non la lecture.

Cette approche d’analyse de contenu paraît plus pertinente et efficace qu’une méthode de filtrage basée sur des listes noires de sites, car il paraît impossible de répertorier l’ensemble du Web au contenu inapproprié pour des enfants.

Comment ça marche ?

En bref : à l’issue de cette configuration, toutes les requêtes http du navigateur seront passées à Dansguardian, qui en analyse une première fois le contenu, puis les retransmet à Squid, en reçoit le contenu des pages demandées et l’analyse, et décide ou pas d’en autoriser l’accès par le navigateur.

Pour plus d’infos voir ici

Installation de Dansguardian et Squid

aptitude install dansguardian squid

Configuration de Squid

Sous Debian Lenny, Squid est fonctionnel sans configuration particulière, il écoute sur le port 3128.

Configuration de Dansguardian

On va éditer le fichier /etc/dansguardian/dansguardian.conf

- On supprime la ligne
UNCONFIGURED - Please remove this line after configuration

- on modifie la ligne
language = 'ukenglish'
en
language = 'french'

- pour éviter d’avoir un proxy ouvert sur l’extérieur on limite les requêtes vers dansguardian au poste local : filterip = 127.0.0.1

- on ajuste le score selon l’âge de l’enfant en éditant le fichier /etc/dansguardian/dansguardianf1.conf

# 50 is for young children,  100 for old children,  160 for young adults.
naughtynesslimit = 100

FACULTATIF : suppression de quelques faux positifs

- pour éviter quelques faux positifs (dus à une partie du terme « google-analytics » ... ) on va rajouter dans /etc/dansguardian/lists/exceptionphraselist
analytics

- de même dans /etc/dansguardian/lists/exceptionsitelist (on pourra whitelister des sites entiers dans ce fichier)
google-analytics.com

- on pourra whitelister une url seule d’un domaine dans /etc/dansguardian/lists/exceptionurllist

- on rajoute pour les publicités Canal Plus dans /etc/dansguardian/lists/exceptionregexpurllist
canal

- on édite lists/phraselists/safelabel/banned et on commente :
<meta name="Rating" content="General">
en
# <meta name="Rating" content="General">

- on peut configurer les paramètres de recherche de Google à : Filtrage strict (Filtrer les images et le texte à contenu adulte)

Rapports par courriel (facultatif)

Pour recevoir un courriel de chaque violation des règles de filtrage on modifie les valeurs suivantes dans /etc/dansguardian/dansguardianf1.conf :

usesmtp = on
mailfrom = 'dansguardian@MONDOMAINE'
contentadmin = 'MONEMAIL'
notifycontent = on
violations = 1

Règles iptables dans /etc/rc.local pour établir un proxy transparent

Pour éviter d’avoir à configurer les navigateurs, on va mettre en place deux règles iptables dans /etc.rc.local (avant la partie exit 0), qui seront exécutées au démarrage de la machine.

# mise en place d'un proxy transparent
# Cette règle redirige toutes les requêtes http autres que celle du proxy squid (grep proxy /etc/passwd) vers le port 8080 de dansguardian
iptables -t nat -A OUTPUT -m owner ! --uid-owner 13 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

# on empêche la connexion directe à squid non filtré
iptables -t filter -I OUTPUT -d 127.0.0.1 -p tcp --dport 3128 -m owner ! --uid-owner dansguardian -j DROP

Ou, si on veut filtrer un seul compte (celui de l’enfant) :

on recherche son identifiant :

grep compteenfant /etc/passwd
compteenfant:x:1000:1000:compteenfant:/home/compteenfant:/bin/bash

# on filtre toutes les requêtes http de son compte :
iptables -t nat -A OUTPUT -m owner --uid-owner 1000 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
# on empêche la connexion directe à squid non filtré
iptables -t filter -I OUTPUT -d 127.0.0.1 -p tcp --dport 3128 -m owner ! --uid-owner dansguardian -j DROP

Limites de la solution

Le filtrage des sites https est (techniquement) impossible, de même des sites Internet sur des ports non conventionnels du type http://www.site.com:8080 ne sont pas filtrés.

Répondre à cet article

1 commentaire
  • Posté le 27 février 2010 à 13:49, par David Abdelli (lien)

    Pour interdire l’accès à un site en particulier, par exemple chatroulette.com, il suffit d’éditer le fichier /etc/dansguardian/lists/bannedsitelist et d’y rajouter « chatroulette.com » (sans se soucier du http ou www)

    Le fichier bannedsitelist permet de bloquer un domaine entier, tandis que bannedurllist sert à bloquer un partie d’un site, par URL.

    Répondre à ce message