====== TX sécurité A18 ====== Ce dépôt contient la documentation rédigée par Stanlkey RAGAVA et Igor WITZ à l'occasion de la TX sécurité réalisée au semestre d'automne 2018. Les dépôts Gitlab suivants ont été créés lors de cette TX : * [[https://gitlab.utc.fr/picasoft/wiki|picasoft-wiki]] pour stocker la documentation * [[https://gitlab.utc.fr/picasoft/wiki|Wiki]] où la documentation est stockée après fin de la TX * [[https://gitlab.utc.fr/picasoft/dockerfiles/tree/dev-ci|test-ci]] pour le développement de la chaîne d'intégration Gitlab Les travaux ont été séparés en une partie infrastructure et une partie Docker. ===== Partie infrastructure ===== ==== Inventaire de bonnes pratiques Docker ==== **Wiki :** * [[https://wiki.picasoft.net/doku.php?id=adminsys:redaction_des_images_docker&s[]=bonnes&s[]=pratiques&s[]=docker|Rédaction des images Docker]] * Mises à jour mineures sur de la documentation interne sur Docker **Gitlab :** * Rédaction d'un [[https://gitlab.utc.fr/picasoft/wiki/blob/master/docker/recommendations-systemes-pour-docker.md|article]] contenant des recommandations systèmes pour Docker ==== Etude de l'infrastructure technique de Picasoft ==== **Wiki :** * Refonte de l'article [[https://wiki.picasoft.net/doku.php?id=infrastructure:architecture_globale|architecture globale]] du Wiki comprenant : * un nouveau schéma de l'infrastructure * la liste des machines physiques et virtuelles ainsi que leur rôle * la liste des services pour chaque machine * la liste des noms de domaine identifiés ainsi que les machines spécifiques vers lesquelles ils pointent * la liste des briques logicielles et matérielles utilisées * la liste et la description des points névralgiques ayant pu être identifiés lors de l'état des lieux ==== Gestion des mises à jour ==== **Gitlab :** * Définition d'un [[https://gitlab.utc.fr/picasoft/wiki/blob/master/systeme/GESTION_DES_MAJ/Gestion_des_mises_a_jour.md|plan de gestion des mises à jour]] comprenant : * Un comparatif entre les versions de chaque services et les dernières versions publiées * Un planning des mises à jour à effectuer * Développement d'un [[https://gitlab.utc.fr/picasoft/wiki/blob/master/systeme/GESTION_DES_MAJ/SCRIPTS/MACHINE_TEST_auto_update_cronapt.sh|script]] permettant d'effectuer les mises à jour de sécurité ou autres sur des machines Debian et basées sur Linux ==== Procédures de départ et d'arrivée ==== * [[https://gitlab.utc.fr/picasoft/wiki/blob/master/systeme/procedure-depart-arrivee.md|Liste]] des actions à réaliser lors de l'arrivée et du départ d'utilisateurs ===== Partie Docker ===== ==== Etude de Hashicorp Vault ==== **Gitlab :** * Production de [[https://gitlab.utc.fr/picasoft/wiki/blob/master/docker/hashicorp-vault/rapport-essai-vault.md|documentation]], expliquant notamment pourquoi l'utilisation de cette technologie n'a pas été retenue. ==== Analyse de l'image pica-etherpad ==== * Tests avec docker-bench-security et Clair * Tests manuels et confrontation de l'image aux bonnes pratiques déterminées préalablement * Rédaction d'un [[https://gitlab.utc.fr/picasoft/wiki/blob/master/docker/audit-etherpad/rapport-audit-image-etherpad.md|rapport d'analyse]] * Correction des vulnérabilités, rédaction d'un [[https://gitlab.utc.fr/picasoft/wiki/blob/master/docker/audit-etherpad/correction-vulnerabilites-etherpad.md|rapport de correction]], insertion de l'image dans le [[https://gitlab.utc.fr/picasoft/dockerfiles/merge_requests/9|dépôt Picasoft]], mise en production de l'image, [[https://gitlab.utc.fr/picasoft/dockerfiles/merge_requests/11/diffs|modifications]] de l'image pour réfléter les modifications apportées lors de la mise en production et [[https://gitlab.utc.fr/picasoft/dockerfiles/merge_requests/12|correction supplémentaire]]. La version actuelle de l'image se trouve [[https://gitlab.utc.fr/picasoft/dockerfiles/blob/master/pica-etherpad/Dockerfile|ici]] ==== Création d'une chaîne d'intégration Gitlab pour le dépôt picasoft/dockerfiles ==== * Création d'un [[https://gitlab.utc.fr/witzigor/test-ci|dépôt Gitlab]] pour le test de la CI * Installation d'un runner sur pica01-test et [[https://gitlab.utc.fr/picasoft/wiki/blob/master/docker/chaine-integration.md|documentation]] du fonctionnement de la CI ==== Analyse de l'image pica-dokuwiki ==== * Analyse de l'image et rédaction d'un [[https://gitlab.utc.fr/picasoft/wiki/blob/master/docker/audit-wiki/rapport-audit-image-pica-wiki.md|rapport]] * Corrections des vulnérabilités détectées ===== Reste à faire ===== * **Chaîne d'intégration :** * intégration à la CI de l'image pica-mattermost selon la documentation * finir la partie "déploiement en production" -> en particulier, exposer le démon Docker de la VM sur laquelle se trouve pica-dokuwiki au réseau ce qui n'est pas fait actuellement * **Correction des images Mattermost** * À partir du [[https://gitlab.utc.fr/picasoft/wiki/blob/master/docker/audit-mattermost/AUDIT_REPORT/rapport-audit-images-mattermost.md|rapport d'audit des images de Mattermost]], décider s'il est nécessaire de corriger les images ou s'il suffit simplement de récupérer les nouvelles images de Mattermost depuis le [[https://github.com/mattermost/mattermost-docker|dépôt officiel]] à chaque nouvelle version. * **Mises à jour automatiques :** * Déploiement en sur une machine de test de picasoft (pica01-test par exemple) : * Dans le [[https://gitlab.utc.fr/picasoft/wiki/blob/master/systeme/GESTION_DES_MAJ/SCRIPTS/MACHINE_TEST_auto_update_cronapt.sh|script de test]], remplacer l'email de picasoft par celui de la personne qui réalise le test echo "MAILTO=\"picasoft@assos.utc.fr\"" >> /etc/cron-apt/config * Faire en sorte que le cron s'execute toutes les 15 minutes pour les tests en changeant la ligne ci-dessous dans le script (cf. [[https://en.wikipedia.org/wiki/Cron#Overview|wiki cron]]) # update 1st day of every months at 4:00 a.m. echo "0 4 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt" > /etc/cron.d/cron-apt * Exécuter le script sur la machine de tests de picasoft * Regarder si les rapports de mises à jour sont bien envoyés/reçus par email et si tout s'est passé correctement * Si OK, déployer ce script sur toute les machines de tests (en surveillant que tout se passe bien pendant les premiers mois) * Déploiement sur les machines de production de picasoft * Si la phase précédente s'est bien passée, mettre le [[https://gitlab.utc.fr/picasoft/wiki/blob/master/systeme/GESTION_DES_MAJ/SCRIPTS/MACHINE_PROD_auto_update_cronapt.sh|script de prod]] sur les machines de prod