Association Générale des Utilisateurs de logiciels libres en Côte-d'Or

logo_coagul

Contrôle parental avec DansGuardian et TinyProxy

Rubrique : Sécurité
Le : jeudi 22 février 2007
Par : Tony  
Visites : 22620
Tags : DansGuardian, Proxy, SquidGuard, TinyProxy

But de ce document

Ce document me sert de mémo pour installer DansGuardian et TinyProxy dans le but de mettre en place un contrôle parental pour l’accès web.

Cela est particulièrement utile (voire indispensable) si vous avez des jeunes enfants désirant utiliser régulièrement un accès web.

Cette installation a été effectuée sur Debian Testing mais elle doit fonctionner sans problème sur d’autres distributions.

Différences entre DansGuardian et SquidGuard

Pour filtrer les URL, SquidGuard utilise une base de données des sites interdits. Pour fonctionner correctement, il est donc nécessaire de maintenir cette base de données à jour en permanence.

De son coté, DansGuardian analyse le contenu des pages pour savoir si elle doit être bloquée ou pas. Il est possible également d’ajouter une liste de sites ou de mots interdits et il est même possible d’utiliser les listes noires de SquidGuard comme nous le verrons à la fin de ce document.

Si vous souhaitez installer SquidGuard, vous pouvez lire cet article :
- http://www.coagul.org/article.php3 ?id_article=184

Installation de TinyProxy

Pour faire fonctionner DansGuardian, il faut commercer par installer un serveur proxy. Il est possible d’installer par exemple «  Squid  », mais nous allons dans ce document utiliser «  TinyProxy  » qui est plus léger mais suffisant pour notre besoin :

# aptitude install tinyproxy

Remarque  : Par défaut, «  TinyProxy  » utilise le port 8888. Pour le changer, il faut éditer son fichier de configuration « /etc/tinyproxy/tinyproxy.conf ».

Configuration de TinyProxy

La configuration de TinyProxy s’effectue dans le fichier « /etc/tinyproxy/tinyproxy.conf ».

Par exemple, pour changer le port en écoute, il faut modifier cette ligne :

Port 8888

Pour des raisons de sécurité et pour faciliter le filtrage avec «  iptables  » je conseille de créer un compte utilisateur spécifique pour le démon de TinyProxy :

# useradd -s /bin/false tiny

Ensuite, il faut éditer le fichier de configuration « /etc/tinyproxy/tinyproxy.conf » et modifier ces lignes :

User tiny
Group tiny

Pour finir, il faut démarrer ou redémarrer TinyProxy :

# /etc/init.d/tinyproxy restart

Et vérifier que le démon tourne bien sous le compte « tiny » :

# ps aux | grep tiny
tiny      7706  0.0  0.1   2216   560 ?        S    13:17   0:00 /usr/sbin/tinyproxy

Test de TinyProxy

Pour tester TinyProxy, il suffit de configurer un navigateur web pour qu’il l’utilise. Par exemple, pour Firefox, il faut faire :
- Menu « Éditions / Préférences » onglet « Avancé », bouton « Paramètres ».
- Mettre «  localhost  » dans le champ « Proxy HTTP »
- Mettre «  8888  » dans le champ « Port »
- Cocher « Utiliser ce serveur proxy pour tous les protocoles »

Si après ce réglage, l’accès web fonctionne toujours c’est que le proxy est opérationnel.

Et normalement en arrêtant le proxy, cela doit bloquer l’accès web :

# /etc/init.d/tinyproxy stop

Ensuite, il faut le démarrer pour refaire fonctionner l’accès web :

# /etc/init.d/tinyproxy start

Installation de DansGuardian

# aptitude install dansguardian

L’installation de « DansGuardian entraîne l’installation de l’antivirus «  Clamav  ». Dans ce document, nous n’activerons pas cet antivirus car il n’est pas indispensable sous Linux et consomme pas mal de ressources.

Configuration de DansGuardian

DansGuardian utilise plusieurs fichiers de configuration enregistrés dans « /etc/dansguardian ».

Configuration de « /etc/dansguardian/dansguardian.conf »

Pour activer la configuration, il faut commenter ou supprimer cette ligne en début de fichier :

#UNCONFIGURED

Cette ligne permet d’indiquer le port utilisé par le proxy :

proxyport = 8888

Cette ligne permet d’avoir les messages en français en cas de blocage des sites :

language = 'french'

Cette ligne permet de désactiver l’antivirus :

virusscan = off

Configuration de « /etc/dansguardian/dansguardianf1.conf »

La ligne suivante permet de paramétrer le filtrage en fonction de l’âge des personnes concernées :

naughtynesslimit = 80

La valeur par défaut de « 50 » donne un filtrage très dur et peu de sites sont accessibles. Plus cette valeur est élevée et plus le filtrage est faible. Personnellement, j’ai fait quelques tests et j’ai passé cette valeur à « 80 ».

Cette ligne permet de désactiver l’antivirus :

virusscan = off

Configuration du fichier « /etc/dansguardian/bannedextensionlist »

Ce fichier permet de définir des types de fichiers qui seront interdits de télécharger. Par défaut, la liste est très restrictive. il faut donc commenter les types de fichiers autorisés :

#.gz   # Gziped file
#.tar  # Tape ARchive file
#.tgz  # Unix compressed file
#.bz2  # Unix compressed file

Configuration du fichier « /etc/dansguardian/bannedmimetypelist »

Là encore il s’agit de restreindre des types de fichiers.

#application/gzip
#application/x-gzip
#application/zip

Configuration du fichier « /etc/dansguardian/bannedregexpurllist »

L’ajout de cette ligne à la fin du fichier permet de bloquer la plupart des sites français de rencontres en ligne :

(webcam|tchat|t'chat|rencontre|meetic|amour)

Configuration du fichier /etc/dansguardian/phraselists/pornography/weighted_french »

Il est possible d’ajouter des mots ou des listes de mots dans ce fichier, avec des coefficients positifs (mauvais mot) ou négatifs (bons mots) :

< tchat ><20>
< t'chat ><20>
< partouze ><70>

Prise en compte des modifications dans la configuration de DansGuardian

Pour prendre en compte les modifications, il faut exécuter cette commande :

# /etc/init.d/dansguardian restart

Remarque : Un simple «  reload  » ne semble pas être suffisant.

Configuration du navigateur

Pour tester «  DansGuardian  », il suffit de configurer un navigateur web pour qu’il l’utilise. Par exemple, pour Firefox, il faut faire :
- Menu « Éditions / Préférences » onglet « Avancé », bouton « Paramètres ».
- Mettre «  localhost  » dans le champ « Proxy HTTP »
- Mettre «  8080  » dans le champ « Port » (et non plus « 8888 » qui est le port utilisé par le proxy mais pas par DansGuardian)
- Cocher « Utiliser ce serveur proxy pour tous les protocoles »

Test de filtrage

Dans Firefox ,allez sur www.google.fr et faites une recherche sur le mot « chatte ». Normalement la page résultante de cette recherche devrait être bloquée et une page d’avertissements s’affiche à la place.

Pour modifier cette page, il suffit de modifier le fichier html suivant :

/etc/dansguardian/languages/french/template.html

Ensuite, faites une recherche dans « google » sur le mot « chat ». La page résultante n’est pas bloquée mais offre des liens vers des sites de rencontres. Si vous suivez les liens donnés, vous constaterez que certains sont immédiatement bloqués car ils contiennent un contenu sensible. Pour d’autres sites, vous accédez à la page d’accueil ne contenant rien de compromettant.

Configuration d’iptables pour forcer les navigateurs à passer par le proxy

Avec cette configuration, il suffit de supprimer la configuration du proxy dans le navigateur pour accéder à tout le web sans filtrage. Pour remédier à ce problème, il faut configurer iptables pour bloquer l’accès direct au web à tous les utilisateurs (sauf root et tiny). Pour cela il suffit d’ajouter ces lignes à la configuration de votre parefeu ou dans un script qui se lancera automatiquement au démarrage :

# iptables -A OUTPUT -o eth0 -p tcp --dport http -j REJECT --reject-with tcp-reset
# iptables -I OUTPUT -o eth0 -p tcp --dport http -m owner --uid-owner root -j ACCEPT
# iptables -I OUTPUT -o eth0 -p tcp --dport http -m owner --uid-owner tiny -j ACCEPT

Pour plus d’informations sur la configuration d’iptables et la mise en place d’un parefeu, vous pouvez lire cet article :
- http://www.coagul.org/article.php3 ?id_article=485

ATTENTION : Avec cette configuration, aucun programme ne pourra avoir un accès http sans passer par le proxy. Par exemple, il faudra configurer Thunderbird pour pouvoir recevoir les fils RSS.

Utilisation des listes noires de SquidGuard

Vous trouverez sur ce site, des listes noires régulièrement actualisées pour SquidGuard :
- http://cri.univ-tlse1.fr/documentations/cache/squidguard.html

Le script suivant que vous pouvez placer dans la crontab de root, permet de récupérer et décompresser automatiquement la liste noire «  adult  » :

#!/bin/bash

mkdir /etc/dansguardian/blacklists

cd /etc/dansguardian/blacklists

wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/adult.tar.gz                        

tar -xvzf adult.tar.gz

Ensuite, il suffit de décommenter la ligne suivante du fichier « /etc/dansguardian/bannedsitelist » :

.Include</etc/dansguardian/blacklists/adult/domains>

Et de redémarrer DansGuardian :

# /etc/init.d/dansguardian restart

Pour tester que la liste est bien opérationnelle, il faut tester l’un des sites proposés dans le fichier « domain » et regarder les logs :

2007.2.17 11:49:44 - 127.0.0.1 http://votresite.com *DENIED* Site interdit: votresite.com GET 0

Liens pour avoir plus d’informations

Cet article est fortement inspiré des informations provenant de ce mail et de cet article :
- http://lists.debian.org/debian-user-french/2006/04/msg01654.html
- http://easy.open.and.free.fr/TinyDansguard/

Historique des modifications

VersionDateCommentaire
0.417/02/07Création par Tony GALMICHE
0.4114/08/07Petite correction
Version imprimable de l'article

Forum


  • Contrôle parental avec DansGuardian et TinyProxy
    20 novembre 2007, par Bruno

    Bonjour,

    Contrôle parental ok si on configure Firefox par exemple pour passer par le proxy.

    Mais je voudrais que les utilisateurs du groupe "children" soient forcés d’utiliser le proxy, et les utilisateurs du groupe "parents" non.

    Comme ça si les "children" désactivent les options proxy dans Firefox, Opera, Konqueror, Epiphany etc pas de connexion.

    J’ai essayé le paragraphe "Configuration d’iptables pour forcer les navigateurs..." mais ça marche pô. Soit plus de connexion du tout, soit l’utilisateur du groupe children (mes enfants, évidemment) peut surfer sans proxy.

    Ils savent désactiver les options, utiliser plusieurs navigateurs... y’a plus d’enfants.

    Help ! Merci... Bruno

    • Contrôle parental avec DansGuardian et TinyProxy
      20 novembre 2007
      ... je complète, évidemment je remplace les uid-owner par gid-owner parents, par exemple.
  • Contrôle parental avec DansGuardian et TinyProxy
    20 octobre 2007, par lonewolf

    bonjour a tous,

    Je viens de suivre a la lettre ce tuto et mon tinyproxy fonctionne bien (port 3128) mais lorsque je passe au port 8080 dans la configuration de mon navigateur je ne peux plus me connecter comme si dansguardian n’acceptait pas les connections.

    De plus, mes logs de dansguardian sont vides.

    Mes ports sont ouverts et je suis perdu.

    Un petit coup de main svp

    lonewolf

  • Contrôle parental avec DansGuardian et TinyProxy
    4 octobre 2007, par amarante

    Bonjour, Je suis sous Xunbuntu, J’ai suivi les étapes du tuto mais lorsque j’arrive à :

    Et vérifier que le démon tourne bien sous le compte « tiny » : # ps aux | grep tiny tiny 7706 0.0 0.1 2216 560 ? S 13:17 0:00 /usr/sbin/tinyproxy

    J’ai le message suivant : -su : tiny : commande introuvable.... Avez vous une solution ? Merci Amarante.

  • Contrôle parental avec DansGuardian et TinyProxy
    14 septembre 2007, par marc

    bonjour,

    Super ton tuto, mais comment fait-on pour se debarrasser definitivement de clamav ?

    il n’y a pas une ruse pour faire un aptitude de dansguardian sans clamav ?

    merci

    • Contrôle parental avec DansGuardian et TinyProxy
      15 septembre 2007, par Tony
      Bonjour, A priori, il n’est pas possible d’empêcher l’installation de clamav, par contre, il est facile de désactiver son lancement au démarrage avec cette commande : # update-rc.d -f clamav-freshclam remove
  • Contrôle parental avec DansGuardian et TinyProxy
    10 juillet 2007, par Guilhelm

    bonjour et merci pour ce tutoriel !

    Une petite coquille : la configuration de naughtynesslimit s’effectue dans le fichier « /etc/dansguardian/dansguardianf1.conf » et non « /etc/dansguardian/dansguardian1.conf ».

    Guilhelm

    • Contrôle parental avec DansGuardian et TinyProxy
      15 septembre 2007, par Tony
      Merci, c’est corrigé
  • Contrôle parental avec DansGuardian et TinyProxy
    20 mars 2007, par neutron

    Bonjour,

    tout d’abord merci pour ce tuto qui me rend bien service

    Je travail sur Ubuntu Edgy et j’ai installé Tiny via apt.

    mon PB est que je ne trouve pas le script RC de Tiny ou autrement dit je ne peux pas le lancer via la commande /etc/init.d/tinyproxy start

    Je ne suis pas encore très expérimenté sous linux et je ne me vois pas, pour arreter tinyproxy, faire un "kill" des 10 à 20 process lancés lors du démarrage via la commande /usr/sbin/tinyproxy

    Si quelqu’un pouvait me donner un petit coup de main

    • Contrôle parental avec DansGuardian et TinyProxy
      20 mars 2007, par Tony

      Bonjour,

      La commande suivante permet de retrouver tous les fichiers et programmes installés par un paquet :

      dpkg -L tinyproxy

      • Contrôle parental avec DansGuardian et TinyProxy
        20 mars 2007

        Bonjour et merci pour ta réponse.

        Si je tape un dpkg -L tinyproxy

        Je vois bien (entre autres) /etc/init.d/tinyproxy.

        Mais si je liste le répertoire /etc/init.d je ne le vois pas. J’ai le même problème avec Dansguardian

        Donc, pour l’instant, je démarre les 2 programmes à partir de /usr/sbin et les arrête avec un killall. Je sais, c’est pas joli joli.

        En dehors de ce PB tout marche nickel. Me reste plus que la blacklist à mettre en place.

        Si tu as d’autres sugjestions...

        Merci

      • Contrôle parental avec DansGuardian et TinyProxy
        20 mars 2007

        Re :

        Bon ben j’ai trouvé, il s’agit d’un bête problème de droits. En effet je listais le répertoire etc/init.d avec l’utilisateur courant et non en root ou avec sudo

        Merci encore

      • Contrôle parental avec DansGuardian et TinyProxy
        20 mars 2007

        Arg merci de ne pas tenir compte de mon message précédant. je réitère je ne vois pas DansGuardian et TinyProxy dans /etc/init.d. Je me suis trompé de répertoire

        Je suis toujours preneur de toutes suggestions

        Bien à vous

        • Contrôle parental avec DansGuardian et TinyProxy
          20 mars 2007, par Tony
          Si c’est un paquet Ubuntu, c’est peut-être normal car je crois que Ubuntu n’utilise plus le système /etc/init.d pour démarrer les services mais un nouveau truc sur lequel je n’ai pas d’infos.
  • Contrôle parental avec DansGuardian et TinyProxy
    7 mars 2007, par dpailler

    il manque à la création de l’utilisateur tiny la cration du groupe tiny. Il faut donc le créer puis attribuer ce groupe tiny à tiny commme groupe principal sinon, cela le proxy ne marche pas.

    D. Pailler

    • Contrôle parental avec DansGuardian et TinyProxy
      7 mars 2007, par Tony
      Dans mon cas, la création de l’utilisateur crée automatiquement le groupe et fait l’affectation. Sinon en effet, il faut le faire manuellement.
      • Contrôle parental avec DansGuardian et TinyProxy
        7 mars 2007, par dpailler

        je suis sous sarge stable, de plus clamav n’appartient pas au paquet dansguardian de sarge.

        Ca marche super !

        Tellement bien , que je ne peus plus accéder à cet article !!!

        • Contrôle parental avec DansGuardian et TinyProxy
          7 mars 2007, par Tony

          Il est vrai que mon article peut choquer les personnes sensibles :-)

          Autrement, il faut jouer avec la ligne "naughtynesslimit = 80"

          Merci pour le complément concernant l’installation sous Sarge.

          • Contrôle parental avec DansGuardian et TinyProxy
            7 mars 2007, par dpailler

            Je vais tester, sinon au pire , je vais jouer avec le fichier exceptionsitelist dans etc/dansguardian.

            Dernière remarque : Il n’existe pas de fichier : /weighted_french dans /etc/dansguardian/phraselists/pornography mais seulement un fichier /weighted Qui apparemment fait le même travail.

            Merci pour ton article, j’avais essayer la combinaison squid+squidguard sans succés.

            David

            • Contrôle parental avec DansGuardian et TinyProxy
              7 mars 2007, par Tony
              Pour savoir pourquoi un site est bloqué, il faut regarder dans les logs. Cela permet de voir, s’il faut jouer sur la variable "naughtynesslimit" ou au contraire ajouter le site dans le fichier exceptionsitelist
Site réalisé sous Spip. Merci à NFrance pour son hébergement gracieusement offert. Tous les articles de ce site sont sous licence Creative Commons by-nc-sa (CC).