====== Contrôle parental à l'aide de CTparental ======
* Objet : contrôler le temps passé devant l'écran, les horaires d'accès et les contenus consultés en ligne.
* Niveau requis : {{tag>débutant avisé}}
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi : {{tag>à-tester}}
* Création par [[user>mazkagaz]] 07/09/2023
* Testé par <...> le <...> FIXME
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=33897 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
**Nota :**
Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
===== Introduction =====
Nous allons mettre en place un contrôle parental sur une debian 12 à l'aide de CTparental. Pour les versions précédentes de debian, d'autres tutos existent :
* [[https://forum-debian.fr/wiki/Contr%C3%B4le_parental|Sur forum-debian.fr]]
* deux autres tutos sur numetopia : [[https://www.numetopia.fr/installation-de-ctparental-et-configuration/|celui-ci]] et [[https://www.numetopia.fr/ctparental-controle-parental-linux/|celui-ci]]
* sur [[https://gitlab.com/ctparentalgroup/CTparental/-/wikis/installation-fr|le gitlab de CTparental]]
Je me suis largement inspiré de ces tutos dont je vais donner les grandes étapes, en insistant sur les points qui ont été bloquant dans mon contexte, et en ajoutant des astuces de paramétrage qui m'ont été utiles.
===== Prérequis =====
Il faut disposer de **deux comptes utilisateur** sur le poste de travail : un compte **enfant** sans les droits administrateur et un **parent** avec les droits administrateur.
Si le poste de l'enfant est paramétré pour se connecter automatiquement à sa session au démarrage, il faut désactiver cette connexion automatique.
FIXME Certains tutos disent qu'il faut désactiver certain services qui seront pris en charge par CTparental. Je ne l'ai pas fait et ça fonctionne chez moi. Je vous laisse modifier ce tuto si vous constatez que cela est nécessaire pour certain services.
Installation de gdebi :
apt install gdebi
**ATTENTION** ! \\ Il faut activer les dépôts trixie (testing actuel) et régler les priorités afin de régler le souci de dépendances dnscrypt-proxy non satisfaites avec debian 12. Cette modification doit être réalisée avec beaucoup de prudence si vous ne voulez pas rendre le système instable.
Pour éviter cela, il existe une série de tests que vous pouvez faire pour tester votre configuration, et de précautions à prendre.
Après avoir **créé ou modifié** votre fichier ''preferences'', la première chose à faire est dans un terminal en root :
apt update
Puis vérifiez que vos modifications ont bien été prises en compte grâce à ''apt-cache policy''.
Si les résultats affichés ne vous conviennent pas, vous risquez d'avoir une mauvaise
surprise après une mise à jour...
le code ci-dessous configure le pinning pour n'installer que le paquet dnscrypt-proxy via la branche trixie (Debian testing), les autres serons pris dans la branche bookworm (Debian 12) ceci a fin d'éviter de basculer sur une testing à la prochaine mise à jour des paquets du système.
echo "deb http://ftp.de.debian.org/debian trixie main" > /etc/apt/sources.list.d/trixie.list
{
echo 'Package: dnscrypt-proxy
Pin: release n=trixie
Pin-Priority: 500
Package: *
Pin: release n=trixie
Pin-Priority: 1
'
} > /etc/apt/preferences.d/trixie.pref
**ATTENTION** ! \\ On se souvient du warning précédent avant de continuer. Tout va bien ? Alors on continue en se rappelant que quoi qu'il advienne, vous êtes seul-e responsable ;-)
===== Installation =====
Visiter le [[https://gitlab.com/ctparentalgroup/CTparental/-/releases|site de téléchargement]], choisir et télécharger la version qui vous convient. Il n'y a pas de version pour debian 12. J'ai choisi la version pour debian 11 full nginx.
On ouvre un terminal et on lance l'installation :
gdebi ctparental-full-nginx*.deb
Suivre les instructions dans le terminal :
* Oui, on installe : o puis Entrée
* ne pas modifier le codage clavier Entrée
...on patiente...plus ou moins longtemps...on va boire un café...on se gratte le nez...
* on crée l'identifiant pour administrer le contrôle parental + Entrée
* on crée le mot de passe + Entrée
* on confirme le mot de passe + Entrée
Et voilà, à ce stade, c'est opérationnel.
===== Utilisation =====
Pour l'utilisation, je ne vais pas réinventer la roue, je vous renvoie vers [[https://www.numetopia.fr/installation-de-ctparental-et-configuration/#configuration_de_ctparental|ce lien]] pour la configuration et [[https://www.numetopia.fr/installation-de-ctparental-et-configuration/#informations_et_commandes_utiles_pour_l%e2%80%99administration_de_ctparental_en_ligne_de_commande|celui-ci]] pour l'administration.
===== Bonus : ouverture de ports =====
On rembobine l'histoire et on reprend la fin de l'install :
"//....blablabla....//
* //on confirme le mot de passe +// Entrée
//Et voilà, à ce stade, c'est opérationnel.//"
...Ou pas ! :-)
Si, comme moi, vous aviez une politique d'accès bien définie via nftables, et bien du coup, non, ça n'est pas opérationnel car CTparental a pris la main sur nftables et votre configuration passe désormais par lui.
On édite le fichier ''/etc/CTparental/nftables.conf'', on ajoute ses règles et on exécute la commande suivante :
CTparental -ipton
===== Bonus : accès distant à l'interface =====
Partons de la situation suivante : vos enfants ont des PC identifiés sur le réseau local par un nom d'hôte et une ip connus. Lorsque vous réalisez un ping depuis n'importe quel poste sur le réseau local vers le nom d'hôte de l'un d'eux, celui-ci fonctionne et tape bien dans l'ip voulue. Vous pouvez faire cela en modifiant les fichiers ''/etc/hosts'' de tous vos postes ou directement sur votre routeur. Ça n'est pas obligatoire mais c'est pratique.
Éditer le fichier ''/etc/nginx/sites-enabled/ctparental.conf'' et ajouter/modifier les lignes contenant **IP_POSTE_ENFANT** ou **HOSTNAME_POSTE_ENFANT** dans mon exemple ci-dessous :
server {
listen 127.0.0.11:80 ;
listen IP_POSTE_ENFANT:80 ;
listen [fd00::127:11]:80 ;
return 301 https://$host$request_uri;
}
server {
# server_name admin.ct.local;
server_name HOSTNAME_POSTE_ENFANT;
# SSL configuration
#
#ssl on;
listen 127.0.0.11:443 ssl ;
listen IP_POSTE_ENFANT:443 ssl ;
listen [fd00::127:11]:443 ssl ;
ssl_certificate /etc/ssl/private/admin.ct.local.pem;
ssl_certificate_key /etc/ssl/private/admin.ct.local.pem;
root /var/www/CTadmin;
index index.html index.php;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
fastcgi_read_timeout 180;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
server {
server_name duckduckgo.com ;
# SSL configuration
#
# ssl on;
listen 127.0.0.11:443 ssl ;
listen IP_POSTE_ENFANT:443 ssl ;
listen [fd00::127:11]:443 ssl ;
ssl_certificate /etc/ssl/private/duckduckgo.pem;
ssl_certificate_key /etc/ssl/private/duckduckgo.pem;
return 301 https://safe.duckduckgo.com$request_uri;
}
server {
server_name www.qwant.com ;
# SSL configuration
#
# ssl on;
listen 127.0.0.11:443 ssl ;
listen IP_POSTE_ENFANT:443 ssl ;
listen [fd00::127:11]:443 ssl ;
ssl_certificate /etc/ssl/private/qwant.pem;
ssl_certificate_key /etc/ssl/private/qwant.pem;
return 301 https://www.qwantjunior.com$request_uri;
}
Recharger le service nginx :
systemctl restart nginx.service
Il ne vous reste plus qu'à rentrer l'adresse https://HOSTNAME_POSTE_ENFANT dans votre navigateur pour gérer sa connexion depuis votre réseau local.
===== Désagréments =====
Au début je croyais que l'accès ssh était coupé et que ma configuration de nftables était mauvaise, en fait il n'y avait aucun problème. Les temps de démarrage de certains services sont significativement rallongés au démarrage du PC.
Par exemple, si vous avez l'habitude de réveiller les PC de vos enfants via ''wakeonlan'' et de tester que le démarrage est effectif via ''ping'' pour enchaîner directement par une commande ''ssh'' de mise à jour, celle-ci échouera car l'accès ssh sera différé de quelques dizaines de secondes.
Idem pour l'accès distant à l'interface.