Le script docker-bench-security est un script de vérification basé sur les bonnes méthodes à adopter lors de déploiement de containeurs Docker. Docker est connu pour sa simplicité mais aussi pour ses défauts de sécurité. Le script est bien évidemment gratuit et maintenu à jour grâce à une très large communauté GitHub. Vous pouvez contribuer à son développement ici : https://github.com/docker/docker-bench-security.

Lancer le script :

$ docker run -it --net host --pid host --userns host \
    --cap-add audit_control --disable-content-trust=true \
    -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
    -v /var/lib:/var/lib \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /usr/lib/systemd:/usr/lib/systemd \
    -v /etc:/etc --label docker_bench_security \
    docker/docker-bench-security

bench security screen.png

Analyse du rendu :

Nous allons maintenant analyser la liste des erreurs que nous retourne le script et essayer de les corriger afin d’améliorer la sécurité de notre infrastructure. Il faut donc commencer par repérer les messages en rouge puis lire la signification de cette potentielle faille.

Corriger les principales failles :

Pour commencer on ajoute une variable d’environnement afin d’autoriser uniquement les contenus de confiance. Si vous souhaitez contourner ultérieurement cette variable il vous suffit de rajouter le flag –disable-content-trust=true dans votre commande Docker.

$ echo "DOCKER_CONTENT_TRUST=1" | sudo tee -a /etc/environment

Ensuite nous pouvons configurer le démon Docker à l’aide de différentes fonctions afin de renforcer certains traits de sécurité.

$ nano /etc/docker/daemon.json

{
"disable-legacy-registry" : true,
"icc" : false,
"userns-remap" : "default",
"live-restore" : true,
"log-driver" : "syslog",
"log-opts" : {"syslog-address" : "udp://127.0.0.1"},
"storage-driver": "overlay2",
"userland-proxy" : false
}

On redémarre le service afin de prendre en compte les modifications :

$ systemctl restart docker

On peut terminer en exécutant le script auditd-setup.

$ wget -O - https://raw.githubusercontent.com/nearform/devops/master/packer/securing-docker/scripts/auditd-setup.sh | sh

On peut relancer notre security-bench et voir les améliorations que nous avons apportés sur les différents points faibles de Docker.

Outils Supplémentaires :

https://www.nearform.com/blog/securing-docker-containers-on-aws/

https://dzone.com/articles/docker-bench-security-audit-well-known-docker-vuln

https://docs.docker.com/