From ab1b7616f73440df9f6c27e32217b02553b13ef9 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Tue, 31 Aug 2021 00:48:15 +0200 Subject: [PATCH] Corrections --- chapitres/chapitre_1.tex | 2 +- chapitres/chapitre_2.tex | 23 +++++++-------- chapitres/chapitre_3.tex | 50 +++++++++++++++++++------------- chapitres/chapitre_4.tex | 24 ++++++++++------ chapitres/chapitre_5.tex | 61 +++++++++++++++++++++++++++++++++------- includes/preambule.tex | 5 +++- rapport.tex | 4 ++- 7 files changed, 117 insertions(+), 52 deletions(-) diff --git a/chapitres/chapitre_1.tex b/chapitres/chapitre_1.tex index b91b33a..f281b0d 100644 --- a/chapitres/chapitre_1.tex +++ b/chapitres/chapitre_1.tex @@ -129,7 +129,7 @@ différences apparaisents en fonction de la taille de la structure. \label{fig:organigrammeSaintPierre} \end{figure} -\paragraph{} L'organnigramme de la Figure~\ref{fig:organigrammeSaintPierre} +\paragraph{} L'organigramme de la Figure~\ref{fig:organigrammeSaintPierre} reprend l'exemple du centre d'animation Saint-Pierre, structure de taille moyenne. La conseillère ESF \footnote{Conseillère en économie sociale et familliale} et changé de la coordination et l'animation tournée vers les adultes diff --git a/chapitres/chapitre_2.tex b/chapitres/chapitre_2.tex index 032a9ed..c5e64b9 100644 --- a/chapitres/chapitre_2.tex +++ b/chapitres/chapitre_2.tex @@ -56,21 +56,21 @@ Chacune des structures est réliée aux autres via un plan d'adressage privé définis lors de la mise en service de l'offre. \paragraph{} L'offre comprend aussi la téléphonie fixe sur IP. Ainsi l'ensemble -des postes téléphoniques fixe (postes fixes ou sans-fils) son reliés à un +des postes téléphoniques fixe (postes fixes ou sans-fils) sont reliés à un standard virtuel et est accessible via un numéro interne (et parfois un numéro géographique). \paragraph{} Le réseau est divisé en deux VLAN: un pour la voix et un pour les -données. Nous avons un accès complets au paramétrages des switches afin de -pouvoir paramétrer les ports, nous avons un accès administrateur pour la +données. Nous avons un accès complets au paramétrages des commutateurs afin de +pouvoir paramétrer les ports, nous aussi avons un accès administrateur pour la configuration du serveur de téléphonie. \paragraph{} La sortie vers Internet est assurée par une \textit{PIS} --- pour passerelle Internet sécurisée --- globale pour l'ensemble des structures. -\subsection{Les connexions public et partenaires} +\subsection{Les connexions "public et partenaires"} -\paragraph{} Certaines structures de l'association dispose d'un second accès à +\paragraph{} Certaines structures de l'association disposent d'un second accès à Internet utilisé par le public acceuilli et les partenaires. Cette connexion est le plus souvent filtrée via un serveur \link{https://opnsense.org}{OPNSEnse}. @@ -89,10 +89,10 @@ distance au serveur applicatif. \subsubsection{TrueNAS} -\paragraph{} C'est un système d'exploitation utilisé pour créer des serveur de -stockage. Basé sur FreeBSD et open-source (licence \textit{BSD}). Il "motorise" -le serveur de sauvegarde du siège de l'association et les serveur de fichiers -disponibles dans les centres. +\paragraph{} \link{https://truenas.com}{TrueNAS} est un système d'exploitation +utilisé pour créer des serveur de stockage. Basé sur FreeBSD et open-source +(licence \textit{BSD}). Il "motorise" le serveur de sauvegarde du siège de +l'association et les serveurs de fichiers disponibles dans les centres. \subsubsection{OpenWRT} @@ -122,7 +122,7 @@ utilisons aussi l'outils de gestion des tickets afin de gérer les différents incidents et demandes remontés par les utilisateurs. \paragraph{} Nous utilisons aussi -\link{https://fusioninventory.org}{Fusioninventory}. Le plugin installé sur +\link{https://fusioninventory.org}{Fusioninventory}. Le plugin est installé sur GLPI et l'agent sur l'ensemble des ordinateurs utilisateurs du parc afin de remonter automatiquement les configuration dans la base de données. @@ -162,7 +162,8 @@ sont en cours de test afin d'être intégré au fonctionnement du service. \paragraph{} Leurs intégrations est prévue dans le cadre de la migration de l'hébergement de nos outils de \textbf{Jails FreeBSD} vers \textbf{Docker}. -Cette migration fait l'objet d'un chapitre complet de ce rapport. +Cette migration fait l'objet d'un chapitre complet de ce rapport (chapitre +\ref{chap:migration_docker} page \pageref{chap:migration_docker}. \paragraph{} Je peux citer le gestionnaire de mots de passe en ligne Vaultwarden et l'outils de prise de contôle à distance Meshcentral. Nous avons aussi en test diff --git a/chapitres/chapitre_3.tex b/chapitres/chapitre_3.tex index 926ce64..5e5db24 100644 --- a/chapitres/chapitre_3.tex +++ b/chapitres/chapitre_3.tex @@ -9,14 +9,14 @@ constat que la Caisse d'Allocation Familliale de la Gironde a lancé le projet \normalsize \paragraph{} Il est question d'installer dans les structures sociales des -équipements informatique (ordinateurs, imprimantes, scanner) en libre service +équipements informatique afin de permettre aux usagers de se connecter à leurs espaces en ligne. Pour accompagner les populations les plus en difficultés, un \textit{facilitateur numérique} assure une permanence. \section{La réponse de l'association} -\paragraph{} L'association c'est positionnée sur le projet fin 2019 et a choisie +\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 @@ -26,12 +26,12 @@ de permanence dans chacune d'elles. 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 ce la +\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éfinis trois points +\paragraph{} D'après les objectifs et le public cible, j'ai défini trois points importants~: \begin{itemize} @@ -60,7 +60,7 @@ l'accès à Internet via le DNS et de rendre le profil utilisateur temporaire. \paragraph{} J'ai d'abord essayer 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 -apparuts, mettant sur la touche cette solution~: +apparus, mettant sur la touche cette solution~: \begin{itemize} @@ -88,9 +88,9 @@ et d'une suite bureautique (\link{https://libreoffice.org}{LibreOffice}). \paragraph{} Le second objectif est d'assurer la confidentialité des données des personnes utilisant la borne. J'ai utilisé les fonctionnalité offertes par -\link{}{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. +\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} @@ -101,26 +101,26 @@ créer son répertoire personnel en RAM, utilisant un système de fichier de typ \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étruite son dossier\footnote{Il se charge aussi de démonter +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é. Il se affiche une simple image demandant d'appuyer sur la touche -\textit{Entrée}. Lorsque l'usager le fait, un script se lance afin de +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 accessible en libre service, il est donc -nécessaire de s'assurer qu'elles ne peuvent pas servir à aure chose. +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 m'a d'abord permis d'adapter la partrie logicielle -au plus près des besoin. Mais il permet aussi de limiter l'installation de -logiciels par les tiers. +\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} @@ -145,11 +145,18 @@ navigation sur le Web : \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. + règles. Seul les flux en HTTP, HTTPS sont autorisés en TCP et + l'intérogation DNS en UDP\footnote{L'ouverture du porty 53 est + obligatoire pour le fonctionnement d'Unbound, mais la modidication des + serveurs utilisés par l'utilisateur est verrouillée.} Le fichier de + confifuration est disponible annexe \ref{chap:nftables} (page + \pageref{chap:nftables}). \item \textbf{Une configuration fine du navigateur} via un fichier de configuration au niveau du système. J'ai pu ainsi désactiver - l'installation d'extentions. + l'installation d'extentions ou le DNS over HTTPS\footnote{le + navigateur contacte des serveurs de noms via HTTPS, passant outre les + restrictions mise avec \textit{Unbound}} \end{enumerate} @@ -173,7 +180,7 @@ pour fonctionner. 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 installes les logiciels + machine. Lancé en \textit{super-utilisateur}, il installe les logiciels nécéssaires, les scripts, les utilisateurs et les fichiers de configuration. @@ -193,9 +200,14 @@ l'ajout de sites supplémentaires dans la liste de ceux autorisés. \paragraph{} Les 3 objectifs définis initialement pour la mise en place de l'ensemble logiciels 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 ininteressant, bien au contraire. J'ai pu toucher à beaucoup d'aspects +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{} Cependant 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{Un diffusion sous licence open-source diff --git a/chapitres/chapitre_4.tex b/chapitres/chapitre_4.tex index f9a9d2c..a9f9c15 100644 --- a/chapitres/chapitre_4.tex +++ b/chapitres/chapitre_4.tex @@ -3,15 +3,15 @@ \large \paragraph{} Comme je le disais dans le premier chapitre, toutes les structures possèdent au moins un réseau Wifi utilisable par les salariés de l'association. -Ces réseux vieillissants ne permettaient plus de travailler convenablement. De -plus il ne permettent pas au intervenants exterieur ou au public de se +Ces réseaux vieillissants ne permettaient plus de travailler convenablement. De +plus il ne permettent pas non plus au intervenants exterieur ou au public de se connecter. \normalsize \section{Définition des besoins} \paragraph{} Beaucoup de nos collègues nous remontaient les problématique liées -aux réseaux Wifi. La casi-majorité des connexions réseaux se font par ce biais, +aux réseaux Wifi. La quasi-majorité des connexions réseaux se font par ce biais, il est donc primordial de pouvoir y remédier. D'après les retours nous avons identifiés les points les plus importants à prendre en compte, ces points sont détaillés tableau \ref{Table:wifidiag} (page \pageref{Table:wifidiag}). @@ -50,6 +50,7 @@ détaillés tableau \ref{Table:wifidiag} (page \pageref{Table:wifidiag}). l'association avec les réseaux Wifi.} \label{Table:wifidiag} \end{table} + \subsection{Connexions pour les personnes extérieures} \paragraph{} De plus en plus de structures expriment le besoin d'un réseaux @@ -109,14 +110,14 @@ réseau privé et le 101 pour le réseau public. \label{Fig:vlanwifi} \end{figure} -\paragraph{} Le réseau Wifi sera diffusé en 2,4Ghz et 5Ghz tandis que le réseau -public seulement en 2Ghz. +\paragraph{} Le réseau Wifi salariés sera diffusé en 2,4Ghz et 5Ghz tandis que +le réseau public seulement en 2Ghz. \subsubsection{Configuration des éléments} \paragraph{} Un réseau spécifique servant juste à l'administration est -paramétrésur l'ensemble des éléments, il n'est accessible seulement via un prise -spécifique sur le commutateur ou en se connectant sur un des points d'accès en +paramétré sur l'ensemble des éléments, il n'est accessible seulement via un prise +dédiée sur le commutateur ou en se connectant sur un des points d'accès en SSH. \paragraph{} La configuration du commutateur s'est faire directement via son @@ -124,7 +125,7 @@ interface web. \paragraph{} Pour les point d'accès, j'ai d'abord installé OpenWRT sans interface web, nous avons fait le choix d'une configuration uniquement en ligne -de commande via une connexion SSH. Un exemple de fichiier de configuration est +de commande via une connexion SSH. Un exemple de fichiers de configuration est fourni Annexe \ref{chap:openwrt} (page \pageref{chap:openwrt}). \paragraph{} La structure étant étendue, nous avons placés 3 points d'accès de @@ -149,7 +150,12 @@ du service informatique et formé mes deux collègues. satisfation aussi bien pour le personnel du centre qu'aux intervenants. Celle-ci nous a permi d'augmemter non seulement \textbf{la couverture et les débits}, mais aussi \textbf{la stabilité} des points d'accès. Les tickets ouverts pour -des problèmes liés aux réseaux on casiment disparu pour Bacalan. +des problèmes liés aux réseaux ont quasiment disparu pour Bacalan. + +\paragraph{} \textbf{Les cours et travaux pratiques réseaux} en licence et mes +\textbf{connaissances du système \textit{OpenWRT}} m'ont permis de mener à bien +ce projet sans grade difficultés. Seul la prise en main de l'onterface +d'administration du concentrateur manageable m'a donné un peu de fil à retordre. \paragraph{} Suite à cette expérimentation réussie, nous avons migré la Direction Générale et les centres d'animation Bastide-Benauge, Monséjour, et diff --git a/chapitres/chapitre_5.tex b/chapitres/chapitre_5.tex index dd3a77c..f4011bf 100644 --- a/chapitres/chapitre_5.tex +++ b/chapitres/chapitre_5.tex @@ -1,17 +1,18 @@ \chapter{Migration des services de jails FreeBSD vers docker} +\label{chap:migration_docker} \large \paragraph{} L'intégralité des services utilisé par le service informatique fonctionnaient dans des \textit{jails FreeBSD}\footnote{Système de conteneur propre aux système BSD. La première version est sortie en mars 2000 avec FreeBSD 4}. Étant la seule personne au service informatique a avoir des compétences dans l'administration de serveur FreeBSD, at afin d'anticiper -mon départ prévu début août, nous avons décidé de tout migrer de vers des +mon départ prévu début août, nous avons décidé de tout migrer vers des conteneurs \textit{Docker}. \normalsize \paragraph{} \textit{Docker} a l'avantage d'être une solution beaucoup plus -répandue et accessible. Notre alternant Lucas la maitrisait déjà, ce qui n' -etait pas mon cas. Nous avons donc travailler ensemble sur ce point. +répandue et accessible. Notre alternant Lucas la maitrisait déjà, ce qui +n'était pas mon cas. Nous avons donc travailler ensemble sur ce point. \section{Migration de services existants} @@ -33,10 +34,11 @@ Tous les conteneurs fonctionnaient sur une seule machine physique, il y en avait \subsection{Défintion de la nouvelle architecture} \paragraph{} Nous sommes partis du principe d'un conteneur par service, et ce -même pour les base de données attachees. En frontal, Træfik a été retenu pour -son intégration poussée avec Docker. Il fera office de reverse-proxy et de -chiffrer le traffic. Un schéma du fonctionnement attendu de la nouvelle -installation est disponible figure \ref{Fig:docker} (page \pageref{Fig:docker}). +même pour les base de données attachées. En frontal, +\link{https://taefik.io}{Træfik} a été retenu pour son intégration poussée avec +Docker. Il fera office de reverse-proxy et de chiffrer le traffic. Un schéma du +fonctionnement attendu de la nouvelle installation est disponible figure +\ref{Fig:docker} (page \pageref{Fig:docker}). \begin{figure}[H] \includegraphics[width=\linewidth]{generated/plan_docker} @@ -45,7 +47,7 @@ installation est disponible figure \ref{Fig:docker} (page \pageref{Fig:docker}). \label{Fig:docker} \end{figure} -\section{L'installation} +\section{L'installation en laboratoire} \subsubsection{La machine hôte} @@ -77,8 +79,47 @@ base. Je suis intervenu ensuite pour intégrer le plugin \textit{Fusion inventory}, le point d'entrée des agents et des tâches \textit{cron}\footnote{système de planification des tâches}. -\subsubsection{Finalisation des configuration} +\subsubsection{Le cas Gitea} + +\paragraph{} La migration de cette application impliquait aussi la migratoion de +sa base de données de \textit{SQLite} vers \textit{MariaDB}. J'ai passé deux +jours complets afin de \textbf{tester plusieurs système de migration} mais rien +n'a fonctionné correctement~: + +\begin{itemize} + + \item utilisation de la fonction d'export de Gitea dans un format compatible + MariaDB + + \item écriture d'un script transformant l'export SQLite en fichier SQL + compatible MariaDB. + +\end{itemize} + +\paragraph{} Comme les données des dépôts pouvaient être \textbf{facilement +restaurées} avec l'export réalisé depuis la \textit{Jail}, j'ai décidé de +repartir de zéro du côté de la base de données. J'ai donc recréé les comptes +uilisateurs et chacun a replacé sa clef SSH\footnote{nous n'utilisions aucune +fonctionnalité liées à la base de données à part l'authentification}; évitant de +perdre davantage de temps. + +\section{Le passage en production} \paragraph{} Une fois l'écriture du \textit{Docker-Compose} par Lucas finalisée, je suis intervenu sur la correction de certains problèmes et le peaufinage des -configurations. +configurations. Nous avons ensuite plannifié le passage en production. + +\paragraph{} Pour le passage en production, il nous a fallu réutiliser le +serveur FreeBSD. Les services à migrer étant exclusivement utilisés par le +service informatique, nous avons défini une demi-journée de coupure de +l'ensemble des services pour la migration. + +\paragraph{} Comme nous avions passé beaucoup de temps à tester --- que se soit +la mise en place du système hôte ou les conteneurs --- la mise en production +s'est \textbf{globalement bien passée}. + +\section{En conclusion} + +\paragraph{} Ce projet a sûrement été \textbf{le plus intéressant de ces +derniers mois}. Travailler de concert avec Lucas a été source de motivations et +de plaisir. J'ai d'ailleurs beaucoup appris à ses côtés. diff --git a/includes/preambule.tex b/includes/preambule.tex index 864495a..08f5f37 100644 --- a/includes/preambule.tex +++ b/includes/preambule.tex @@ -75,7 +75,10 @@ xrightmargin=5pt, frame=single, framesep=5pt, - rulecolor=\color{UltraLightGrey} + rulecolor=\color{UltraLightGrey}, + keywordstyle=\color[rgb]{0,0,1}, + commentstyle=\color[rgb]{0.133,0.545,0.133}, + stringstyle=\color[rgb]{0.627,0.126,0.941}, } % Hyperlink \usepackage[hidelinks]{hyperref} diff --git a/rapport.tex b/rapport.tex index 7a3c8a2..8c64ba0 100644 --- a/rapport.tex +++ b/rapport.tex @@ -16,5 +16,7 @@ \input{chapitres/chapitre_4} \input{chapitres/chapitre_5} \appendix -\input{annexes/annexe_4} +\input{annexes/annexe_startx_bornes} +\input{annexes/annexe_nftables.tex} +\input{annexes/annexe_openwrt.tex} \end{document}