<h2>But de ce document</h2>
<p class="spip">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.</p>

<p class="spip">Cela est particulièrement utile (voire indispensable) si vous avez des jeunes enfants désirant utiliser régulièrement un accès web.</p>

<p class="spip">Cette installation a été effectuée sur Debian Testing mais elle doit fonctionner sans problème sur d’autres distributions.</p>

<h2>Différences entre DansGuardian et SquidGuard</h2>
<p class="spip">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.</p>

<p class="spip">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.</p>

<p class="spip">Si vous souhaitez installer SquidGuard, vous pouvez lire cet article :
<br /></p>
<li> <a href="http://www.coagul.org/article.php3?id_article=184" class="spip_out">http://www.coagul.org/article.php3 ?id_article=184</a>
<h2>Installation de TinyProxy</h2>
<p class="spip">Pour faire fonctionner DansGuardian, il faut commercer par installer un serveur proxy. Il est possible d’installer par exemple « <strong class="spip"> Squid </strong> », mais nous allons dans ce document utiliser « <strong class="spip"> TinyProxy </strong> » qui est plus léger mais suffisant pour notre besoin :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install tinyproxy</code></p>

<p class="spip"><strong class="spip">Remarque </strong> : Par défaut, « <strong class="spip"> TinyProxy </strong> » utilise le port 8888. Pour le changer, il faut éditer son fichier de configuration « <strong class="spip">/etc/tinyproxy/tinyproxy.conf</strong> ».</p>

<h2>Configuration de TinyProxy</h2>
<p class="spip">La configuration de TinyProxy s’effectue dans le fichier « <strong class="spip">/etc/tinyproxy/tinyproxy.conf</strong> ».</p>

<p class="spip">Par exemple, pour changer le port en écoute, il faut modifier cette ligne :</p>

<p class="spip"><code class='spip_code' dir='ltr'>Port 8888</code></p>

<p class="spip">Pour des raisons de sécurité et pour faciliter le filtrage avec « <strong class="spip"> iptables </strong> » je conseille de créer un compte utilisateur spécifique pour le démon de TinyProxy :</p>

<p class="spip"><code class='spip_code' dir='ltr'># useradd -s /bin/false tiny</code></p>

<p class="spip">Ensuite, il faut éditer le fichier de configuration « <strong class="spip">/etc/tinyproxy/tinyproxy.conf</strong> » et modifier ces lignes :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>User tiny<br />
Group tiny</code></div>
<p class="spip">Pour finir, il faut démarrer ou redémarrer TinyProxy :</p>

<p class="spip"><code class='spip_code' dir='ltr'># /etc/init.d/tinyproxy restart</code></p>

<p class="spip">Et vérifier que le démon tourne bien sous le compte « tiny » :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code># ps aux | grep tiny<br />
tiny      7706  0.0  0.1   2216   560 ?        S    13:17   0:00 /usr/sbin/tinyproxy</code></div>
<h2>Test de TinyProxy</h2>
<p class="spip">Pour tester TinyProxy, il suffit de configurer un navigateur web pour qu’il l’utilise. Par exemple, pour Firefox, il faut faire :
<br /></p>
<li> Menu « Éditions / Préférences » onglet « Avancé », bouton « Paramètres ».
<br /><li> Mettre « <strong class="spip"> localhost </strong> » dans le champ « Proxy HTTP »
<br /><li> Mettre « <strong class="spip"> 8888 </strong> » dans le champ « Port »
<br /><li> Cocher « Utiliser ce serveur proxy pour tous les protocoles »
<p class="spip">Si après ce réglage, l’accès web fonctionne toujours c’est que le proxy est opérationnel.</p>

<p class="spip">Et normalement en arrêtant le proxy, cela doit bloquer l’accès web :</p>

<p class="spip"><code class='spip_code' dir='ltr'># /etc/init.d/tinyproxy stop</code></p>

<p class="spip">Ensuite, il faut le démarrer pour refaire fonctionner l’accès web :</p>

<p class="spip"><code class='spip_code' dir='ltr'># /etc/init.d/tinyproxy start</code></p>

<h2>Installation de DansGuardian</h2>
<p class="spip"><code class='spip_code' dir='ltr'># aptitude install dansguardian</code></p>

<p class="spip">L’installation de « DansGuardian entraîne l’installation de l’antivirus « <strong class="spip"> Clamav </strong> ». Dans ce document, nous n’activerons pas cet antivirus car il n’est pas indispensable sous Linux et consomme pas mal de ressources.</p>

<h2>Configuration de DansGuardian</h2>
<p class="spip">DansGuardian utilise plusieurs fichiers de configuration enregistrés dans « <strong class="spip">/etc/dansguardian</strong> ».</p>

<h3>Configuration de « /etc/dansguardian/dansguardian.conf »</h3>
<p class="spip">Pour activer la configuration, il faut commenter ou supprimer cette ligne en début de fichier :</p>

<p class="spip"><code class='spip_code' dir='ltr'>#UNCONFIGURED</code></p>

<p class="spip">Cette ligne permet d’indiquer le port utilisé par le proxy :</p>

<p class="spip"><code class='spip_code' dir='ltr'>proxyport = 8888</code></p>

<p class="spip">Cette ligne permet d’avoir les messages en français en cas de blocage des sites :</p>

<p class="spip"><code class='spip_code' dir='ltr'>language = 'french'</code></p>

<p class="spip">Cette ligne permet de désactiver l’antivirus :</p>

<p class="spip"><code class='spip_code' dir='ltr'>virusscan = off</code></p>

<h3>Configuration de « /etc/dansguardian/dansguardianf1.conf »</h3>
<p class="spip">La ligne suivante permet de paramétrer le filtrage en fonction de l’âge des personnes concernées :</p>

<p class="spip"><code class='spip_code' dir='ltr'>naughtynesslimit = 80</code></p>

<p class="spip">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 ».</p>

<p class="spip">Cette ligne permet de désactiver l’antivirus :</p>

<p class="spip"><code class='spip_code' dir='ltr'>virusscan = off</code></p>

<h3>Configuration du fichier « /etc/dansguardian/bannedextensionlist »</h3>
<p class="spip">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 :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>#.gz   # Gziped file<br />
#.tar  # Tape ARchive file<br />
#.tgz  # Unix compressed file<br />
#.bz2  # Unix compressed file</code></div>
<h3>Configuration du fichier « /etc/dansguardian/bannedmimetypelist »</h3>
<p class="spip">Là encore il s’agit de restreindre des types de fichiers.</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>#application/gzip<br />
#application/x-gzip<br />
#application/zip</code></div>
<h3>Configuration du fichier « /etc/dansguardian/bannedregexpurllist »</h3>
<p class="spip">L’ajout de cette ligne à la fin du fichier permet de bloquer la plupart des sites français de rencontres en ligne :</p>

<p class="spip"><code class='spip_code' dir='ltr'>(webcam|tchat|t'chat|rencontre|meetic|amour)</code></p>

<h3>Configuration du fichier /etc/dansguardian/phraselists/pornography/weighted_french »</h3>
<p class="spip">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) :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>< tchat ><20><br />
< t'chat ><20><br />
< partouze ><70></code></div>
<h3>Prise en compte des modifications dans la configuration de DansGuardian</h3>
<p class="spip">Pour prendre en compte les modifications, il faut exécuter cette commande :</p>

<p class="spip"><code class='spip_code' dir='ltr'># /etc/init.d/dansguardian restart</code></p>

<p class="spip"><strong class="spip">Remarque</strong> : Un simple « <strong class="spip"> reload </strong> » ne semble pas être suffisant.</p>

<h2>Configuration du navigateur</h2>
<p class="spip">Pour tester « <strong class="spip"> DansGuardian </strong> », il suffit de configurer un navigateur web pour qu’il l’utilise. Par exemple, pour Firefox, il faut faire :
<br /></p>
<li> Menu « Éditions / Préférences » onglet « Avancé », bouton « Paramètres ».
<br /><li> Mettre « <strong class="spip"> localhost </strong> » dans le champ « Proxy HTTP »
<br /><li> Mettre « <strong class="spip"> 8080 </strong> » dans le champ « Port » (et non plus « 8888 » qui est le port utilisé par le proxy mais pas par DansGuardian)
<br /><li> Cocher « Utiliser ce serveur proxy pour tous les protocoles »
<h2>Test de filtrage</h2>
<p class="spip">Dans Firefox ,allez sur <a href="http://www.google.fr/" class="spip_out">www.google.fr</a> 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.</p>

<p class="spip">Pour modifier cette page, il suffit de modifier le fichier html suivant :</p>

<p class="spip"><code class='spip_code' dir='ltr'>/etc/dansguardian/languages/french/template.html</code></p>

<p class="spip">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.</p>

<h2>Configuration d’iptables pour forcer les navigateurs à passer par le proxy</h2>
<p class="spip">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 :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code># iptables -A OUTPUT -o eth0 -p tcp --dport http -j REJECT --reject-with tcp-reset<br />
# iptables -I OUTPUT -o eth0 -p tcp --dport http -m owner --uid-owner root -j ACCEPT<br />
# iptables -I OUTPUT -o eth0 -p tcp --dport http -m owner --uid-owner tiny -j ACCEPT</code></div>
<p class="spip">Pour plus d’informations sur la configuration d’iptables et la mise en place d’un parefeu, vous pouvez lire cet article :
<br /></p>
<li> <a href="http://www.coagul.org/article.php3?id_article=485" class="spip_out">http://www.coagul.org/article.php3 ?id_article=485</a>
<p class="spip"><strong class="spip">ATTENTION</strong> : 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.</p>

<h2>Utilisation des listes noires de SquidGuard</h2>
<p class="spip">Vous trouverez sur ce site, des listes noires régulièrement actualisées pour SquidGuard :
<br /></p>
<li> <a href="http://cri.univ-tlse1.fr/documentations/cache/squidguard.html" class="spip_out">http://cri.univ-tlse1.fr/documentations/cache/squidguard.html</a>
<p class="spip">Le script suivant que vous pouvez placer dans la crontab de root, permet de récupérer et décompresser automatiquement la liste noire « <strong class="spip"> adult </strong> » :</p>

<p class="spip"><code class='spip_code' dir='ltr'>#!/bin/bash</code></p>

<p class="spip"><code class='spip_code' dir='ltr'>mkdir /etc/dansguardian/blacklists</code></p>

<p class="spip"><code class='spip_code' dir='ltr'>cd /etc/dansguardian/blacklists</code></p>

<p class="spip"><code class='spip_code' dir='ltr'>wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/adult.tar.gz                        </code></p>

<p class="spip"><code class='spip_code' dir='ltr'>tar -xvzf adult.tar.gz</code></p>

<p class="spip">Ensuite, il suffit de décommenter la ligne suivante du fichier « /<strong class="spip">etc/dansguardian/bannedsitelist</strong> » :</p>

<p class="spip"><code class='spip_code' dir='ltr'>.Include</etc/dansguardian/blacklists/adult/domains></code></p>

<p class="spip">Et de redémarrer DansGuardian :</p>

<p class="spip"><code class='spip_code' dir='ltr'># /etc/init.d/dansguardian restart </code></p>

<p class="spip">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 :</p>

<p class="spip"><code class='spip_code' dir='ltr'>2007.2.17 11:49:44 - 127.0.0.1 http://votresite.com *DENIED* Site interdit: votresite.com GET 0</code></p>

<h2>Liens pour avoir plus d’informations</h2>
<p class="spip">Cet article est fortement inspiré des informations provenant de ce mail et de cet article :
<br /></p>
<li> <a href="http://lists.debian.org/debian-user-french/2006/04/msg01654.html" class="spip_out">http://lists.debian.org/debian-user-french/2006/04/msg01654.html</a>
<br /><li> <a href="http://easy.open.and.free.fr/TinyDansguard/" class="spip_out">http://easy.open.and.free.fr/TinyDansguard/</a>
<h2>Historique des modifications</h2>
<table class="spip">
<thead><tr class='row_first'><th scope='col'><strong class="spip">Version</strong></th><th scope='col'><strong class="spip">Date</strong></th><th scope='col'><strong class="spip">Commentaire</strong></th></tr></thead>
<tbody>
<tr class="row_even"><td>0.4</td><td>17/02/07</td><td>Création par Tony GALMICHE</td></tr>
<tr class="row_odd"><td>0.41</td><td>14/08/07</td><td>Petite correction</td></tr>
</tbody>
</table>