Mise à jour du contrôle parental : gestion d’un quota de temps
Voici une petite évolution du système de contrôle parental pour pouvoir limiter la durée de connexion des utilisateurs
Lors du précédent article nous avions vu comment installer et configurer un système de contrôle parental avec un Raspberry Pi et les outils Squid et SquidGuard. Jusqu’ici tout va bien. Sauf que la demoiselle à la maison commence à utiliser Internet souvent voir trop souvent. Donc comme disent les anciens : aux grands maux les grands remèdes. J’ai donc choisi la mise en place d’un quota de temps intégré dans Squid.
Un contrôleur externe existe pour Squid grâce à un contributeur, Dr. Tilmann Brubeck ! Le module est disponible depuis la version 3.4 de Squid sauf que …. le module n’est pas compilé et intégré dans le package ! Il va donc falloir s’y coller à la main.
- Mettre à jour la distribution. Attention vous devez avoir la version Jessie pour avoir accès au paquet de Squid 3.4.8.
apt-get update && apt-get upgrade -y
Ajoutez après la commande suivante pour mettre à jour la version de Raspbian si vous n’êtes pas à jour (et n’oubliez pas de faire un reboot après)
apt-get dist-upgrade
- Installer les dépendances et sources pour pouvoir compiler Squid
apt-get install dpkg-dev apt-get source squid3 apt-get build-dep squid3 apt-get install devscripts build-essential fakeroot libssl-dev
- Soyez patient ca prend du temps. Ensuite vous devriez avoir un répertoire squid3-3.4.8 dans le répertoire où vous avez lancé vos commandes. Allez dans ce répertoire
cd squid3-3.4.8
- Editez le fichier debian/rules contenant les instructions de compilation pour Debian en le modifiant pour compiler notre module de quota. Remplacer la ligne :
--enable-external-acl-helpers="file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group"
par
--enable-external-acl-helpers="file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group,time_quota"
- Vous pouvez maintenant lancer la configuration. Vous devez toujours être dans le répertoire squid3-3.4.8.
./configure
debuild -us -uc -b - Quelques longues minutes plus tard, vous pouvez remonter d’un répertoire et lister tous les paquets que vous venez de créer
cd .. ls -lrt *.deb
- Sauvegardez votre configuration actuelle (même si l’installation fait aussi une sauvegarde il me semble mais bon …)
cp /etc/squid3/squid.conf /etc/squid3/squid.conf.save
- Installez vos paquets. Seuls deux sont nécessaires :
dpkg -i squid3_3.4.8-6+deb8u1_armhf.deb squid3-common_3.4.8-6+deb8u1_all.deb
- L’installation terminée vous pouvez restaurer votre configuration
cp /etc/squid3/squid.conf.save /etc/squid3/squid.conf
- Relancez Squid pour valider votre configuration
service squid3 restart
- Vous avez maintenant votre nouveau Squid avec un helper (c’est le nom) pour valider les quotas
- Pour configurer les quotas il faut maintenant s’attaquer à l’authentification. Car oui pour que les quotas soient contrôlés, il faut avoir des comptes. Ca va être une des grosses différences par rapport à notre précédente configuration.
Pour créer les comptes nous allons passer par l’outil qui va avec Apache pour gérer les mots de passe htpasswdapt-get install apache-utils
- Créer votre base des utilisateurs avec les mots de passe associés
htpasswd -c /etc/squid3/passwd chris <my_password>
- Nous devons ensuite créer un fichier faisant le mapping entre un utilisateur et son quota. Je l’ai créé dans /etc/squid3/time_quota. Par exemple je me suis créé un utilisateur en ajoutant la ligne suivante (attention aux espaces) :
chris 30h / 1w
Le quota donne à l’utilisateur chris 30h d’accès chaque semaine (le 1w). Les unités possibles sont « s », « m », « h », « d », « w ». Les valeurs décimales sont acceptées (ex: 1.5h).
- Avant dernière étape, il faut ensuite configurer Squid pour forcer l’authentification puis activer les quotas. Tout se passe dans le fichier de configuration /etc/squid3/squid.conf.
Ajouter en début de configuration les lignes :auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwd external_acl_type time_quota ttl=60 children-max=1 %LOGIN /usr/lib/squid3/ext_time_quota_acl -b /var/run/squid3/time_quota.db /etc/squid3/time_quota
Puis à la fin des lignes des acl :
acl time_quota external time_quota acl authenticated_users proxy_auth REQUIRED http_access deny !time_quota http_access deny !authenticated_users
Et enfin après la définition du port de Squid :
deny_info TIME_QUOTA_EXCEEDED time_quota
- Vous pouvez maintenant redémarrer Squid et profiter de votre connexion. Tant qu’il vous reste du quota !
service squid3 restart