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

squid time quota

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.

  1. 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
  2. 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
  3. 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
  4. 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"
  5. Vous pouvez maintenant lancer la configuration. Vous devez toujours être dans le répertoire squid3-3.4.8.
    ./configure
    debuild -us -uc -b
  6. 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

    squid time quota deb packages

  7. 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
  8. 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
  9. L’installation terminée vous pouvez restaurer votre configuration
    cp /etc/squid3/squid.conf.save /etc/squid3/squid.conf
  10. Relancez Squid pour valider votre configuration
    service squid3 restart
  11. Vous avez maintenant votre nouveau Squid avec un helper (c’est le nom) pour valider les quotas
    squid time quota plugin helper
  12. 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 htpasswd

    apt-get install apache-utils
  13. Créer votre base des utilisateurs avec les mots de passe associés
    htpasswd -c /etc/squid3/passwd chris <my_password>
  14. 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).

  15. 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
  16. Vous pouvez maintenant redémarrer Squid et profiter de votre connexion. Tant qu’il vous reste du quota !
    service squid3 restart

Vous aimerez aussi...