\chapter{Action~: borne d'accès au numérique} \label{chap:wifi_centres} \large \paragraph{} De plus en plus de démarches administratives se font en ligne. Y avoir accès suppose non seulement d'avoir le materiel adapté, mais surtout avoir un minimum de connaissance informatique. C'est parti de ce constat que la Caisse d'Allocations Familliales de la Gironde a lancé le projet \textit{Point Numérique C@F}. \normalsize \paragraph{} Il est question d'installer dans les structures sociales des équipements informatiques afin de permettre aux usagers de se connecter à leurs espaces en ligne. Pour accompagner les populations les plus en difficulté, un \textit{facilitateur numérique} assure une permanence. \section{La réponse de l'association} \paragraph{} L'association s'est positionnée sur le projet fin 2019 et a choisi 8 structures pour accueillir le dispositif\footnote{Argonne, Benauge, Bordeaux Sud, Monséjour, Saint-Michel, Saint-Pierre, Bordeaux-Sud et Bordeaux-Lac}. Un facilitateur numérique a été recruté début 2020 afin d'assurer une demi-journée de permanence dans chacune d'elles. \paragraph{} Nous sommes partis sur une idée de borne numérique intégrée en métal contenant les éléments nécessaires (unité centrale, écran tactile, clavier, touchpad, imprimante et scanner); le tout sécurisé et durci. \paragraph{} Le service communication a eu en charge l'habillage graphique de la borne et le service informatique la mise en place de l'ensemble logiciel. \section{Concevoir un système sécurisé et simple} \paragraph{} D'après les objectifs et le public cible, j'ai défini trois points importants~: \begin{itemize} \item \ul{garantir la confidentialité des données}~: cette borne va être utilisée pour accéder à des données sensibles. De plus le public cible n'est potentiellement pas à l'aise avec la manipulation d'un ordinateur et les enjeux de la vie privée sur Internet. \item \ul{être le plus simple possible}~: la borne doit pouvoir être utilisée par des personnes néophytes. \item \ul{empêcher d'en détourner l'usage}~: elle ne doit pas être utilisée pour aller sur Facebook, Youtube, \textellipsis \end{itemize} \paragraph{} Je suis donc parti sur l'installation d'un système basé sur GNU/Linux. L'idée de base est de le rendre le plus minimal possible, de filtrer l'accès à Internet via le DNS et de rendre le profil utilisateur temporaire. \section{La conception du système} \subsection{Les premiers essais} \paragraph{} J'ai d'abord essayé d'utiliser \textit{Ubuntu}, cette distribution offre de base un \textbf{compte invité}, très pratique pour assurer la non persitance des données d'un utilisateur à l'autre. Mais deux problèmes sont apparus, mettant sur la touche cette solution~: \begin{itemize} \item il y a \textbf{beaucoup de travail pour personnaliser la distibution} et l'adapter à nos besoins. Et celle-ci entrainera beaucoup de tests, il est aisé de \textit{casser} le système en essayant d'enlever des paquets. \item La mise en place d'une connexion et déconnexion automatique pour le compte invité s'est révélée difficile, et n'a jamais fonctionné correctement. \end{itemize} \subsection{La mise en place du système de base} \paragraph{} J'ai choisi de partir sur une base \textit{Debian} largement personnalisée. L'idée retenue est donc un système contenant un bureau minimal basé sur des éléments de \link{https://xfce.org}{XFCE}, un navigateur Internet (\link{https://www.mozilla.org/fr/firefox/new/}{Mozilla Firefox}), un logiciel de numérisation (\link{https://gitlab.gnome.org/GNOME/simple-scan}{Simple Scan}) et d'une suite bureautique (\link{https://libreoffice.org}{LibreOffice}). \subsection{Assurer la volatilité des données} \paragraph{} Le second objectif est d'assurer la confidentialité des données des personnes utilisant la borne. J'ai utilisé les fonctionnalités offertes par \link{https://github.com/canonical/lightdm}{Lightdm} d'exécuter de scripts personnalisés à l'ouverture et fermeture d'une session utilisateur. Ces scripts me permettent de mettre en place la volatilité des données. \subsubsection{Le gestionnaire de session} \paragraph{} Ainsi un utilisateur \textit{pointcaf} dispose d'une session automatiquement connectée. Un script se lance au démarrage de la session et crée son répertoire personnel en RAM, utilisant un système de fichier de type \textit{overlay}. \paragraph{} Lorsque l'utilisateur a fini d'utiliser la borne, il dispose d'une icône pour se déconnecter. Le gestionnaire de session lance alors un script qui va se charger de détruire son dossier\footnote{Il se charge aussi de démonter proprement les périphériques de stockages montés le cas échéant}. \subsubsection{La mise en veille} \paragraph{} Au bout de 10 minutes d'inactivité, un économieur d'écran est lancé. Une simple image s'affiche avec un message demandant d'appuyer sur la touche \textit{Entrée}. Lorsque l'usager le fait, un script se lance afin de détruire la session en cours et d'en lancer une nouvelle. \subsection{Empêcher d'en détourner l'usage} \paragraph{} Ces bornes doivent être accessibles en libre service, il est donc nécessaire de s'assurer qu'elles ne puissent pas servir à autre chose. \subsubsection{Le choix déterminant d'un système GNU/Linux} \paragraph{} Installer Debian a d'abord permis d'adapter la partie logicielle au plus près des besoins. Mais ce système permet aussi de limiter l'installation de logiciels par les tiers. \subsubsection{Limiter les sites accessibles} \paragraph{} Le risque est aussi de voir une borne utilisée pour naviguer sur d'autres sites que ceux servant son objectif. Il ne serait pas surprenant par exemple de voir un groupe d'adolescents "squatter" la bornes pour y visionner des vidéos Youtube. \paragraph{} Trois éléments ont été mis en place afin de limiter la navigation sur le Web : \begin{enumerate} \item \textbf{Limiter les domaines disponibles} par la mise en place d'un résolveur DNS\footnote{Domain Name System} local avec une liste explicite de domaines autorisés. Cette liste est mise à jour quotidiennement par un script. Le logiciel retenu est \link{https://nlnetlabs.nl/projects/unbound/about/}{Unbound}. La configuration des serveurs DNS à uttiliser s'est faite au niveau du service réseau et rendue inaccessible par les utilisateurs. \item \textbf{La mise en place d'un pare-feu local} permettant de limiter les flux réseaux au strict nécessaire. J'ai utilisé \link{https://www.nftables.org}{nftables} pour mettre en place ces règles. Seul les flux en HTTP, HTTPS sont autorisés en TCP et l'intérogation DNS en UDP\footnote{L'ouverture du port 53 est obligatoire pour le fonctionnement d'Unbound, mais la modification des serveurs utilisés par l'utilisateur est verrouillée.}. Le fichier de configuration est disponible annexe \ref{chap:nftables} (page \pageref{chap:nftables}). \item \textbf{Un réglage fin du navigateur} via un fichier de configuration au niveau du système. J'ai pu ainsi désactiver l'installation d'extentions ou le DNS over HTTPS\footnote{le navigateur contacte des serveurs de noms via HTTPS, passant outre les restrictions mises avec \textit{Unbound}}. \end{enumerate} \section{Installation des Bornes} \paragraph{} Les bornes étant imposantes, elles ont été livrées sur chacune des sturctures concernées. Pour l'installation de la partie logicielle, j'ai écrit un script. Celui-ci nécessite une base \textit{Debian} minimale et \textit{git} pour fonctionner. \paragraph{} L'installation se fait en deux étapes~: \begin{enumerate} \item \textbf{L'installation d'un système minimal} à l'aide d'une clé USB créée par un \link{https://git.epha.se/ephase/debian-usbcreator}{script maison}. Cette installation se fait de façon automatique par l'emploi de fichier \textit{preseed}\footnote{Un fichier preseed donne des instructions à \textit{Debian Installer} voir \link{https://wiki.debian.org/fr/DebianInstaller/Preseed}{sur la documentation} du projet Debian} \item \textbf{L'exécution du script d'installation} afin de paramétrer la machine. Lancé en \textit{super-utilisateur}, il installe les logiciels nécéssaires, les scripts, les utilisateurs et les fichiers de configuration. \end{enumerate} \section{Retour des usagers} \paragraph{} La situation sanitaire exceptionnelle début 2020 a largement impactée l'installation des bornes~: les structures étaient alors fermées au public. Une fois le premier confinement levé, nous avons pu obtenir les premiers retours par l'intermédiaire du facilitateur numérique. J'ai corrigé certains défauts comme le temps d'inactivité trop long avant le verrouillage ou l'ajout de sites supplémentaires dans la liste de ceux autorisés. \section{Conclusion} \paragraph{} Les 3 objectifs définis initialement pour la mise en place de l'ensemble logiciel de ces bornes \textbf{ont tous été atteints}. Cependant le travail de recherche a été long et parfois fastidieux. Ce n'en était pas pour autant inintéressant, bien au contraire. J'ai pu toucher à beaucoup d'aspects autour de l'environnement GNU/Linux de type \textit{"Bureau"}. \paragraph{} Il m'a fallut batailler avec le bureau XFCE qui ne voulait pas se lancer avec la session utilisateur en mémoire. J'ai donc écrit un script spécifique pour lancer la session graphique, il est disponible en annexe \ref{chap:startx_bornes} (page \pageref{chap:startx_bornes}). \paragraph{} Toutefois beaucoup de points seraient à améliorer~: une installation simplifiée, la mise en place d'une session non limitée pour le facilitateur numérique et surtout \textbf{une diffusion sous licence open-source du script d'installation} et des éléments associés afin que d'autres stuctures puissent en béneficier.