web-dev-qa-db-fra.com

Contenir le moteur Docker avec AppArmor

Face aux rappels que le moteur Docker doit être exécuté avec AppArmor ou SELinux, comment exécuter Docker sous AppArmor sous Ubuntu 14.04?

Les documentation de Docker Security et les documentation de LXC indiquent qu'Ubuntu est fourni avec des modèles AppArmor pour LXC. Que faut-il faire pour en tirer parti?

En supposant qu'un hôte Ubuntu Server 14.04 par défaut et que Docker soit installé avec curl -s https://get.docker.io/ubuntu/ | Sudo sh, que faut-il faire ensuite pour que, lors de l'exécution d'un conteneur, le moteur Docker lui-même soit contenu sous AppArmor?

6
Fernando Correia

Eh bien, c’est un problème lié à l’utilisation de paquets extérieurs aux dépôts d’Ubuntu. Vous devrez demander aux développeurs de Docker Engine de rédiger un profil apparmor ou rédiger le vôtre. Idem avec un profil selinux.

Maintenant, voici où vous allez commencer à avoir des options, que vous utilisiez ou non LXC, apparmor, selinux, etc.

Par exemple, les développeurs Docker estiment que vous devez mettre à jour - http://blog.docker.com/ et c’est certainement un moyen de gérer la situation.

Apparmor et selinux vous protègent (potentiellement) contre les exploits du jour zéro, mais les exploits sont corrigés via des mises à jour.

L'avantage d'apparmor est qu'il est plus facile d'apprendre. L'inconvénient est que vous devez écrire votre propre profil.

Voir la documentation apparmor

https://help.ubuntu.com/community/AppArmor#Profile_customization

https://wiki.ubuntu.com/AppArmor

ou, pour un exemple pratique, en utilisant un programme assez simple, voir http://blog.bodhizazen.com/linux/apparmor-privoxy-profile/

Tant que nous sommes sur les opinions ...

RHEL et Fedora sont un peu en avance sur la courbe par rapport à Ubuntu en termes de virtualisation. RHEL travaille avec Docker pour fournir une assistance, y compris selinux

http://www.redhat.com/about/news/press-archive/2014/4/red-hat-docker-expand-collaboration

Je ne suis pas sûr de Fedora ni de Docker, mais Fedora utilise selinux et virtmanager pour gérer LXC - http://major.io/2014/04/21/launch-secure-lxc-containers-on-Fedora-20 -using-selinux-and-svirt /

À la fin de la journée, vous devrez revoir les opinions et choisir la solution qui vous convient le mieux.

4
Panther

La version actuelle de docker-engine est 1.10.2-cs1 et voici le profil AppArmor par défaut pour l'exécution des conteneurs fourni par Docker à l'adresse https://docs.docker.com/engine/security/apparmor/

#include <tunables/global>


profile docker-default flags=(attach_disconnected,mediate_deleted) {

  #include <abstractions/base>


  network,
  capability,
  file,
  umount,

  deny @{PROC}/{*,**^[0-9*],sys/kernel/shm*} wkx,
  deny @{PROC}/sysrq-trigger rwklx,
  deny @{PROC}/mem rwklx,
  deny @{PROC}/kmem rwklx,
  deny @{PROC}/kcore rwklx,

  deny mount,

  deny /sys/[^f]*/** wklx,
  deny /sys/f[^s]*/** wklx,
  deny /sys/fs/[^c]*/** wklx,
  deny /sys/fs/c[^g]*/** wklx,
  deny /sys/fs/cg[^r]*/** wklx,
  deny /sys/firmware/efi/efivars/** rwklx,
  deny /sys/kernel/security/** rwklx,
}

Pour charger un nouveau profil dans AppArmor: $ apparmor_parser -r -W /path/to/your_profile

Lorsque vous exécutez un conteneur, il utilise la stratégie par défaut de Docker à moins que vous ne le remplaciez par l'option security-opt. Par exemple, ce qui suit spécifie explicitement une autre stratégie de menu fixe:

$ docker run --rm -it --security-opt apparmor:docker-different hello-world

0
JamesCW