====== 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