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

Comment automatiser les audits de sécurité Docker avec Docker Bench for Security

Docker est pratique, mais cela peut aussi représenter un risque pour la sécurité. Il est important de protéger Docker Engine contre d'éventuelles menaces, surtout si vous utilisez un hôte Docker en production.

Docker Bench for Security est un script automatisé qui peut vous aider à trouver des problèmes avec votre configuration. Le script Bench analyse votre hôte pour trouver des faiblesses dans la configuration de votre moteur Docker. Il est fourni par Docker lui-même en tant qu'outil open source d'audit de sécurité.

Exécuter le script

La façon la plus simple d'utiliser Docker Bench est de télécharger le script et de l'exécuter directement. Vous pouvez l'inspecter sur GitHub si vous êtes préoccupé par son contenu.
Utilisez Git pour cloner le référentiel Bench. Exécutez le script à l'aide de votre shell. Docker Bench doit être exécuté avec sudo , car il inclut les vérifications qui nécessitent un accès root.

git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh

Vous verrez les résultats de l'audit affichés dans votre terminal. La numérisation prendra plusieurs secondes. Cela peut prendre une minute ou plus si vous avez beaucoup de conteneurs en cours d'exécution.

Comprendre le rapport

Le rapport est codé par couleur, ce qui vous permet d'identifier rapidement les problèmes. Bleu INFO entrées de journal de lignes dans différentes sections de numérisation. Un PASS vert indique que votre système a satisfait à la vérification. WARN rouge les lignes indiquent une vulnérabilité potentielle.

Docker Bench exécute plus de 200 vérifications individuelles au total. La liste exhaustive est disponible dans le dépôt GitHub du projet. Voici comment les tests sont classés.

Configuration de l'hôte

Ce groupe de tests se concentre sur les faiblesses de l'audit de sécurité de votre hôte. Des vérifications sont effectuées pour un audit approprié des répertoires Docker, l'utilisation d'une partition dédiée pour les conteneurs et l'installation d'une version Docker mise à jour.

Configuration du démon

Les tests orientés démon vérifient que le socket de Docker n'est pas exposé sur une connexion non sécurisée. Trafic réseau entre conteneurs sur le bridge par défaut réseau doit être restreint et les registres non sécurisés supprimés.

Cette section recherche également les octrois de privilèges inappropriés aux conteneurs. Les conteneurs ne devraient pas pouvoir acquérir de nouveaux privilèges. Cela pourrait permettre à un attaquant de dépasser le conteneur.

La section suivante, Fichiers de configuration du démon Docker, a un objectif similaire. Il garantit que le répertoire d'installation de Docker et le socket Unix disposent des autorisations et de la propriété appropriées. Le système de fichiers de Docker doit appartenir à root:root avec des autorisations restrictives de 644 .

Images de conteneurs

CONNEXES Comment évaluer la sécurité du moteur Docker

Docker Bench effectue une vérification de base des Dockerfiles pour vos images connues. Il recherchera des utilisateurs de conteneurs dédiés, la présence de HEALTHCHECK instructions et l'utilisation de Content Trust pour vérifier l'intégrité des données.

Cette section de test émettra également des avertissements qui vous rappelleront les étapes de base du durcissement de l'image. Utilisez des images de base fiables, appliquez de nouveaux correctifs de sécurité et évitez l'installation de packages inutiles. Ces mesures aident à éliminer les vulnérabilités au sein conteneurs.

Exécution du conteneur

Les tests Container Runtime inspectent vos conteneurs en cours d'exécution. Cette section contient plus de 30 tests, allant de la disponibilité de SELinux et d'AppArmor à l'utilisation des montages de système de fichiers et des options de mise en réseau appropriés.

Vous perdrez des points si vous utilisez des conteneurs privilégiés ou montez le socket Docker dans un conteneur. Les conteneurs ne doivent pas pouvoir obtenir de privilèges supplémentaires ou interférer avec le système hôte.

Bench recherche également des serveurs SSH exécutés à l'intérieur conteneurs. Ceci est déconseillé, car l'accès direct au conteneur doit être évité. Il est préférable d'utiliser docker exec de l'hôte pour interagir avec les conteneurs.

Des tests supplémentaires examinent l'utilisation des limites du processeur et de la mémoire. Un conteneur illimité peut consommer des ressources excessives et éventuellement provoquer une condition de mémoire insuffisante sur l'hôte. Les vérifications de mise en réseau signalent les ports inutilisés ainsi que les demandes de mappage des ports privilégiés dans les conteneurs.

Docker Swarm

Docker Bench comprend une section supplémentaire pour les utilisateurs de Docker Swarm. Il se concentre sur le signalement des secrets et des certificats non sécurisés qui ne sont pas correctement tournés. Cela nécessite également une configuration réseau correcte, y compris l'utilisation de réseaux superposés chiffrés.

La section Swarm affichera un avertissement si le mode Swarm est activé mais pas réellement utilisé. Si vous ne prévoyez pas d'utiliser Swarm, désactivez-le en exécutant docker swarm leave --force .

Résoudre les problèmes courants

La plupart des hôtes Docker présenteront plusieurs avertissements si vous n'avez pas pris de mesures actives pour les renforcer. Voici quelques mesures que vous pouvez prendre pour traiter certains des rapports Docker Bench les plus courants.

Activation de l'audit pour les fichiers Docker

Docker conseille l'utilisation d'un audit au niveau du système sur les principaux répertoires Docker. L'audit consigne toutes les opérations qui affectent les fichiers et répertoires surveillés. Cela vous permet de suivre les changements potentiellement destructeurs.

Assurez-vous d'avoir auditd installée. Modifier /etc/audit/audit.rules et ajoutez les lignes suivantes en bas du fichier :

-w /etc/default/docker -p wa
-w /etc/docker -p wa
-w /etc/docker/daemon.json -p wa
-w /lib/systemd/system/docker.service -p wa
-w /lib/systemd/system/docker.socket -p wa
-w /usr/bin/docker -p wa
-w /usr/bin/docker-containerd -p wa
-w /usr/bin/docker-runc -p wa
-w /var/lib/docker -p wa

Le -p wa instruction signifie que auditd enregistrera les écritures et les modifications d'attributs qui affectent les fichiers. Si votre sortie Docker Bench suggère que vous utilisiez l'audit pour des répertoires supplémentaires, ajoutez-les également à la liste. Les répertoires de Docker peuvent changer au fil du temps.

Vous devrez redémarrer auditd pour appliquer vos modifications :

sudo systemctl restart auditd

Renforcer le démon

Docker Bench trouvera généralement des problèmes avec la configuration de votre démon. Ajout de ce qui suit à /etc/docker/daemon.json calmera plusieurs avertissements de démon.

{
    "icc": false,
    "live-restore": true,
    "no-new-privileges": true,
    "userland-proxy": false,
    "userns-remap": "default"
}
  • ICC :  Cela empêche les conteneurs de communiquer entre eux via le bridge par défaut réseau. Les conteneurs ne se contacteront que s'ils sont explicitement liés à l'aide d'un --link .
  • restauration en direct : Cette configuration permet aux conteneurs de continuer à fonctionner même si le démon s'arrête. Ceci est conseillé dans les environnements de production où vous souhaitez minimiser les temps d'arrêt.
  • pas de nouveaux privilèges : Cela empêche les conteneurs d'élever leurs privilèges à l'aide de commandes telles que setuid et setgid .
  • userland-proxy :  La désactivation signifie que iptables est utilisé pour acheminer le trafic du port hôte vers des conteneurs. Sans cela, le processus de proxy de l'espace utilisateur de Docker est utilisé, ce qui augmente la surface d'attaque de votre démon.
  • userns-remap :  Cela permet l'utilisation d'espaces de noms d'utilisateurs, donc root dans un conteneur correspond à un utilisateur hôte moins privilégié. Cela réduit le risque qu'un conteneur compromis puisse exécuter root commandes sur votre hôte. Utilisation de default demandera à Docker de créer un compte utilisateur dédié à cet effet.

CONNEXE : Comment utiliser Cron avec vos conteneurs Docker

Personnalisation de la sortie du rapport

Docker Bench prend en charge plusieurs indicateurs que vous pouvez utiliser pour ajuster sa sortie :

  • -b :  Désactiver les couleurs. Utile si vous exécutez le script dans un environnement CI qui ne prend pas en charge la sortie ANSI complète.
  • -p :  Ne pas inclure les mesures correctives suggérées. Utile lorsque vous souhaitez vous concentrer sur les avertissements et réduire le bruit dans la sortie.
  • -l rapport.txt :  Écrire la sortie dans report.txt au lieu du terminal.
  • -c check_5.1,check_5.2 :  Exécutez les vérifications 5.1 et 5.2 uniquement. La liste des tests est disponible sur GitHub.
  • -e check_5.1,check_5.2 :  Exclure les vérifications 5.1 et 5.2.

Vous pouvez combiner des indicateurs pour produire le rapport dont vous avez besoin. Si une section entière de vérifications ne s'applique pas à vous, envisagez de créer un alias de shell afin de pouvoir exécuter rapidement Docker Bench avec une séquence d'indicateurs appliqués.

Conclusion

CONNEXES Comment utiliser Docker Scan pour trouver des vulnérabilités dans vos images

L'utilisation du script Docker Bench for Security vous aide à trouver et à résoudre les faiblesses de la sécurité de votre hôte Docker. Répondre à tous les avertissements qu'il émet contribuera à renforcer votre hôte et à améliorer votre posture de sécurité.

N'oubliez pas que Docker Bench n'est pas un test exhaustif. Il existe d'autres aspects du maintien de la sécurité de Docker qui ne doivent pas non plus être négligés.

Un conteneur compromis pourrait donner aux attaquants un pied dans vos systèmes, même si vous disposez d'une sécurité renforcée au niveau de l'hôte. Vous pouvez réduire ce risque en utilisant Docker Bench, aux côtés de scanners de vulnérabilité de conteneurs actifs comme Trivy et Clair. Ceux-ci vous aideront à identifier les problèmes internes vos conteneurs, comme les dépendances obsolètes qui pourraient être exploitées.

Bien qu'un bon score soit toujours l'objectif, vous devez également noter que Docker Bench est destiné aux charges de travail de production. Toutes les vérifications ne sont pas pertinentes pour l'installation Docker locale d'un développeur. Exécutez le script, lisez les avertissements et évaluez ceux qui s'appliquent à votre environnement.


Docker
  1. Comment installer Jenkins avec Docker

  2. Comment déployer des microservices avec Docker

  3. Comment utiliser Docker Compose

  4. 3 stratégies pour les déploiements de production automatisés avec Docker

  5. Comment répertorier les conteneurs Docker

Comment analyser les images de conteneur Docker à la recherche de vulnérabilités avec Trivy

Comment élaguer les ressources Docker inutilisées

Comment modifier le code dans les conteneurs Docker avec Visual Studio Code

Comment exécuter des conteneurs Docker

Comment supprimer les conteneurs Docker

Comment arrêter les conteneurs Docker