vendredi 8 mars 2013

Configuration de squidguard comme contrôle parental

Ayant de jeunes enfants à la maison, j'ai commencé à me poser la question de mettre en place un contrôle parental afin d'éviter d'amener mes enfants sur des pages que je n'aurais pas voulu qu'il voit (porno, jeux d'argent, violences etc.).

Bref, vous l'aurez compris, papa geek c'est posé la question de savoir qu'est ce qu'il pourrait bien mettre en oeuvre pour faire ce travail. J'ai rapidement trouvé une réponse au travers de l'outil squidguard. Nous allons donc voir ensemble comment rapidement le configurer afin de répondre à ce besoin.

Il va sans dire que papa geek utilise une distribution Linux (ici une Debian like) mais que ces instructions s'appliquent à n'importe quelle distribution Linux (voir à - j'ai du mal à le dire mais tant pis - à MacOS X - herk !).

Installation de squid et squidguard

La première phase est relativement rapide - pour peu que vous utilisiez une distribution Linux - et consiste à installer le package correspondant. Ceci se fait tout naturellement avec apt-get/aptitude/yum :

apt-get install squidguard

Il faut savoir qu'à ce moment, vous allez installer deux produits : squid et squidguard. Squid est un simple proxy HTTP mais qui a la particularité de pouvoir faire appel à des programmes externes pour procéder à des réécritures de contenu. Ici, le programme de réécriture externe est squidguard.

C'est très bien vous allez me dire mais squidguard vient sans aucune règle de configurer : le vilain ne filtre rien du tout ! Nous allons donc voir comment faire pour rajouter un filtrage dans squidguard avec les blacklists de l'université de Toulouse.

Configuration de squidguard

Récupération des blacklists

Rendons nous maintenant dans le répertoire /var/lib/squidguard/ et supprimons le répertoire db (en principe vide) :

rmdir /var/lib/squidguard/db

Récupérons maintenant une archive de la dernière version des blacklists :

cd /tmp/
wget http://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz

Décompressons maintenant l'archive :

cd /var/lib/squidguard
tar xfv /tmp/blacklists.tar.gz

Renommons tout ça et attribuons les bons droits :

mv blacklist db
chown -R proxy:proxy /var/lib/squidguard/db

Il faut maintenant modifier le contenu du fichier /etc/squid3/squid.conf avec le contenu suivant :

url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
url_rewrite_children 10

http_port 3128 transparent

Et faire suivre tout ceci d'un arrêt/relance :

/etc/init.d/squid3 restart

Voyons maintenant comment mettre en place les blacklists.

Mise en place des blacklists

Nous allons maintenant configurer notre squidguard afin qu'il prenne en compte les listes que nous venons de récupérer. Il faudra également choisir les listes que nous allons vouloir activer. Pour info, pour savoir à quoi correspond chacune des listes, il suffit d'ouvrir le fichier global_usage. Chaque catégorie y est présenté comme suit :


NAME: adult
DEFAULT_TYPE: black
SOURCE: http://squidguard.univ-tlse1.fr
DESC EN: Some adult site from erotic to hard pornography.
DESC FR: Des sites adultes allant de l'érotique à la pornographie dure.
NAME EN: Adult (X)
NAME FR: Adulte (X)
NAME IT: Siti per adulti (XXX)
NAME NL: 18+ (X)
NAME RU: Эротика
NAME DE: Porno


Charge à vous de sélectionner les catégories qui vous intéressent et de les ajouter sous cette forme dans le fichier /etc/squidguard/squidGuard.conf :

# Emplacement de la définition de la blacklist :

dbhome /var/lib/squidguard/db
logdir /var/log/squidguard

# Définition des différentes catégories
dest adult {
  domainlist adult/domains
  urllist adult/urls
}

dest sect {
  domainlist sect/domains
  urllist sect/urls
}

dest malware {
  domainlist malware/domains
  urllist malware/urls
}

dest remote-control {
  domainlist remote-control/domains
  urllist remote-control/urls
}

# Règle à appliquer en fonction des catégories définies ci-dessus
acl {
  default {
    pass !adult !sect !malware !remote-control all
    # Page de redirection. Changer là par ce que vous voulez
    redirect http://localhost/block.html
  }
}

Sauvegarder votre fichier et procéder maintenant à une mise à jour des bases de squidguard (soyez patient, c'est un peu long) :

update-squidguard

Attention ! Les espaces en début du fichier de configuration doivent être des tabulations ! Dans le cas  où vous auriez fait une bêtise dans votre fichier, le script se bloquera sans aucun message et sans activité CPU. N'hésitez pas à consulter le contenu du fichier /var/log/squidguard/squidGuard.log ou lancer la commande suivante pour obtenir des informations complétementaires :

squidGuard -d -b -P -C all

Reste maintenant à configurer votre navigateur afin de pointer sur le proxy.

Configuration du navigateur

Ici, rien d'extraordinaire : se rendre dans les paramètres de votre navigateur, dans les paramètres réseaux, rentrer l'adresse de votre proxy (ip : 127.0.0.1 et port : 3128) et c'est parti.

Mutualisation du proxy

Dans le cas où vous voudriez mutualiser votre proxy, il faudra pour cela accepter les connexions depuis votre réseau local. Tout ceci se fait en rajoutant les directives suivantes dans votre fichier /etc/squid3/squid.conf :

acl localnet src 192.168.0.0/16
http_access allow localnet

Reste maintenant à relancer squid pour prendre en compte la modification (/etc/init.d/squid3 restart). Il faudra également renseigner l'adresse IP de la machine qui vous servira de proxy dans les différents navigateurs de vos différentes machines clientes.

A noter que si vous utilisez un serveur DHCP, il est possible de préciser l'adresse de votre proxy. La configuration se fera alors automatiquement.

Je n'ai donc plus qu'à vous souhaiter un bon surf sans trop de saleté pour vos gamins !