GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

10 bonnes pratiques de sécurité Docker

Présentation

Les conteneurs Docker et Kubernetes sont la force motrice d'un cycle de vie de développement logiciel moderne. Bien que Docker soit une option plus sûre que de travailler directement sur la machine hôte, de nombreux problèmes de sécurité potentiels peuvent survenir lors de l'utilisation de conteneurs.

Cet article présente dix bonnes pratiques en matière de sécurité des conteneurs qui peuvent vous aider à prévenir les attaques et les failles de sécurité.

1. Mettre à jour Docker et Host régulièrement

Assurez-vous que votre hôte et Docker sont à jour. Utilisez la dernière version du système d'exploitation et le logiciel de conteneurisation pour éviter les failles de sécurité. Chaque mise à jour inclut des correctifs de sécurité critiques qui sont essentiels pour protéger l'hôte et les données.

La mise à jour de Docker ne se limite pas à la plate-forme elle-même. Les conteneurs en cours d'exécution ne sont pas mis à jour automatiquement. Vous devez également mettre à jour les conteneurs et les images sur lesquelles ils sont basés.

2. Configurer les quotas de ressources

Pour éviter les conteneurs compromis qui consomment trop de ressources, définissez des limites d'utilisation de la mémoire et du processeur Docker.

Sans configurer de quotas de ressources, vous donnez au conteneur l'accès à l'intégralité des ressources RAM et CPU de l'hôte. Comme il s'agit du paramètre par défaut, il est conseillé de limiter la quantité de ressources qu'un conteneur peut utiliser, afin de ne pas perturber les autres services.

Non seulement cela empêche un conteneur d'utiliser toutes les ressources, mais cela aide également à maintenir l'efficacité d'un environnement Docker. Les quotas de ressources garantissent que les conteneurs fonctionnent à la vitesse prévue et améliorent la sécurité.

3. Utiliser des utilisateurs non root

Docker permet d'exécuter un conteneur en mode privilégié. Bien que cela puisse être un moyen plus rapide de contourner certains protocoles de sécurité, vous devez toujours vous abstenir d'utiliser cette pratique.

Le danger d'exécuter un conteneur privilégié est qu'il ouvre la porte à une activité malveillante potentielle. Un utilisateur Docker privilégié a les mêmes privilèges que la racine. Cela signifie qu'il a accès aux fonctionnalités du noyau et à d'autres périphériques sur l'hôte. Un utilisateur malveillant peut entrer dans votre système hôte via le conteneur et mettre en danger tout ce qui s'y trouve.

S'en tenir exclusivement aux utilisateurs non root est simple, car il s'agit des paramètres par défaut de Docker. Pour modifier la configuration par défaut, il faudrait ajouter le --privileged indicateur à l'docker run commande. Cependant, cela représente un risque important pour la sécurité et ne doit pas être utilisé.

4. Limiter les capacités

Les conteneurs ont un ensemble restreint de fonctionnalités Linux. Par exemple, ils peuvent permettre à un utilisateur d'exécuter un conteneur avec une efficacité similaire à celle d'un root, mais sans les privilèges root complets.

Les capacités limitées de Docker sont les paramètres de sécurité par défaut et ils sont les mêmes pour chaque conteneur. Par conséquent, il est recommandé de modifier les capacités pour n'inclure que ce qui est nécessaire. L'administrateur les gère en utilisant le --cap-add et --cap-drop options.

Le moyen le plus sûr de configurer les fonctionnalités du conteneur consiste à tout supprimer (en utilisant le --cap-drop=ALL option) puis ajoutez celles requises.

Pour une liste de toutes les fonctionnalités et abréviations, reportez-vous à la section des fonctionnalités de la page de manuel Linux.

5. Interdire les nouveaux privilèges

Comme on le voit dans l'exemple ci-dessus, Docker permet de modifier les capacités et les privilèges des conteneurs après leur lancement. Pour éviter les attaques par escalade de privilèges, il est judicieux de définir des privilèges de conteneur.

Pour empêcher les processus de conteneur d'obtenir de nouveaux privilèges, utilisez le --security-opt flag avec la valeur no-new-privileges:true . Ajout de l'indicateur à l'docker run La commande écrase toutes les règles que vous avez définies à l'aide de --cap-add et --cap-drop choix..

De plus, vous pouvez supprimer ou désactiver le setuid et setgid binaires dans les images. Cela garantit que la fonctionnalité n'est pas utilisée pour la traversée/l'injection de chemin, les dépassements de mémoire tampon et les attaques d'élévation de privilèges.

6. Utiliser des images de confiance

Lorsque vous extrayez une image de registres en ligne, assurez-vous qu'elle provient d'une source sécurisée et fiable. L'option la plus sûre est de s'en tenir au hub Docker officiel. Évitez les registres tiers publics qui manquent de politiques de contrôle.

Si vous utilisez des bibliothèques en ligne, vérifiez toujours le contenu de l'image. Utilisez également des outils d'analyse d'images pour rechercher les vulnérabilités avant de télécharger quoi que ce soit sur le système hôte.

Il est préférable de consulter Docker Hub et de voir si vous pouvez y trouver l'image souhaitée. Il s'agit de la plus grande bibliothèque et communauté au monde pour Docker avec plus de 100 000 images de conteneurs.

7. Gardez les images et les conteneurs légers

Minimisez la surface d'attaque des conteneurs Docker en utilisant une image de base minimale et en réduisant le nombre de composants de conteneur. Garder la petite taille de l'image permet d'éviter les failles de sécurité et d'accélérer les performances du conteneur.

Pour obtenir des conseils sur la façon de réduire la taille de l'image, reportez-vous à Comment garder les images Docker petites.

8. Registres sécurisés

Un registre Docker est un système de diffusion de contenu utilisé pour stocker et fournir des images pour vos conteneurs. Vous pouvez utiliser le registre en ligne officiel de Docker ou configurer un registre privé sur votre hébergeur.

Pour une solution de stockage d'images au niveau de l'entreprise, vous devez utiliser le Docker Trusted Registry (DTR) . Vous pouvez installer le registre derrière votre pare-feu pour éviter d'éventuelles violations.

9. Ne pas exposer le socket du démon Docker

Docker communique avec un socket de domaine UNIX appelé /var/run/docker.sock . C'est le point d'entrée principal de l'API Docker. Toute personne ayant accès au socket du démon Docker dispose également d'un accès root illimité.

Autoriser un utilisateur à écrire dans /var/run/docker.sock ou exposer la prise à un conteneur est un grand risque de sécurité pour le reste du système. Cela lui donne essentiellement des privilèges root.

Le montage du socket Docker à l'intérieur d'un conteneur ne le limite pas à un accès privilégié au sein du conteneur. Il permet au conteneur de contrôler totalement l'hôte et tous les autres conteneurs. Par conséquent, ce n'est pas une pratique recommandée.

10. Surveiller les API et l'activité réseau

Les API et les réseaux jouent un rôle crucial dans la sécurité de Docker. Les conteneurs Docker communiquent via des API et des réseaux. Par conséquent, pour éviter toute intrusion, l'architecture doit être configurée de manière sécurisée.

Les administrateurs de sécurité ont récemment découvert un nouveau type d'attaque qui exploite des API Docker mal configurées. Les pirates profitent d'API et d'une sécurité réseau mal configurées, l'utilisent pour déployer une image et exécutent un conteneur malveillant sur le système hôte.

Outre la configuration sécurisée des réseaux et des API, vous devez également surveiller les activités pour détecter les anomalies potentielles.


Docker
  1. Surveillance des conteneurs Docker :avantages, bonnes pratiques et outils indispensables

  2. Comment exécuter MySQL dans un conteneur Docker

  3. Comment se connecter en SSH à un conteneur Docker

  4. Meilleures pratiques de sécurité des serveurs Windows

  5. Meilleures pratiques de sécurité Wordpress sous Linux

10 bonnes pratiques en matière de sécurité des bases de données

Apprendre Docker :comment créer un conteneur Docker

Comment exécuter PHPMyAdmin dans un conteneur Docker

Comment exécuter Grafana dans un conteneur Docker

Comment configurer un conteneur Apache Docker

Configuration du serveur Ubuntu - Meilleures pratiques de sécurité