Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:comment_mettre_en_place_un_controle_parental [Le 01/05/2017, 16:04]
82.250.251.57 [ctparental]
tutoriel:comment_mettre_en_place_un_controle_parental [Le 06/05/2017, 00:45] (Version actuelle)
Ligne 1: Ligne 1:
 + ​{{tag>​ éducation sécurité internet tutoriel contrôle_parental}}
 +----
  
 +====== Contrôle parental ======
 +
 +Cette page recense les solutions de contrôle parental sur Ubuntu.
 +
 +<note important>​Attention : si le besoin (mettre en place un contrôle parental) est simple, les méthodes proposées ici sont particulièrement techniques et s'​adressent à un public expert.</​note>​
 +
 +Le contrôle parental comporte au moins deux aspects :
 +  - accès aux sessions et temps d'​utilisation ;
 +  - accès à l'​internet.
 +
 +Les solutions évoquées ci-après peuvent concerner ces deux aspects ou seulement l'un des deux. 
 +
 +
 +=====Session et internet=====
 +
 +==== La Session Invité ====
 +
 +La session invité a des droits limité mais permet de passer au dessus de contrôles parentaux appliqués sur votre navigateur comme par exemple ProCon Latte qui sera étudié ci-dessous.
 +En effet à chaque redémarrage du système la session invité efface tout ce qui a pu être installé lors de la session précédente,​ y compris les contrôles parentaux pourtant paramétrés avec votre compte administrateur.
 + 
 +Pour désactiver la session Invité sous Ubuntu 14.04, il faut ouvrir un terminal et taper :
 +
 +<code bash>
 +sudo gedit /​usr/​share/​lightdm/​lightdm.conf.d/​50-ubuntu.conf
 +# Le code ci-dessus ne marche pas. Par contre celui-ci-dessous marche :
 +sudo gedit /​etc/​lightdm/​lightdm.conf.d/​50-ubuntu.conf
 +</​code>​
 +
 +Cette ligne de commande va vous ouvrir le fichier de configuration 50-ubuntu.conf.
 +Dans ce fichier, placez-vous à la fin, et ajoutez cette ligne puis enregistrez
 +<​file>​
 +allow-guest=false
 +</​file>​
 +
 +Le fichier 50-ubuntu.conf devrait ressembler à ceci :
 +<​file>​
 +[SeatDefaults]
 +user-session=ubuntu
 +allow-guest=false
 +</​file>​
 +==== ctparental ​ ====
 +
 +
 +CTparental est un Contrôle parental permettant à des utilisateurs ayant juste assimilé les bases des lignes de commandes ​ .
 +
 +Basé sur dnsmasq , dansguardian , privoxy , iptables-persistent et la [[http://​dsi.ut-capitole.fr/​blacklists/​|blackliste de l’université de Toulouse]].
 +
 +Bien sûr il faut créer des comptes sans droit d'​administration pour vos enfants.
 +
 +Si vos enfants ont passé les 10 ans il est conseillé de mettre un mot de passe bios et de désactiver le boot sur support USB ou CDROM et un mot de passe sur grub aussi.
 +
 +Mais ne comptez pas les arrêter au-delà de 16 ans, ils sauront comment passer outre tout ça, bien que ça les ennuiera un petit moment donc autant les faire réfléchir un peu .
 +
 +Dans tous les cas ce n'est qu'une sécurité pour éviter qu'ils ne grandissent trop vite, mais elle ne remplace pas l’accompagnement des parents, le petit coup d’œil de temps en temps et le dialogue.
 +
 +Il est maintenant disponible sous forme de fichier deb.
 +
 +a partir le la version 4.20.16 on peut  **installer** avec  [[/​gdebi|gdebi]] ou [[/​software-center|software-center]] ​
 +
 +pour les version inférieurs qu'il faut **installer** avec  [[/​gdebi|gdebi]] !! ,seul la méthode avec gdebi fonctionne .
 +
 +[[https://​github.com/​marsat/​CTparental/​releases/​download/​4.20.17.d/​ctparental_ubuntu_14.04_4.20.17-1.0_all.deb|v-4.20.17-1.0 pour ubuntu 14.04]]  ​
 +
 +[[https://​github.com/​marsat/​CTparental/​releases/​download/​4.20.17.d/​ctparental_ubuntu_16.04_4.20.17-1.0_all.deb|v-4.20.17-1.0 pour ubuntu 16.04]]  ​
 +
 +les identifiants et mots de passe seront définis pendant cette procédure sauf pour l’installe par [[/​software-center|software-center]] ou ceux si sont réciproquement **admin** et **admin**.
 +
 +<​note>​Par la suite on pourra les redéfinir en lançant la commande** sudo CTparental -uhtml** dans un terminal. On pourra aussi activer le mot de passe grub2 pour les menus sensibles avec la commande ** sudo CTparental -grubPon** ​
 +</​note>​
 +<note important>​Il faut désinstaller les versions précédentes avant installation de nouvelle versions :
 +  sudo apt-get autoremove --purge ctparental clamav-* ​ privoxy lighttpd dnsmasq dansguardian
 + </​note>​
 +
 +<note important>​Pour UBUNTU 16.04 : Dans le cas ou lighttpd n'​arrive pas à démarrer en fin d'​installation et où la commande ​
 +   ​journalctl -xe
 +renvoie:
 +  "​symbol lookup error: /​usr/​sbin/​lighttpd:​ undefined symbol: FAMNoExists"​
 + ​Installer alors gamin:
 +  sudo apt-get install gamin
 + </​note>​
 +
 +Il possède ​ une [[https://​github.com/​marsat/​CTparental/​wiki/​Interface-WEB.|interface web]] accessible via l'​adresse suivante http://​127.0.0.1/​CTadmin/​ , qui facilite sont paramétrage.
 +
 +Une liste complémentaire a la blackliste de Toulouse ce nomment ​ ctparental et ajouter dans les catégorie , pour limiter encore un peut plus les publicité et la pornographie .
 +a ajouter au catégorie adult,​agressif,​bitcoin,​dangerous_material,​dating,​ddos,​drogue,​gambling,​hacking,​malware,​marketingware,​mixed_adult,​phishing,​publicite,​redirector,​sect,​strict_redirector et strong_redirector pour être efficace.
 +
 +
 +
 +Principales fonctions :
 +  - Filtrage par Blackliste ou par Whiteliste .
 +  - Filtre par Catégories.
 +  - Filtre personnalisé ​ de sites.
 +  - Filtre Personnalisé de sites à laisser accessibles même s'ils sont présents dans une  des catégories que l'on veut bloquer. ​
 +  - Réglages des heures de connexions autorisées par utilisateur.
 +  - Réglage du temps max de navigation des utilisateurs.
 +  - Nombres de minutes de connexions max par jours autorisées.
 +  - Groupe de personnes privilégiées ne subissant pas de filtrage web.
 +  - Notifications des Utilisateurs toutes les minutes durant les 5 dernières minutes avant déconnexion.
 +  - Dansguardian (extentions + type mime paramétrable via l'​interface.)
 +  - Privoxy (paramètre non disponible via l'​interface.)
 +  - Force SafeSearch google
 +  - Force safesearch youtube.com ( très restrictifs conviens au jeune enfants , pas a des adolescents.)
 +  - Force SafeSearch duckduckgo
 +  - Force SafeSearch bing (en http seulement)
 +  - Blocage de moteurs de recherches jugés non sûr comme bing en https et search.yahoo.com.
 +  - Ajout du mot de passe grub2 , le mot de passe est persistants,​ après un update-grub ou une mise a jour grub2. le clavier bascule en qwerty pour le paramétrage du login mots de passe grub2 cela évite les problèmes de caractère impossible a faire avec le clavier qwerty du menu grub2.
 +  - Fonctionne avec firefox,​midori,​chromium ... 
 +  - Gestion de règles personnalisées pour iptables. Activé avec CTparental ​ -ipton
 +  - export de configuration a partir de la version 4.20.13<​code>​CTparental -exp /​rep/​export</​code>​
 +  - import de configuration a partir de la version 4.20.13<​code>​CTparental -imp /​chemin/​absolut/​CTparental.conf.xx.xx.xx.tar.gz</​code>​
 +<note help>les services suivants sont automatiquement acceptés pour avoir une navigation correcte sur internet : http,​https,​dns,​ntp,​dhcp,​
 +ping (sortant uniquement),​ftp (client ftp seulement pas serveur).
 +Pour le reste on peut ajouter ces propres règles dans le fichier /​usr/​local/​etc/​CTparental/​iptables qui en possède certaines mais qui sont commentées et relancer la commande CTparental ​ -ipton pour les activer.</​note>​
 +
 +
 +<​note>​ [[http://​e2guardian.org/​cms/​|e2guardian]] sera utilisé dans un futur proche car dansguardian est au poins mort plus depuis 2012, solution par défaut sous debian testing/​sid ​ [[https://​github.com/​marsat/​CTparental/​releases/​tag/​4.20.13e|testing/​sid]] </​note>​
 +
 +
 +Pour l'​installer manuellement et les dernières infos c'est par [[https://​github.com/​marsat/​CTparental/​wiki/​installation-sous-debian-ubuntu|ici]]
 +
 +Dépôt GIT : [[https://​github.com/​marsat/​CTparental]]
 +
 +**Explication des différents paramètres pour une utilisation en ligne de commandes. **
 +une fois installé, lancer cette commande :
 +
 +   sudo CTparental
 +   
 +Exemple d’intersection Dansguardian / Dnsmasq pour les version v-4-xx et supérieur : {{:​tutoriel:​ctparental_e2guardian_dansguardian.png?​100|}} ​  ​{{:​tutoriel:​ctparental_dnsmasq.png?​100|}}
 +
 +====Gnome Nanny====
 +
 +[[:Gnome Nanny]] est un logiciel de contrôle parental complet, installé par défaut dans Edubuntu depuis [[:​maverick|Edubuntu 10.10]].
 +
 +<note important>​Nota:​ il semble que Nanny ne soit pas encore au point et pose certains problèmes, au moins lorsque l'on est sous Lucid Lynx et Natty. Voir [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=416280|cette discussion sur le forum]]</​note>​
 +
 +Nanny n'est plus disponible dans les dépôts (Ubuntu 14.04)
 +
 +
 +===== Session seulement =====
 +
 +
 +====Timekpr====
 +[[:​Timekpr]] (une contraction de « time keeper » en anglais) est un logiciel pour contrôler l'​usage de l'​ordinateur par les différents comptes d'​utilisateurs d'un ordinateur. Vous pouvez limiter l'​usage quotidien à partir de la durée d'​usage et les périodes de la journée où ils peuvent ou non se connecter.
 +
 +==== Configuration manuelle ====
 +Des [[tutoriel:​restrictions_horaires|restrictions horaires]] peuvent être mises en place par configuration manuelle.
 +
 +===== Internet seulement =====
 +
 +==== Solution radicale ====
 +Soit une machine sur laquelle sont existants un compte disposant des droits d'​administration,​ d'​autres comptes sans droits d'​administration et parmi ceux-ci au moins un pour lequel l'​accès à internet n'a pas lieu d'​être contrôlé. Pour fixer les idées, mettons Adulte00, Adulte01, Progeniture00 et Progeniture01. Mettons que Adulte00 et 01 décident d'un commun accord que le contrôle le plus simple et le plus efficace tout en étant le moins demandeur en ressource humaine consiste en la solution radicale d'​absence d'​accès au net tout court pour Progéniture00 et 01. Dans ce cas, l'​administrateur peut aller dans les propriétés de la connexion, qu'​elle soit filaire ou wifi, et décocher la case en bas à gauche "​Disponible pour tous les utilisateurs"​. Problème : le compte non-admin pour lequel l'​accès à internet n'a pas lieu d'​être contrôlé (//i.e.// Adulte00 ou (//i.e.// xor) 01) se retrouve lui aussi sans connexion. Il faut alors se connecter avec ce compte et activer la connexion, ce qui devrait demander le mot de passe admin. A partir de ce moment, ce compte devrait avoir accès au réseau à chaque login. Mais là encore, tous les autres comptes auront accès à la connexion ... Comme précédemment,​ il suffit de modifier les propriétés de la connexion en décochant la case en bas à gauche "​Disponible pour tous les utilisateurs"​. ​
 +
 +**En résumé** : activation de la connexion pour chacun des adultes et modification en décochant la case "​Disponible pour tous les utilisateurs"​. Rien du tout pour la progéniture.
 +==== OpenDNS FamilyShield ====
 +
 +Cette méthode est la plus simple de toutes ! 
 +
 +Avec OpenDNS FamilyShield,​ les filtres appliqués sont les mêmes pour tous (pas de paramétrage possible). Il suffit d'​utiliser comme serveurs DNS 208.67.222.123 et 208.67.220.123 et le tour est joué. Ces DNS filtrent automatiquement les sites adultes. Il suffit donc de mettre cette connexion par défaut pour tout le monde, et rajouter éventuellement des connexions avec d'​autres serveurs DNS pour chacun des utilisateurs qui n'ont pas besoin de filtrage;
 +
 +Une petite note rapide pour dire que cette solution est pour le moins ambiguë, elle filtre effectivement les sites pour adultes, mais en renvoyant à une page appartenant à Opendns, qui fait de la pub... pour d'​autres sites pour adultes - sites de rencontre en l'​occurrence - comme edarling... Donc à éviter pour les enfants.
 +  ​
 +Pour plus de détails :
 +
 +[[http://​www.opendns.com/​home-solutions/​parental-controls|Site officiel de OpenDNS]] - (en français)
 +
 +
 +[[http://​store.opendns.com/​familyshield/​setup/​operatingsystem/​ubuntu|Installation pour Ubuntu]] - (en anglais)
 +
 +
 +==== Procon latte ====
 +
 +Cette extension du navigateur Firefox est plutôt efficace et surtout très simple d'​installation. Bien sûr, elle ne convient qu'aux utilisateurs de Firefox !
 +
 +
 +
 +== Installation ==
 +
 +Rien de plus simple, il suffit de se rendre à [[https://​addons.mozilla.org/​fr/​firefox/​addon/​1803|cette adresse avec Firefox]] et de cliquer sur //​Installer//​.
 +
 +Afin d'​empêcher la désactivation facile de Procon latte via le menu des modules complémentaires :
 +
 +  - cliquer sur le bouton "​Choisir un mot de passe" pour protéger l'​accès à la modification des Préférences
 +  - cocher toutes les options des paramètres principaux, et notamment l'​option "​empêcher la désactivation ou la désinstallation"​
 +
 +__Deux remarques :__ 
 +
 +Le blocage d'​accès via la liste blanche ne marche pas pour certains sites, par ex. fr.youtube.com. Dans ce cas, ajouter le nom du site (youtube) à la liste des données explicites du Filtre principal dans la colonne "sites bloqués"​.
 +
 +L'​extension Public Fox  disponible [[https://​addons.mozilla.org/​fr/​firefox/​addon/​3911|cette adresse]] permet d'​aller plus loin en bloquant l'​accès aux modules complémentaires,​ mais elle ne fonctionne pas avec l'​occurrence "​Modules complémentaires"​ du menu Options de Firefox 3.0, ce qui oblige à installer un autre module de paramétrage du menu Options, comme par ex. Tools Menu Organiser disponible à [[https://​addons.mozilla.org/​fr/​firefox/​addon/​1911|cette adresse]] ​
 +
 +
 +
 +
 +== Inconvénients ==
 +
 +  * Simple à contourner.
 +  * Ne protège que Firefox.
 + 
 +
 +==== Squidguard ====
 +
 +
 +=== Pré-requis ===
 +
 +Les logiciels utilisés pour mettre en œuvre ce contrôle parental sont :
 +
 +  * [[:squid]] :  ​
 +  * Squidguard (Il faut activer le dépôt universe) (Voir Squidguard ​ dans la page Squid)
 +
 +<note important>​Ceci explique la mise en place d'un contrôle parental sur un PC Ubuntu directement raccordé sur le net sans réseau local.</​note>​
 +
 +<note important>​Pour Ubuntu 14.10 et 15.10, les packages de squid et squidguard ne sont pas compatibles entre eux.
 +
 +En effet, squid 3.3.8 n'est pas compatible avec squidguard 1.5-4  https://​bugs.launchpad.net/​ubuntu/​+source/​squidguard/​+bug/​1448149</​note>​
 +=== Configuration de Squid ===
 +
 +Le fichier de configuration est : **/​etc/​squid3/​squid.conf**
 +
 +Tout d'​abord,​ sauvegardez ce fichier avec la commande :
 +
 +  sudo cp /​etc/​squid3/​squid.conf /​etc/​squid3/​squid.conf.orig
 +
 +Maintenant, [[:​tutoriel:​comment_editer_un_fichier|éditez ce fichier]] avec l'​éditeur de votre choix en ayant les droits administrateur. Remplacez-en le contenu par les lignes suivantes :
 +
 +<​file>​
 +# -----------------------------------------------------------
 +cache_effective_user proxy
 +cache_effective_group proxy
 +# -----------------------------------------------------------
 +visible_hostname none
 +# -----------------------------------------------------------
 +
 +# -----------------------------------------------------------
 +acl all src 0.0.0.0/​0.0.0.0
 +acl localhost src 127.0.0.1/​255.255.255.255
 +acl manager proto cache_object
 +acl serveur src 192.168.0.1
 +acl poste src 192.168.0.50
 +acl multipostes src 192.168.0.100-192.168.0.125
 +acl SSL_ports port 443 563
 +acl Safe_ports port 80 # http
 +acl Safe_ports port 20 # ftp-data
 +acl Safe_ports port 21 # ftp
 +acl Safe_ports port 443 563 # ssl
 +acl Safe_ports port 70 # gopher
 +acl Safe_ports port 210 # wais
 +acl Safe_ports port 1025-65535 # unregistered ports
 +acl Safe_ports port 280 # http-mgmt
 +acl Safe_ports port 488 # gss-http
 +acl Safe_ports port 591 # filemaker
 +acl Safe_ports port 777 # multiling http
 +acl Safe_ports port 631 # cups
 +acl Safe_ports port 873 # rsync
 +acl Safe_ports port 901 # SWAT
 +acl purge method PURGE
 +acl CONNECT method CONNECT
 +
 +http_access allow all
 +
 +url_rewrite_program /​usr/​bin/​squidGuard -c /​etc/​squidguard/​squidGuard.conf
 +url_rewrite_children 10
 +
 +http_port 3128 transparent
 +</​file>​
 +
 +<note important>​Avant la version squid 2.6, la directive url_rewrite_program était remplacée par redirect_program et url_rewrite_children ​ était de même remplacée par redirect_children</​note>​
 +=== Configuration d'un filtre uniquement par Squid ===
 +
 +Squid permet, à lui seul, de mettre en place toute une série de filtres.
 +
 +Dans le cas qui nous intéresse, le contrôle parental, on peut utiliser les filtres suivants :
 +  * Autoriser l'​accès uniquement à une liste de sites (liste blanche).  ​
 +  * Bloquer l'​accès à une série de domaines (liste noire).
 +  * Bloquer les pages dont l'URL contient un mot interdit.
 +
 +La configuration a lieu en deux temps. On crée d'​abord les ACL correspondants : 
 +
 +  acl whitelist dstdomain "/​etc/​squid3/​whitelist"​
 +  acl blacklist dstdomain "/​etc/​squid3/​blacklist"​
 +  acl filtre_reg url_regex -i ^.*sex.*$ ^.*porn.*$ ^.*hack.*$ ^.*crack.*$ ^.*drug.*$ ^.*felation.*$
 +
 +Puis on lui applique les filtres :
 +
 +  http_access allow whitelist
 +  http_access deny blacklist
 +  http_access deny filtre_reg
 +
 +Squid applique les filtres dans l'​ordre. Le premier filtre vérifié s'​applique et pas les suivants. ​
 +Il faut donc prendre garde à l'​ordre dans lequel on les écrit.
 +
 +Ici, le filtrage pour la whitelist est placé avant celui de la blacklist.
 +Ainsi, si un domaine se trouve dans les deux listes, le site ne sera pas bloqué ​
 +car Squid appliquera le premier filtre.
 +
 +
 +Pour finir, si aucune des règles n'est vérifiée on autorise l'​accès : 
 +  http_access allow localhost
 +(avec localhost un ACL du type acl localhost src 127.0.0.1/​32)
 +
 +
 +Pour une référence plus complète des règles que l'on peut mettre en place dans Squid,
 +on peut se référer au document :
 +[www.visolve.com/​squid/​squid30/​squid30.pdf]
 +
 +=== Configuration de SquidGuard ===
 +
 +SquidGuard est une sorte de greffon à Squid qui joue le rôle de redirecteur. En fait si une requête du navigateur n'est pas conforme à ce qui a été défini dans sa configuration il affiche une autre page web que celle demandée.
 +
 +
 +== Les listes noires ==
 +
 +Pour ce qui est du filtrage des sites, on ne va bien sûr pas entrer les adresses à la main, des listes noires existent sur le net. Voici une adresse de blacklist : ftp://​ftp.univ-tlse1.fr/​pub/​reseau/​cache/​squidguard_contrib/​blacklists.tar.gz
 +
 +Voici les commandes à faire pour les installer :
 +
 +<​code>​
 +wget ftp://​ftp.univ-tlse1.fr/​pub/​reseau/​cache/​squidguard_contrib/​blacklists.tar.gz
 +sudo tar zxvf blacklists.tar.gz -C /​var/​lib/​squidguard/​db/​
 +sudo su
 +cd /​var/​lib/​squidguard/​db
 +mv blacklists/​* .
 +rm -rf blacklists
 +</​code>​
 +
 +C'est à partir de cette liste noire que la base de données va être créée pour SquidGuard. Si vous regardez le répertoire /​var/​lib/​squidguard/​db,​ vous verrez pleins de sous-répertoires de thèmes pour les listes noires (gambling, radio, webmail, porn, adult, etc.). Ce sont ces thèmes qu'il faudra définir dans le fichier de configuration de Squidguard.
 +
 +
 +
 +
 +
 +
 +
 +=== Mise à jour hebdomadaire automatique des listes noires ===
 +Pour mettre automatiquement à jour, chaque semaine, les listes noires de SquidGuard, il suffit de créer une tâche cron. Créez le fichier /​etc/​cron.weekly/​squidguard_blacklists :
 +<​code>​sudo gedit /​etc/​cron.weekly/​squidguard_blacklists</​code>​
 +et inscrivez-y les lignes suivantes :
 +<​code>​
 +#!/bin/sh
 +#
 +# Fichier /​etc/​cron.weekly/​squidguard_blacklists
 +#
 +# Télécharge chaque semaine les listes noires pour SquidGuard
 +# et met à jour les bases de ce dernier.
 +
 +if [ -d /​var/​lib/​squidguard ]; then
 + wget ftp://​ftp.univ-tlse1.fr/​pub/​reseau/​cache/​squidguard_contrib/​blacklists.tar.gz -O /​var/​lib/​squidguard/​blacklists.tar.gz
 + tar zxvf /​var/​lib/​squidguard/​blacklists.tar.gz -C /​var/​lib/​squidguard/​
 + rm -rf /​var/​lib/​squidguard/​db
 + mkdir /​var/​lib/​squidguard/​db || true
 + mv -f /​var/​lib/​squidguard/​blacklists/​* /​var/​lib/​squidguard/​db/​
 + chmod 2770 /​var/​lib/​squidguard/​db
 + rm -rf /​var/​lib/​squidguard/​blacklists /​var/​lib/​squidguard/​blacklists.tar.gz
 + /​usr/​bin/​squidGuard -C all
 + chown -R proxy:proxy /etc/squid3 /​var/​log/​squid3 /​var/​spool/​squid3 /​usr/​lib/​squid3 /​usr/​sbin/​squid3 /​var/​lib/​squidguard
 + service squid3 restart
 +fi
 +</​code>​
 +
 +Rendez ce fichier exécutable :
 +<​code>​sudo chmod +x /​etc/​cron.weekly/​squidguard_blacklists</​code>​
 +
 +Si vous le désirez, vous pouvez le tester (attention, il est long à rendre la main, à cause de la mise à jour des bases de SquidGuard) :
 +<​code>​sudo /​etc/​cron.weekly/​squidguard_blacklists</​code>​
 +
 +
 +
 +== Le fichier de configuration ==
 +
 +
 +Le fichier de configuration est : **/​etc/​squidguard/​squidGuard.conf**
 +
 +De même sauvegardez ce fichier avec la commande :
 +
 +  sudo cp /​etc/​squidguard/​squidGuard.conf /​etc/​squidguard/​squidGuard.conf.orig
 +
 +Maintenant, [[:​tutoriel:​comment_editer_un_fichier|éditez ce fichier]] avec l'​éditeur de votre choix en ayant les droits administrateur.
 +
 +remplacer le ficher avec les lignes suivantes :
 +
 +<​file>​
 +#
 +# CONFIG FILE FOR SQUIDGUARD
 +#
 +
 +dbhome /​var/​lib/​squidguard/​db
 +logdir /​var/​log/​squid3
 +
 +# ------------------------------------------------------------
 +# Définition de la base de données de filtrage utilisée
 +# ------------------------------------------------------------
 +dest adult {
 +        domainlist adult/​domains
 +        urllist adult/urls
 +}
 +
 +dest publicite {
 +        domainlist publicite/​domains
 +        urllist publicite/​urls
 +}
 +
 +dest warez {
 +        domainlist warez/​domains
 +        urllist warez/urls
 +}
 +
 +dest porn {
 +        domainlist porn/​domains
 +        urllist porn/urls
 +}
 +
 +dest violence {
 +        domainlist violence/​domains
 +        urllist violence/​urls
 +}
 +
 +# ajoutez ici les thèmes supplémentaires de votre choix présents dans la blacklist de la façon suivante :
 +# dest <nom du thème> {
 +#        domainlist <nom du thème>/​domains
 +#        urllist <nom du thème>/​urls
 +# }
 +
 +# ------------------------------------------------------------
 +# Définition des ACL
 +# ------------------------------------------------------------
 +
 +acl {
 +  default {
 +# les thèmes supplémentaires sont à ajouter avant le mot-clé all par !<nom du thème>
 +        pass !porn !adult !publicite !warez !violence all
 +        redirect ​ http://​www.ovh.com/​fr/​images/​hosting/​astuce_htaccess/​interdit.jpg
 +  }
 +}
 +# ------------------------------------------------------------
 +</​file>​
 +
 +<note important>​Si Squid ne démarre pas, et que /​var/​log/​squid3/​cache.log signale le problème "The url_rewriter helpers are crashing too rapidly",​ c'est que SquidGuard ne répond pas assez vite. Ceci est probablement dû à un thème contenant des expressions régulières (par exemple la base redirectors). Dans ce cas, essayer de mettre moins de thèmes dans l'​ACL</​note>​
 +
 +Maintenant il faut générer la base de données avec la commande suivante : 
 +
 +  sudo squidGuard -C all
 +
 +Patientez un peu car ça peut être long.
 +
 +Vous aurez compris ici que SquidGuard va rediriger toutes les pages qui sont non conformes à la règle **pass** vers la page web :  http://​www.ovh.com/​fr/​images/​hosting/​astuce_htaccess/​interdit.jpg (la page http://​roozeec.free.fr/​interdiction.html n'est plus accessible, toute autre page affichant un logo d'​interdiction peut aussi bien faire l'​affaire)
 +
 +=== Configuration de IPTABLES ===
 +
 +Maintenant que tout est fait pour ce qui est du proxy, il faut aussi que les requêtes du navigateur soit redirigées vers le proxy Squid que nous venons de configurer. Pour cela, il faut d'​abord trouver l'​identifiant de l'​utilisateur proxy (UID) avec la commande :
 +
 +<​code>​
 +grep proxy  /etc/passwd
 +proxy:​x:​13:​13:​proxy:/​bin:/​bin/​sh
 +</​code>​
 +
 +Ici la réponse est 13, donc nous allons créer la règle iptables suivante (13 est ici la valeur donnée précédemment) :
 +
 +<​code>​
 +sudo iptables -t nat -A OUTPUT -m owner ! --uid-owner 13 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
 +</​code>​
 +
 +De façon à lancer cette commande au démarrage du PC, il suffit de la mettre dans le fichier **/​etc/​rc.local**,​ juste avant la commande exit 0 (13 est ici la valeur donnée précédemment) :
 +
 +<​file>​
 +#!/bin/sh -e
 +#
 +# rc.local
 +#
 +# This script is executed at the end of each multiuser runlevel.
 +# Make sure that the script will "exit 0" on success or any other
 +# value on error.
 +#
 +# In order to enable or disable this script just change the execution
 +# bits.
 +#
 +# By default this script does nothing.
 +
 +iptables -t nat -A OUTPUT -m owner ! --uid-owner 13 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
 +
 +exit 0
 +</​file>​
 +
 +
 +=== Démarrage de Squid ===
 +
 +Maintenant que tout est prêt, il suffit de lancer Squid, mais avant tout il va falloir lancer quelques commandes pour bien définir les droits des fichiers : 
 +
 +  sudo chown -R proxy:proxy /etc/squid /​var/​log/​squid /​var/​spool/​squid /​usr/​lib/​squid /​usr/​sbin/​squid /​var/​lib/​squidguard
 +
 +Lancer maintenant la commande :
 +
 +  sudo squid -z
 +
 +Maintenant le démarrage proprement dit :
 +
 +  sudo /​etc/​init.d/​squid start
 +
 +Et la réponse doit être : //Starting Squid HTTP proxy squid [ok]//
 +
 +==== DansGuardian ====
 +
 +Deux autres solutions sont d'​utiliser [[:​DansGuardian|DansGuardian via une passerelle tel qu'​expliqué sur cette page]] ou d'​utiliser [[:​dansguardian_sans_serveur|DansGuardian directement sur le pc naviguant sur le net]] (solution plus simple à mettre en place).
 +
 +==== OpenDNS ====
 +
 +  * www.opendns.com - (en anglais)
 +
 +La technique est différente,​ il s'agit ici d'​utiliser le service DNS qui transforme une adresse ( ex "​http://​ubuntu-fr.org"​ en adresse machine : "​80.125.12.55"​ ).
 +Du coup PAS DE LOGICIEL à installer sur l'​ordi,​ aucune baisse de performances. La démarche est simplement de rajouter ce DNS à votre configuration réseau. Il faut bien sûr que le compte de l'​enfant ne lui permette pas d'​aller modifier ce réglage.
 +
 +[[https://​www.opendns.com/​start?​device=ubuntu|Tutoriel en anglais]]
 +
 +Ci-dessous la traduction en français
 +
 +Ubuntu
 +
 +  - Faites un clic-droit sur l' "​icône réseau"​(situé en haut à droite, par défaut) et cliquez sur "​Modification des Connexions"​ pour ouvrir le Gestionnaire des connexions réseau.
 +  - Choisissez le type de connexion dont vous disposez. Pour cet exemple, nous allons utiliser "​Filaire"​.
 +  - Sous "​Filaire",​ sélectionnez "Auto Etho 'et cliquez sur " Modifier ".
 +  - Dans la fenêtre '​Modification Auto Etho', cliquez sur l'​onglet «Paramètres IPv4".
 +  - Sous "​Paramètres IPv4", changer la méthode '​Adresses automatiques uniquement (DHCP)"​.
 +  - Mettez ces adresses comme Serveurs DNS : 208.67.222.222,​ 208.67.220.220
 +  - Cliquez sur "​OK"​ et redémarrez votre machine. Vous pouvez ensuite visiter http://​welcome.opendns.com pour confirmer que vous utilisez OpenDNS. ( Il faut créer un compte gratuit et suivre les opérations de validation. Ensuite il faut se connecter à son compte et régler le niveau de protection souhaité qui est à "​none"​ par défaut; sans quoi il n' y aucun filtrage). ​
 +
 +Pour éviter que vos réglages soient révoqués après redémarrage,​ ou après
 +des périodes d'​inactivité,​ il peut être nécessaire de faire les
 +modifications suivantes par l'​intermédiaire de la ligne de commande :
 +
 +<code bash>
 +$ sudo cp /​etc/​resolv.conf /​etc/​resolv.conf.auto
 +$ gksudo gedit /​etc/​dhcp3/​dhclient.conf
 +# Ajoutez la ligne suivante au document
 +prepend domain-name-servers 208.67.222.222,​208.67.220.220;​
 +# enregistrez et quittez
 +$ sudo ifdown eth0 && sudo ifup eth0
 +</​code>​
 +
 +Il peut être nécessaire de changer eth0 pour votre propre interface
 +réseau si elle utilise un nom non-standard.
 +
 +=== OpenDNS et adresse IP dynamique ===
 +Une fois que vous avez créé un compte sur OpenDNS, il faut associer à ce compte votre adresse IP. Si vous avez une adresse IP dynamique la mise à jour automatique de cette association peut se faire :
 +
 +== via une simple requête WEB lancée automatiquement toutes les 10 minutes ==
 +<code bash>
 +$ sudo crontab -e
 +# Ajoutez la ligne suivante au document (voir doc vi ou nano)
 +*/10 * * * * wget -O - -q --http-user=opendnslogin --http-passwd=opendnspassword https://​updates.opendns.com/​nic/​update
 +# enregistrez et quittez (voir doc vi ou nano)
 +</​code>​
 +
 +« opendnslogin » est à remplacer par le login de votre compte OpenDNS
 +
 +« opendnspassword » est à remplacer par le mot de passe de votre compte OpenDNS ​
 +
 +== avec ddclient ==
 +[[http://​www.opendns.com/​support/​article/​192|doc sur opendns]]
 +
 +[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt://​ddclient|ddclient]]**.
 +
 +[[:​tutoriel:​comment_modifier_un_fichier|éditez le fichier]] **/​etc/​ddclient.conf**
 +<​file>​
 +# /​etc/​ddclient.conf
 +ssl=yes # use ssl-support
 +use=web, web=whatismyip.org
 +protocol=dyndns2
 +server=updates.opendns.com
 +login=opendnslogin
 +password='​opendnspassword'​
 +home
 +</​file>​
 +« opendnslogin » est à remplacer par le login de votre compte OpenDNS
 +« opendnspassword » est à remplacer par le mot de passe de votre compte OpenDNS ​
 +
 +
 +[[:​tutoriel:​comment_editer_un_fichier|éditez le fichier]] **/​etc/​default/​ddclient**
 +<​file>​
 +# Configuration for ddclient scripts
 +# generated from debconf on mardi 22 décembre 2009, 18:06:36 (UTC+0100)
 +#
 +# /​etc/​default/​ddclient
 +
 +# Set to "​true"​ if ddclient should be run every time a new ppp connection is
 +# established. This might be useful, if you are using dial-on-demand
 +run_ipup="​true"​
 +
 +# Set to "​true"​ if ddclient should run in daemon mode
 +run_daemon="​true"​
 +
 +# Set the time interval between the updates of the dynamic DNS name in seconds.
 +# This option only takes effect if the ddclient runs in daemon mode.
 +daemon_interval="​600"​
 +</​file>​
 +
 +Vérifiez que run_daemon est bien sur true
 +
 +vous pouvez tester le client avec 
 +<code bash>
 +sudo ddclient -v
 +</​code>​
 +
 +et relancer le daemon ​
 +<code bash>
 +sudo /​etc/​init.d/​ddclient restart
 +</​code>​
 +
 +=== OpenDNS et session utilisateur ===
 +Il est possible de faire en sorte que le filtrage ne s'​applique que si la session d'un utilisateur bien défini est ouverte. ​
 +
 +Pour cela il faut créer un script bash et deux fichiers DNS (resolv), un pour les utilisateurs non restreints et un pour l'​utilisateur à restreindre.
 +
 +Dans l'​exemple ci-dessous le script s'​appelle « opendns », le fichier DNS non restreint « resolv.adult » et restreint « resolv.child »
 +
 +Créer le fichier /​etc/​resolv.child :
 +<code bash>
 +$ sudo gedit /​etc/​resolv.child
 +</​code>​
 +avec les lignes suivantes :
 +<​file>​
 +# generated by opendns - resolv.child
 +
 +# /​usr/​sbin/​opendns
 +# /​etc/​resolv.child
 +# /​etc/​resolv.adult
 +# link /​etc/​NetworkManager/​dispatcher.d/​opendns
 +# line opendns in crontab as root (sudo crontab -e)
 +# line ALL ALL=NOPASSWD:/​usr/​sbin/​opendns in /​etc/​sudoers (sudo visudo)
 +
 +nameserver 208.67.222.222
 +nameserver 208.67.220.220
 +
 +</​file>​
 +Propriétaire : root via chown ; Permissions : 644 via chmod
 +<code bash>
 +$ sudo chown root:root /​etc/​resolv.child
 +$ sudo chmod 644 /​etc/​resolv.child
 +</​code>​
 +Créer le fichier /​etc/​resolv.adult :
 +<code bash>
 +$ sudo gedit /​etc/​resolv.adult
 +</​code>​
 +Avec les lignes suivantes :
 +<​file>​
 +# generated by opendns - resolv.adult
 +
 +# /​usr/​sbin/​opendns
 +# /​etc/​resolv.child
 +# /​etc/​resolv.adult
 +# link /​etc/​NetworkManager/​dispatcher.d/​opendns
 +# line opendns in crontab as root (sudo crontab -e)
 +# line ALL ALL=NOPASSWD:/​usr/​sbin/​opendns in /​etc/​sudoers (sudo visudo)
 +
 +nameserver x.x.x.x
 +nameserver y.y.y.y
 +
 +</​file>​
 +x.x.x.x et y.y.y.y sont à remplacer par les DNS de votre FAI
 +
 +Propriétaire : root via chown ; Permissions : 644 via chmod
 +<code bash>
 +$ sudo chown root:root /​etc/​resolv.adult
 +$ sudo chmod 644 /​etc/​resolv.adult
 +</​code>​
 +Créer le fichier /​usr/​sbin/​opendns : 
 +<code bash>
 +$ sudo gedit /​usr/​sbin/​opendns
 +</​code>​
 +avec les lignes suivantes :
 +<​file>​
 +#!/bin/bash
 +
 +# /​usr/​sbin/​opendns
 +# /​etc/​resolv.child
 +# /​etc/​resolv.adult
 +# link /​etc/​NetworkManager/​dispatcher.d/​opendns
 +# line opendns in crontab as root (sudo crontab -e)
 +# line ALL ALL=NOPASSWD:/​usr/​sbin/​opendns in /​etc/​sudoers (sudo visudo)
 +
 +if users | grep -c "​child"​ > /dev/null ; then
 +wget -O - -q --http-user=opendnslogin --http-passwd=opendnspassword https://​updates.opendns.com/​nic/​update
 +cp /​etc/​resolv.child /​etc/​resolv.conf
 +else
 +cp /​etc/​resolv.adult /​etc/​resolv.conf
 +fi
 +</​file>​
 +A la ligne 
 +
 +if users | grep -c "​child"​ > /dev/null ; then
 +
 +"​child"​ est a remplacer par le nom de l'​utilisateur que vous souhaitez restreindre (garder les guillemets)
 +
 +« opendnslogin » est à remplacer par le login de votre compte OpenDNS
 +
 +« opendnspassword » est à remplacer par le mot de passe de votre compte OpenDNS
 +
 +Ce script remplacera les DNS normaux par les DNS de OpenDNS si la session « child » est ouverte et mettra à jour votre adresse IP (dynamique) sur OpenDNS. Si la session « child » est inactive les DNS seront ceux de votre FAI et il n'y aura pas de mise à jour de votre adresse IP sur OpenDNS.
 +
 +Propriétaire : root via chown ; Permissions : 755 via chmod
 +<code bash>
 +$ sudo chown root:root /​usr/​sbin/​opendns
 +$ sudo chmod 755 /​usr/​sbin/​opendns
 +</​code>​
 +Il faut ensuite permettre aux utilisateurs de lancer le script en tant que root sans avoir à taper le mot de passe :
 +<code bash>
 +$ sudo visudo ​
 +# Ajoutez la ligne suivante au document (voir doc vi ou nano) :
 +ALL ALL=NOPASSWD:/​usr/​sbin/​opendns
 +# enregistrez et quittez (voir doc vi ou nano)
 +</​code>​
 +Ajouter un lien dans /​etc/​NetworkManager/​dispatcher.d/​ pour que le script s'​exécute à chaque changement d'​état du réseau avec la commande :
 +<code bash>
 +$ sudo ln /​usr/​sbin/​opendns /​etc/​NetworkManager/​dispatcher.d/​opendns
 +</​code>​
 +Ajouter la ligne dans le cron pour que le script s'​exécute toute les 10 minutes :
 +<code bash>
 +$ sudo crontab -e
 +# Ajoutez la ligne suivante au document (voir doc vi ou nano)
 +*/10 * * * * /​usr/​sbin/​opendns
 +# enregistrez et quittez (voir doc vi ou nano)
 +</​code>​
 +Dans ce cas, le script opendns effectuant lui-même la mise à jour de l'​adresse IP sur OpenDNS, ​ il n'est plus nécessaire de mettre la ligne d'​update automatique dans le crontab décrite plus haut (OpenDNS et adresse IP dynamique).
 +
 +Vous pouvez aussi mettre "sudo opendns"​ dans les programmes de démarrage de la session « child » (que « child » pourrait quand même désactiver,​ c'est pour cela que l'on utilise aussi le crontab)
 +
 +
 +===== Voir aussi=====
 +  * [[http://​kb.mozillazine.org/​Parental_controls|Contrôle parental chez mozilla]]
 +  * [[https://​addons.mozilla.org/​fr/​firefox/​addon/​11595|eXtension broozi]]
 +
 +
 +  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=167998|Discussion "​Contròle parental et IPtables"​ sur le forum ubuntu-fr]]
 +  * [[:​tutoriel:​restrictions_horaires|Restreindre les plages horaires autorisées pour chaque utilisateur]]
 +  * [[https://​github.com/​raf64flo/​parental_control|Scripts shell sur Github pour installer et supprimer le contrôle parental (à adapter, il n'y a pas de paramètres à ce jour)]]
 +
 +
 +----
 +
 +//​Contributeurs : [[:​utilisateurs:​Roozeec]],​ Boris Le Hachoir, [[:​utilisateurs:​Fabien26]],​ [[:​utilisateurs:​Furious-therapy]],​ sensouci.//