Contrôle paren­tal sur Android : liste noire de sites

Il y a pléthore d’ap­pli­ca­tions de contrôle paren­tal sur Android. Mais je n’en ai trouvé aucune de libre. Plutôt que de lais­ser mon fils risquer de tomber sur des trucs non recom­man­dables en le lais­sant sans aucune protec­tion, j’ai trouvé une méthode qui vaut ce qu’elle vaut : utili­ser AdAway, un bloqueur de pubs qui se base sur des listes noires pour qu’il bloque aussi des sites clas­si­fiés par l’univer­sité de Toulouse.

La liste de l’uni­ver­sité de Toulouse n’est pas exhaus­tive (y a-t-il un seul index de sites qui le soit ?) mais elle a le mérite d’exis­ter…

Un petit script pour créer/mettre à jour la liste noire :

#! /bin/bash
mkdir -p /tmp/blacklist
cd /tmp/blacklist
for i in adult.tar.gz agressif.tar.gz dangerous_material.tar.gz drogue.tar.gz phishing.tar.gz publicite.tar.gz tricheur.tar.gz mixed_adult.tar.gz dating.tar.gz malware.tar.gz sect.tar.gz remote-control.tar.gz arjel.tar.gz
do
    curl -s ftp://ftp.ut-capitole.fr/pub/reseau/cache/squidguard_contrib/$i | tar x --gunzip
done
sed -e "s@\(.*\)@127.0.0.1 \1\n::1 \1@" */domains | grep -v " \(\.\|[[:digit:]]\)\+$" > /var/www/blog/hosts.txt

split -l 500000 --numeric-suffixes=1 --additional-suffix=.txt /var/www/blog/hosts.txt /var/www/blog/hosts

Notez bien le split : il permet de décou­per la liste noire en plusieurs fichiers de 500 000 lignes. En effet, la seule liste des sites pour adultes pèse plus de 100Mio : AdAway a du mal à trai­ter un fichier aussi lourd sans crasher. On va donc le décou­per en plusieurs fichiers (chez moi, cela donne 9 fichiers : /var/www/hosts01.txt, /var/www/hosts02.txt, etc.).

On placera bien évidem­ment une tâche cron pour mettre à jour les listes noires. Il est possible d’ajou­ter ou de reti­rer des caté­go­ries à inter­dire dans le for i.

Les fichiers /var/www/hostsXX.txt doivent être acces­sible depuis le web. Les miens sont acces­sibles aux adresses suivantes :

Ou, si votre Android est assez costaud pour qu’AdA­way mange tout d’un coup : https://fiat-tux.fr/hosts.txt

Ensuite il suffira d’ajou­ter l’adresse des listes noires comme « Source d’hôtes » dans AdAway, et ce sera bon đŸ™‚

Couper l’ac­cès wifi d’un appa­reil la nuit avec OpenWRT

Mon fils possède plusieurs appa­reils suscep­tibles d’al­ler sur Inter­net. Comme je ne suis pas dans sa chambre la nuit, comment faire pour s’as­su­rer qu’il ne va pas passer sa nuit à regar­der des vidéos sur Youtube ? En lui coupant l’ac­cès à Inter­net, pardi.

Oui, je sais, confiance, tous­sa… mais bon, j’ai été jeune moi aussi, et je sais bien qu’on est toujours tenté d’en­freindre les règles… surtout quand c’est aussi simple que se cacher avec son machin sous la couette đŸ™‚ (moi c’était une lampe et un bouquin, mais c’est moins discret, la lumière passant géné­ra­le­ment en dessous de la porte.

On peut géné­ra­le­ment, avec les box des FAI clas­siques, choi­sir des plages d’ac­ti­va­tion du wifi. Mais j’ai envie d’avoir du wifi tard le soir, moi ! Et de toute façon, je n’uti­lise pas de box d’un FAI clas­sique : j’uti­lise un VPN chez LDN grâce à mon nouveau jouet que j’aime d’amour, le Turris Omnia qui utilise OpenWRT.

Du coup, c’est assez simple : il suffit de rele­ver l’adresse MAC de l’ap­pa­reil à bloquer et d’ajou­ter cette règle à /etc/config/firewall :

config rule
    option src 'lan'
    option dest '*' 
    option src_mac 'XX:XX:XX:XX:XX:XX'
    option proto 'tcp udp'
    option start_time '20:30'
    option stop_time '07:30'
    option weekdays 'mon tue wed thu fri sat sun'
    option target 'REJECT'
    option name 'Parental control'

Un petit /etc/init.d/firewall restart, et hop ! C’est tout bon đŸ™‚

Edit : Sango­kuss vient de m’in­for­mer que luci-app-wifi-sche­dule peut faire le job d’une box clas­sique pour défi­nir des plages d’ac­ti­va­tion du wifi sur le système LEDE (basé sur OpenWRT). Ça n’est pas dans les dépôts de mon OpenWRT, et ça ne corres­pond pas à mon besoin, mais ça peut être utile đŸ™‚