Hey ! what is up guys ? J’espère que vous avez bien aimé l’article sur docker car je reviens faire un point sur ce dernier 😊 !
Introduction
Dans un article précèdent, je vous ai montré comment installer et utiliser Docker, et maintenant je vais expliquer de quelle manière effectuer une évaluation de la vulnérabilité des images.
Lorsqu’un développeur travaille avec un conteneur (vous vous souvenez ce que c’est 😉), non seulement il contient le programme, mais il fait partie du système d’exploitation, et je ne sais pas si les bibliothèques de connexion ont été corrigées ou s’il existe des failles.
C’est pourquoi je vous montre « comment effectuer un audit de conteneur et une évaluation de la vulnérabilité » dans n’importe quelle infrastructure.
Installation du scanner
CoreOS a créé un outil d’analyse de conteneurs appelé Clair. C’est un projet open source pour l’analyse statique des vulnérabilités dans les applications et les conteneurs Docker.
Je clone le package à l’aide de git, en utilisant la commande suivante :
git clone https://github.com/arminc/clair-scanner.git
Le fameux scanner est développé en langage go, donc je dois installer golang sur ma machine locale sur laquelle docker est en cours d’exécution, pour cela :
apt install golang
NB : si vous rencontrez une erreur ou un problème sur l’installation, pensez à mettre à jour vos paquets (sudo apt-get update && sudo apt-get upgrade).
Maintenant, je dois créer une bibliothèque dans le répertoire clair-scanner :
cd clair-scanner
make build
C’est fait ! je vais alors utiliser la commande make cross pour la compilation.
Il m’a créé un fichier clair-scanner :
Voilà !
Si dans votre machine hôte, vous n’avez pas d’image docker, vous pouvez extraire une nouvelle image, je vous montre :
docker pull ubuntu:16.04
Je vais exécuter l’image docker du Clair qui écoutera sur le port local 5432 :
docker run -d -p 5432:5432 –name db arminc/clair-db:latest
À ce stade, j’exécute l’image docker pour postgres afin de lier clair-scanner :
docker run -p 6060:6060 –link db:postgres -d –name clair arminc/clair-local-scan:latest
Un petit test à l’aide de clair pour analyser la vulnérabilité d’une image de conteneur ou de docker :
./clair-scanner –ip 192.168.1.112 -r report.json ubuntu:16.04
Et voilà, j’ai obtenu la sortie d’analyse qui montre, dans mon cas, aucune vulnérabilité mais il arrive fréquemment qu’il y en ait.
Banc de test de sécurité : durcissement des conteneurs
Pour information (juste un petit plus pour vous) :
Docker Bench for Security est un script qui vérifie des dizaines de bonnes pratiques courantes concernant le déploiement de conteneurs Docker en production. Les tests sont tous automatisés et s’inspirent du CIS Docker Benchmark v1.2.0 .
Bon, je vais lister les images docker qui sont présentes :
docker images
docker ps -a
Alors, pour le renforcement des conteneurs il y a un certain nombre de commandes à exécuter, je vous montre :
docker run -it –net host –pid host –userns host –cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /etc:/etc:ro \
-v /usr/bin/containerd:/usr/bin/containerd:ro \
-v /usr/bin/runc:/usr/bin/runc:ro \
-v /usr/lib/systemd:/usr/lib/systemd:ro \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
–label docker_bench_security \
docker/docker-bench-security
Les résultats de sortie sont INFO, WARNING , PASS et NOTE, ils se déroulent de la manière suivante :
- Host Configuration
- Configuration du démon Docker
- Fichiers de configuration du démon Docker
- Images de conteneur et fichiers de construction
- Exécution du conteneur
- Opérations de sécurité Docker
Un petit exemple pour mieux comprendre, je vous montre les amis :
Pour corriger ce type d’erreur de configuration, j’arrête le processus en cours d’exécution pour docker, puis j’exécute à nouveau l’image docker avec un accès utilisateur à faible privilège :
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker run -itd –user 1001:1001 ubuntu
docker exec -it <container-id> /bin/bash
Afin de vérifier que ça a bien fonctionné, je reprends la section banc de test :
Et voilà, c’est corrigé ! si ça ne fonctionne pas pour vous reprenez depuis le début 😉.
Conclusion
Ça y est les amis ! c’est la fin de cet article, j’ai juger important de savoir utiliser docker et surtout la fonctionnalité de banc de test ainsi que test de vulnérabilité. Normalement vous ne devez pas avoir de souci en reproduisant les commandes ci-dessus.
Je pense que c’est une bonne chose en tant que débutant de comprendre docker.
Restant à votre disposition, on se revoit dans un prochain article 😉.
PEACE !!