Installer
un "Contrôle parental" pour le réseau sur Raspberry Pi |
Information sur : le contrôle parental |
Il n'est pas
nécessaire de préciser que les parents souhaitent protéger leurs
enfants des contenus inapropriés que l'on peut rencontrer par
inadvertance sur internet. voir l'article sur Wikipedia Pour un établissement qui recoit du public mineur, ce type de filtrage est une obligation légale. (cf. la circulaire MEN N°2004-035 du 18/02/2004) Remarque : les choix de filtrage indiqués dans ce tutoriel ne le sont qu'à titre d'exemple; il vous appartient de sélectionner ce que vous voulez filtrer ou non, dans le respect de la loi. |
Information sur : le Raspberry Pi |
Le Raspberry Pi est
un ordinateur monocarte à faible coût; il embarque un processeur ARM
à 2 ou 4 coeurs : ses performances sont suffisantes pour la plupart
des applications domestiques. Sa consommation électrique de l'ordre de 2-3 W est très raisonnable... |
Information sur : Squid3, Squidguard |
Squid3 est un
logiciel proxy; son rôle est d'optimiser l'utilisation de la bande
passante de la connexion internet, en faisant office de cache et de
mandataire. Squidguard est le complément naturel de Squid : il ajoute le filtrage des sites en interdisant l'accès aux contenus inapropriés ClamAV est l'antivirus intégré dans ce système, il détecte les virus en provenance d'internet |
Chapitre 1. Ce chapitre traite des prerequis à ce tutoriel |
Préparation du Raspberry Pi |
||||||||
Installation du Raspberry Pi testé avec Raspbian "Jessie" (squid 3.4.8) et Raspbian "Wheezy" (squid 3.1.20). |
Voir le tutoriel sur ce site. La configuration se fait à distance, depuis un poste Windows ou Linux; connecte-toi (en tant que root) au Raspberry Pi : 1) avec WinSCP (pour l'édition de fichiers) 2) avec Putty (pour les commandes) |
||||||||
Configurer
le réseau du Raspberry Pi La configuration est un peu particulière car on a besoin de 2 adresses IP sur le Raspi L'exemple donné ci-contre suppose que : - la box (routeur) internet a pour adresse : 192.168.1.1 - qu'elle fait office de serveur DNS La commande "ifconfig" permet de vérifier l'interface eth0 et l'interface eth0:1 ont les bonnes adresses Remarque : la configuration décrite ici est valable pour Raspbian "Jessie"; si tu utilises Raspbian "Wheezy", les deux interfaces eth0 et eth0:1 peuvent être configurées dans /etc/network/interfaces |
|
||||||||
Conclusion
: |
Le Raspberry Pi est
prêt pour l'installation du système |
Chapitre 2. Ce chapitre explique comment obliger toutes les requêtes internet à passer via le Raspberry Pi |
Préparation de l'infrastructure du réseau |
||||
Nous
allons créer un point de passage obligatoire entre la "box"
et les ordinateurs/tablettes/smartphones de la maison. C'est ce qu'illustre le schéma ci-contre; le Pi prend le rôle de DHCP ce qui lui permet de s'imposer comme "passerelle par défaut" pour tous les clients, PC, tablettes, etc.. Il peut de ce fait intercepter et filtrer les requêtes internet Remarque : le point d'accès WiFi sera idéalement séparé de la box, mais ce n'est strictement obligatoire |
|||||
Désactiver la fonction DHCP sur
la "box" internet. La méthode dépend du type de "box". Ici le cas d'une "SFR box" Tout le réseau sera désormais géré par le DHCP du Raspberry Pi Attention : certaines box "n'apprécient" pas qu'on désactive le DHCP - nécessite de configurer le module TV manuellement ?? - la dernière SFRBox ne laisse pas passer les trames DHCP du PI !! il faut donc un AP Wifi séparé |
|||||
Installer IPTABLES sur le RPi iptables est le logiciel indispensable pour la redirection "transparente" et pour le NAT (masquage d'adresse) car certaines "box" ne supportent pas le routage des adresses locales. note : sur certaines versions de iptables-persistent, la commande est : /etc/init.d/netfilter-persistent save |
apt-get
install iptables-persistent iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE /etc/init.d/iptables-persistent save |
||||
Configurer le réseau du Raspberry Pi: - activer le routage (ip_forward) Après avoir effecté ces modifications, redémarrer le RPi |
|
||||
Installer la fonction DHCP sur
le RPi. La plage d'IP attribuée par le Pi : - 10.10.10.1 à 10.10.10.100; La nouvelle passerelle des clients internet de la maison est le Pi à l'adresse 10.10.10.254 L'exemple donné ci-contre suppose que : - la box (routeur) internet a pour adresse : 192.168.1.1 - qu'elle fait office de serveur DNS |
/etc/ini /etc/init.d/iptables-persistent savet.d/iptables-persistent save /etc/init.d/iptables-persistent save |
||||
Conclusion | Le réseau est maintenant géré par le RPi. C'est lui qui attribue
les paramètres IP aux machines qui se connectent. Toutes les communications internet passent désormais par lui; cependant, pour le moment, il ne filtre rien |
Chapitre 3. Ce chapitre explique comment installer les logiciels requis pour le fonctionnement de SquidGuard |
Installation des logiciels requis pour le filtrage |
||||
Introduction |
L'installation
du filtrage requiert l'installation de plusieurs logiciels - Squid3 - Squidguard |
||||
Création
d'un cache pour Squid3 (source : idée trouvée sur homepiserver.net) |
|
||||
Installation
de Squidguard et configuration de Squid3 |
|
||||
Conclusion | Nous avons installé les 2 logiciels nécessaires au filtrage le proxy squid3 est déjà opérationel, mais le filtrage n'est pas configuré |
Chapitre 4. Ce chapitre explique comment Configurer squidGuard |
Configuration de squidGuard |
Introduction Ouvrir le fichier "/etc/squidguard/squidGuard.conf" |
Repère et ouvre le fichier depuis la session WinSCP |
Configuration des filtres Tu peux copier/coller la configuration ci-contre dans ton fichier squidGuard.conf |
dest
adult { domainlist blacklists/adult/domains urllist blacklists/adult/urls expressionlist blacklists/adult/expressions } dest agressif { domainlist blacklists/agressif/domains urllist blacklists/agressif/urls } dest arjel { domainlist blacklists/arjel/domains } dest astrology { domainlist blacklists/astrology/domains urllist blacklists/astrology/urls } dest audio-video { domainlist blacklists/audio-video/domains urllist blacklists/audio-video/urls } dest bank { domainlist blacklists/bank/domains } dest blog { domainlist blacklists/blog/domains urllist blacklists/blog/urls } dest celebrity { domainlist blacklists/celebrity/domains urllist blacklists/celebrity/urls } dest chat { domainlist blacklists/chat/domains urllist blacklists/chat/urls } dest child { domainlist blacklists/child/domains urllist blacklists/child/urls } dest cleaning { domainlist blacklists/cleaning/domains urllist blacklists/cleaning/urls } dest cooking { domainlist blacklists/cooking/domains } dest dangerous_material { domainlist blacklists/dangerous_material/domains urllist blacklists/dangerous_material/urls } dest dating { domainlist blacklists/dating/domains urllist blacklists/dating/urls } dest drogue { domainlist blacklists/drogue/domains urllist blacklists/drogue/urls } dest filehosting { domainlist blacklists/filehosting/domains urllist blacklists/filehosting/urls } dest financial { domainlist blacklists/financial/domains urllist blacklists/financial/urls } dest forums { domainlist blacklists/forums/domains urllist blacklists/forums/urls } dest gambling { domainlist blacklists/gambling/domains urllist blacklists/gambling/urls } dest games { domainlist blacklists/games/domains urllist blacklists/games/urls } dest hacking { domainlist blacklists/hacking/domains urllist blacklists/hacking/urls } dest jobsearch { domainlist blacklists/jobsearch/domains } dest lingerie { domainlist blacklists/lingerie/domains } dest liste_bu { domainlist blacklists/liste_bu/domains urllist blacklists/liste_bu/urls } dest malware { domainlist blacklists/malware/domains urllist blacklists/malware/urls } dest manga { domainlist blacklists/manga/domains urllist blacklists/manga/urls } dest marketingware { domainlist blacklists/marketingware/domains urllist blacklists/marketingware/urls } dest mixed_adult { domainlist blacklists/mixed_adult/domains urllist blacklists/mixed_adult/urls } dest mobile-phone { domainlist blacklists/mobile-phone/domains urllist blacklists/mobile-phone/urls } dest phishing { domainlist blacklists/phishing/domains urllist blacklists/phishing/urls } dest press { domainlist blacklists/press/domains urllist blacklists/press/urls } dest publicite { domainlist blacklists/publicite/domains urllist blacklists/publicite/urls } dest radio { domainlist blacklists/radio/domains urllist blacklists/radio/urls } dest reaffected { domainlist blacklists/reaffected/domains urllist blacklists/reaffected/urls } dest redirector { domainlist blacklists/redirector/domains urllist blacklists/redirector/urls } dest remote-control { domainlist blacklists/remote-control/domains urllist blacklists/remote-control/urls } dest sect { domainlist blacklists/sect/domains urllist blacklists/sect/urls } dest sexual_education { domainlist blacklists/sexual_education/domains urllist blacklists/sexual_education/urls } dest shopping { domainlist blacklists/shopping/domains urllist blacklists/shopping/urls } dest social_networks { domainlist blacklists/social_networks/domains urllist blacklists/social_networks/urls } dest sports { domainlist blacklists/sports/domains } dest strict_redirector { domainlist blacklists/strict_redirector/domains urllist blacklists/strict_redirector/urls } dest strong_redirector { domainlist blacklists/strong_redirector/domains urllist blacklists/strong_redirector/urls } dest tricheur { domainlist blacklists/tricheur/domains urllist blacklists/tricheur/urls } dest warez { domainlist blacklists/warez/domains urllist blacklists/warez/urls } dest webmail { domainlist blacklists/webmail/domains urllist blacklists/webmail/urls } |
Création
d'une ACL Dans le fichier squidGuard.conf, Créer une ACL pour obtenir quelque chose comme ca => tu choisis quelles catégories tu veux interdire; il y en a beaucoup plus que sur l'exemple ci-contre ! "redirect" est l'URL de la page Web qui apparaitra quand une requête aura été rejettée : à personaliser ! |
src
localNetwork { ip 192.168.0.0/16 ip 10.10.10.0/24 log blocked.log } acl { localNetwork { pass !adult !mixed_adult all redirect http://www.google.fr } default { pass none redirect http://www.google.fr } log block } |
Installation
des "blacklists" (Patience : cette opération peut être assez longue!) |
cd /var/lib/squidguard/db/ wget ftp://ftp.univ-tlse1.fr/blacklist/blacklists.tar.gz tar xzf blacklists.tar.gz chown -R proxy:proxy blacklists sudo -u proxy squidGuard -c /etc/squidguard/squidGuard.conf -C all |
Application des modifications | Après l'opération précedente, il
faut vérifier que tout s'est bien passé en consutant le
fichier /var/log/squidguard/squidguard.log. Les dernières lignes du fichier doivent ressembler à ceci : 2016-03-22 18:16:31 [3485] INFO: squidGuard 1.5 started (1458666684.135) 2016-03-22 18:16:31 [3485] INFO: db update done 2016-03-22 18:16:31 [3485] INFO: squidGuard stopped (1458666991.299) si ce n'est pas le cas, corriger en tenant compte du message d'erreur, puis relancer "sudo -u proxy squidGuard -c /etc/squidguard/squidGuard.conf -C all" Quand il n'y a plus de message d'erreur faire squid3 stop squid3 start |
Conclusion |
A ce stade,
le filtrage est opérationnel, uniquement si
tu spécifies dans les paramètres du navigateur internet du
PC le proxy : - adresse : l'adresse ip du Rpi - port : 3128 Ou bien, sur un smartphone/tablette Android il faut aller sur les paramètre "wifi" => "modifier le réseau" => "Avancés" => "proxy manuel " et entrer les paramètres comme iindiqué ci-dessus. |
Chapitre 5. Ce chapitre explique comment améliorer le système |
Perfectionnements et maintenance |
|
Introduction |
Perfectionnement
: - mise en place du proxy transparent pour éviter d'avoir à configurer pc et tablettes clients Maintenance : - Mise à jour des listes de sites "filtrés" |
|
Mise
en place du proxy transparent : redirection iptables Nous ajoutons une règle dans le fichier rc.local pour rediriger les requêtes à destination du serveur web (port 80) vers le service squid (port 3128) Note : bien que cela fonctionne, il est préférable, quand c'est possible (ex : paramètre "wifi" sur Android) de configurer le proxy de façon explicite sur la machine cliente. |
|
|
Mise
en place du proxy transparent : configuration de squid (optionnel) |
Il faut modifier une ligne du
fichier /etc/squid3/squid.conf : décommentes la ligne contenant le mot "intercept ", comme ceci : http_port 3129 intercept |
|
Mise
à jour des "blacklist" Information |
Les listes dites "de Toulouse"
sont disponibles à cette adresse : http://dsi.ut-capitole.fr/blacklists/ Pour mettre à jour, reprendre la section "installation des blacklists" |
|
Conclusion |
Le filtrage est opérationnel
pour tous les postes du réseau, sans qu'aucune configuration
manuelle ne soit nécessaire sur ceux-ci. Les listes de sites filtrés peut être mis à jour en téléchargeant la "liste de Toulouse" |