Les objectifs du projet sont de développer un outil qui permet :
Le projet s'est déroulé en deux phases. La première phase a consisté à m'approprier la problématique, la seconde à développer un outil qui effectue une vérification automatique des règles.
Comme première étape, j'ai décidé d'effectuer manuellement les contrôles que devrait réaliser automatiquement à terme l’outil pour bien comprendre l’attendu et évaluer les possibilités en termes de réalisation ; par exemple, pour voir s’il était possible de vérifier automatiquement les règles sans intervention humaine. Pour cela, j'ai commencé par prendre connaissance de l'ensemble des recommandations de sécurité ANSSI relatives à un système GNU/Linux. Il y a en tout une soixantaine de règles. Parmi ces règles, j'ai identifié celles qui étaient génériques, c'est-à-dire applicables à tout système Linux quel qu'il soit et j'ai décidé d'exclure, pour la suite du projet, les règles trop spécifiques (exemples : configuration de AppArmor ou Selinux, des outils de sécurité qui ne sont pas installés de base sur un système Linux), de manière à valider mon approche sur les règles principales. J'ai donc retenu au total une trentaine de règles à vérifier.
Puis, j'ai vérifié manuellement la bonne application de ce sous-ensemble de recommandations ANSSI sur un système embarqué de test et identifié les écarts. Pour terminer, j'ai appliqué à la main les recommandations ANSSI sur les règles en écart. Cela m'a pris environ une journée complète de travail.
Cet exercice fastidieux m'a permis de bien comprendre chacune des règles ainsi que les correctifs proposés. Il m'a conforté dans le fait que la vérification pouvait être automatisée et que l'automatisation avait du sens.
La phase suivante a consisté à me lancer dans la définition et le développement de l'outil de vérification. J'ai retenu pour cela le langage Bash, car ce langage permet d'exécuter des commandes directement sur le système que l'on souhaite vérifier (exemple : la commande Sysctl qui permet d'examiner et de modifier les paramètres du système d'exploitation Linux) ; il a également pour avantage de ne nécessiter aucune installation, car il est déjà disponible par défaut sur tous les systèmes Linux.
J'ai donc développé un script en Bash d'environ 1000 lignes pour vérifier automatiquement la trentaine de recommandations ANSSI que j'avais retenues. Pour chaque écart de règles, le script affiche les modifications à effectuer pour rendre le système conforme à la recommandation de sécurité. Il est à noter que les modifications apportées au système pour se rendre conforme restent à la main de l’utilisateur de l’outil, le script ne réalisant pas les modifications automatiquement. Enfin, l'outil génère un rapport en markdown pour pouvoir être facilement partagé sur des plateformes de partage de code comme github ou gitlab.
Mon tuteur en entreprise m'a demandé de vérifier les règles ANSSI sur un système Linux embarqué sans me donner d’autres directives. C’est après avoir commencé à mener l’activité manuellement que j'ai très rapidement eu l'idée de développer un outil (en quelques soirs seulement, sur mes heures personnelles) pour automatiser le processus de vérification et faciliter ainsi l'analyse et la mise en place des différentes recommandations ANSSI sur un système Linux.
J'ai développé l’outil pour aider à sécuriser le système Linux embarqué dans le cadre de mon alternance, mais cet outil pourrait très bien être utilisé sur tout autre système Linux. L’outil a permis d’identifier quelques écarts vis-à-vis des recommandations ANSSI. L’avantage de disposer d’un outil, au-delà de l’aspect amélioration de la productivité (la vérification ne prend que quelques minutes), est qu’il peut être utilisé par d’autres personnes du projet et être lancé autant de fois que l’on souhaite durant toute la durée du projet, ce qui permet de s’assurer que le système est toujours conforme aux recommandations ANSSI.
L’outil dans sa version actuelle ne vérifie que les recommandations ANSSI dites incontournables, c'est-à-dire communes à tout système Linux quel qu'il soit. J'ai identifié néanmoins des recommandations complémentaires qu’il pourrait être intéressant de mettre en place dans le contexte de mon alternance. Au-delà de rajouter ces quelques recommandations complémentaires, une grande amélioration possible serait finalement de pourvoir vérifier la totalité des recommandations ANSSI, même si la plupart d'entres elles ne peuvent pas être appliquées sur la majorité des systèmes Linux du fait que certaines de ces recommandations sont relatives à des programmes bien précis (auditd, base de données ...).
L'idée d'automatiser la vérification des recommandations ANSSI a été très bien accueillie par l'équipe. J'ai réussi en quelques soirs seulement à développer un outil qui répondait au besoin qui avait été exprimé par mon tuteur.
À travers la réalisation de ce projet, j’ai essentiellement développé mes connaissances sur les commandes de bases disponibles sur un système Linux embarqué, qui sont moins nombreux par rapport à un système Linux classique, avec souvent moins d'options ou des options différentes.
Enfin, ce projet montre toute l'importance du scripting pour automatiser des tâches fastidieuses et sans valeur ajoutée.
Scripting - Compétence technique
Cybersécurité - Compétence technique