Étude de la sĂ©curitĂ© (manquante) des installations types Docker et Kubernetes

Étude de la sĂ©curitĂ© (manquante) des installations types Docker et Kubernetes
Je travaille dans l'informatique depuis plus de 20 ans, mais je n'avais jamais eu l'occasion de m'occuper des conteneurs. En théorie, je comprenais comment ils fonctionnent et comment ils sont conçus. Mais comme je n'avais jamais eu à les utiliser en pratique, je n'étais pas sûr de la façon dont ils fonctionnent réellement en coulisse.

De plus, je n'avais aucune idĂ©e de leur sĂ©curitĂ©. Mais encore une fois, la thĂ©orie semble belle, et l'ancienne chanson « avec une sĂ©curitĂ© accrue, la facilitĂ© d'utilisation diminue » trottait dans ma tĂȘte. J'ai donc pensĂ© que si tout Ă©tait si facile avec les conteneurs, leur sĂ©curitĂ© devait ĂȘtre au plus bas. Il s'est avĂ©rĂ© que j'avais raison.

Pour un démarrage rapide, je me suis inscrit à des cours Black Hat 2020 intitulés «De la boue à la noblesse : pénétration et protection des environnements Docker Swarm et Kubernetes».

Le cours, animĂ© par Sheila A. Berta et Sol Ozzan, a immĂ©diatement commencĂ© par expliquer comment fonctionnent les conteneurs Docker, ainsi que le parcours qu'ils suivent lors de leur dĂ©ploiement dans Kubernetes. C'Ă©tait une sĂ©ance entiĂšrement pratique : les Ă©tudiants devaient installer Docker et microk8s sur leurs machines avant les cours — une excellente façon de voir l'interaction des outils entre eux, de trouver des points faibles et, surtout, d'essayer de les bloquer.

Malheureusement, bien que les cours promettent de devenir « nobles » en deux jours, je ressentais que tout ne faisait que commencer et que j'avais encore beaucoup à apprendre.

Étude de la sĂ©curitĂ© (manquante) des installations types Docker et Kubernetes

Avant de plonger dans mes observations élevées, il est important d'expliquer ce qu'est un conteneur. Dans le monde du développement, il est normal que le code écrit sur votre machine personnelle fonctionne parfaitement, mais qu'à l'essai sur un serveur, il cesse de fonctionner. Les conteneurs essaient de résoudre ce problÚme en fournissant des machines autonomes que vous pouvez facilement transférer d'un serveur à un autre, en sachant qu'elles fonctionneront toujours. Comme son nom l'indique, ils contiennent le code, les bibliothÚques et d'autres logiciels nécessaires à leur fonctionnement. Kubernetes, en revanche, est une plateforme d'orchestration pour les conteneurs. En principe, il vous permet de gérer sans couture des centaines ou des milliers de conteneurs différents.

Voici quelques-unes de mes conclusions du point de vue des équipes rouge et bleue.

Équipe rouge

La plupart des contenus des conteneurs s'exécutent sous root: cela signifie que si vous compromettez le conteneur, vous aurez un accÚs complet au conteneur. Cela rend les étapes suivantes considérablement plus faciles.

Monter docker.sock Ă  l'intĂ©rieur du conteneur est dangereux: si vous obtenez un accĂšs root Ă  l'intĂ©rieur du conteneur et que vous avez Ă©galement installĂ© Docker Ă  l'intĂ©rieur d'un conteneur ayant le socket Docker (\/var\/run\/docker.sock), vous avez la possibilitĂ© d'explorer tout un cluster, y compris l'accĂšs Ă  tout autre conteneur. Cet accĂšs ne peut ĂȘtre prĂ©venu par l'isolation rĂ©seau ni par d'autres moyens.

Les variables d'environnement contiennent souvent des données sensibles: dans la plupart des cas, les gens envoient des mots de passe dans le conteneur en utilisant des variables d'environnement ordinaires. Donc, si vous avez accÚs à un compte, vous pouvez espionner ces variables d'environnement dans le but d'élargir vos privilÚges par la suite.

L'API Docker peut fournir une multitude d'informations: l'API Docker, dans sa configuration par dĂ©faut, fonctionne sans autorisation et peut fournir une multitude d'informations. En utilisant Shodan, il est facile de trouver une liste de ports ouverts, puis d'obtenir des informations dĂ©taillĂ©es sur le cluster — et de procĂ©der Ă  sa capture complĂšte. TrendMicro a Ă©crit un article fascinant.

L'équipe bleue

Ne pas exĂ©cuter le contenu des conteneurs sous root: bien que ce soit plus facile d'exĂ©cuter en tant que root, vous ne devez pas le faire. Au lieu de cela, exĂ©cutez des applications avec des privilĂšges rĂ©duits en affichant l'UID soit avec le paramĂštre —user lors de l'utilisation de la CLI, soit en spĂ©cifiant USER dans le Dockerfile.

Ne pas autoriser l'installation de programmes dans les conteneurs: presque chaque attaque commence par l'installation de quelque chose. Commencer par nmap et aller jusqu'Ă  ifconfig et Docker lui-mĂȘme (Ă  l'intĂ©rieur du conteneur), l'installation de quoi que ce soit dans le conteneur a Ă©tĂ© une pratique courante. Pour cette raison, il est toujours nĂ©cessaire de bloquer tous les ports inutilisĂ©s. Cela aide Ă©galement Ă  prĂ©venir l'exĂ©cution de commandes de contrĂŽle lors de l'infection de votre machine. En plus d'empĂȘcher l'installation de logiciels, il est prudent de s'assurer que le conteneur contient le minimum d'applications nĂ©cessaires pour accomplir la tĂąche.

ProtĂ©gez docker.sock: il doit ĂȘtre protĂ©gĂ©, car ce socket gĂšre la communication entre le conteneur et le cluster. Étant donnĂ© que je ne veux pas entrer dans les dĂ©tails dans cet article, lisez note de Docker, ce qui peut arriver, ainsi que comment tout cela bloquer.

Utilisez les secrets Docker au lieu des variables d'environnement: Les secrets existent depuis environ 2017. Bien que cela soit peu sûr, c'est néanmoins mieux que les variables d'environnement pour transmettre des données sensibles dans un conteneur.

Si cet article vous a intéressé par les conteneurs, vous pouvez installer Docker ou microk8s (une version légÚre de Kubernetes) assez facilement. Ici des instructions pour installer Docker sur Linux et MacOS, et ici des instructions pour installer microk8s sur Windows, Linux et MacOS.

AprÚs l'installation, vous pouvez consulter ce guide de démarrage rapide de Docker, une option similaire propose et pour microk8s.

Si vous souhaitez ou devez suivre un cours complet sur Docker, oĂč des intervenants praticiens discutent de tous ses outils : des abstractions de base aux paramĂštres rĂ©seau, des nuances de fonctionnement avec diffĂ©rents systĂšmes d'exploitation et langages de programmation, essayez «Cours vidĂ©o sur Docker». Vous dĂ©couvrirez la technologie et comprendrez oĂč et comment utiliser Docker au mieux. En mĂȘme temps, vous obtiendrez des cas de bonnes pratiques — il vaut mieux apprendre en toute sĂ©curitĂ© avec le soutien de praticiens sur des histoires d'erreurs que personnellement sur les erreurs avec des poignĂ©es Ă©pineuses.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster