Analyse d’un conteneur
Identifier et corriger les failles de sécurité dans un conteneur Docker.
Notions théoriques
Les conteneurs Docker sont largement utilisés pour exécuter des applications de manière isolée.
Un conteneur mal configuré ou utilisant une image vulnérable peut exposer un système à des attaques.
Fonctionnement d'un conteneur Docker
Un conteneur est une instance isolée d'une image Docker. Une image est un ensemble de fichiers et de configurations nécessaires à l'exécution d'une application.
Lorsqu'un conteneur est lancé, il utilise les ressources du système hôte tout en restant isolé des autres processus.
Cependant, si l'image contient des vulnérabilités ou si le conteneur est mal sécurisé, un attaquant peut exploiter ces failles.
Risques de sécurité liés aux conteneurs Docker
- Utilisation d'images non sécurisées : Télécharger des images depuis des sources non vérifiées peut introduire des failles de sécurité.
- Permissions excessives : Exécuter un conteneur avec des privilèges root peut permettre à un attaquant d'accéder au système hôte.
- Exposition de ports non sécurisés : Ouvrir trop de ports ou exposer un service non protégé peut faciliter une attaque.
- Fuites de secrets : Stocker des mots de passe ou des clés API en clair dans une image Docker peut compromettre la sécurité.
- Absence de mises à jour : Une image contenant des logiciels obsolètes peut être vulnérable à des exploits connus.
Bonnes pratiques pour sécuriser un conteneur
- Utiliser des images officielles et vérifiées : Privilégier les images provenant de sources fiables comme Docker Hub ou des registres privés sécurisés.
- Analyser les images Docker : Scanner les images avec des outils comme Trivy, Anchore ou Clair pour détecter les vulnérabilités.
- Éviter d’exécuter les conteneurs en root : Utiliser un utilisateur non privilégié dans le fichier
Dockerfile. - Limiter les privilèges du conteneur : Restreindre l'accès aux ressources système avec des options comme
--cap-drop ALL. - Gérer les secrets de manière sécurisée : Utiliser des solutions comme Docker Secrets, Vault ou des variables d’environnement protégées.
- Mettre à jour régulièrement les images : Rebuilder les images Docker avec les dernières mises à jour de sécurité.
Exemple pratique
Il est possible d’analyser une image Docker vulnérable avec Trivy, un outil de scan de sécurité.
Étape 1 : Installer Trivy
Sur un système Linux, installer Trivy avec la commande suivante :
sudo apt install -y trivy
Sur macOS avec Homebrew :
brew install aquasecurity/trivy/trivy
Étape 2 : Télécharger une image vulnérable
Récupérer une image Docker contenant des vulnérabilités :
docker pull vulnerables/web-dvwa
Étape 3 : Scanner l’image avec Trivy
Lancer une analyse de sécurité sur l’image téléchargée :
trivy image vulnerables/web-dvwa
Étape 4 : Interpréter les résultats
Trivy affiche une liste des vulnérabilités détectées, classées par niveau de gravité (Low, Medium, High, Critical).
Étape 5 : Corriger les vulnérabilités
Si l’image est obsolète, essayer de la mettre à jour :
docker pull vulnerables/web-dvwa:latest
Si des dépendances sont vulnérables, envisager de reconstruire l’image avec des versions mises à jour.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
L'objectif de ce TP est d'analyser un conteneur Docker vulnérable et de corriger ses failles de sécurité en reconstruisant une image sécurisée.
Contrairement à l'exemple pratique, ce TP inclut la modification du Dockerfile
et l'application de correctifs aux vulnérabilités détectées.
Étape 1 : Installer Docker et Trivy
Installation de Docker
-
Sous Debian/Ubuntu :
-
Installer
curlet exécuter le script d’installation de Docker :apt install curl -ycurl -fsSL https://get.docker.com | sh -
Ajouter l’utilisateur actuel au groupe
dockerpour éviter d’avoir à utilisersudoà chaque commande :sudo usermod -aG docker $(whoami) -
Redémarrer la session pour appliquer les modifications.
-
-
Sous macOS et Windows :
-
Télécharger et installer Docker Desktop depuis le site officiel :
-
Vérifier que Docker fonctionne après l’installation :
docker --version
-
Installation de Trivy
-
Sous Debian/Ubuntu :
sudo apt install -y trivy -
Sous macOS :
brew install aquasecurity/trivy/trivy
Cette étape permet d’installer Docker et Trivy correctement.
docker --versiondoit afficher une version valide de Docker.trivy --versiondoit afficher une version valide de Trivy.- Sous Debian, si
docker psaffiche une erreur de permission, redémarrer la session après l’ajout au groupedocker.