Les conteneurs Docker offrent flexibilité et portabilité, mais nécessitent des politiques de sécurité strictes. AppArmor et seccomp permettent de limiter les capacités des conteneurs et de réduire la surface d’attaque. Ce guide explique comment appliquer et personnaliser ces profils.
Prérequis
- Serveur Linux (Debian, Ubuntu, Rocky, AlmaLinux)
- Docker Engine installé (v20+)
1. Activer AppArmor
Vérifiez l’état :
sudo aa-status
Si AppArmor n’est pas actif :
sudo systemctl enable --now apparmor
2. Profil AppArmor pour Docker
Docker fournit un profil par défaut situé dans /etc/apparmor.d/docker
. Pour créer un profil personnalisé :
sudo cp /etc/apparmor.d/docker /etc/apparmor.d/docker-custom
sudo nano /etc/apparmor.d/docker-custom
Ajoutez les règles de permission (lecture seule, exécution, etc.). Puis rechargez :
sudo apparmor_parser -r /etc/apparmor.d/docker-custom
Lancez un conteneur avec le profil :
docker run --rm --security-opt apparmor=docker-custom alpine cat /etc/os-release
3. Activer seccomp
Docker utilise un profil seccomp par défaut (default.json
). Pour un profil personnalisé :
wget https://raw.githubusercontent.com/moby/moby/master/profiles/seccomp/default.json -O custom-seccomp.json
Éditez custom-seccomp.json
pour désactiver les appels système non nécessaires (e.g. clone
, ptrace
).
4. Tester le profil seccomp
docker run --rm --security-opt seccomp=custom-seccomp.json alpine uname -a
Les appels bloqués renvoient une erreur EPERM
.
5. Bonnes pratiques
- Commencez par le profil Docker par défaut, puis retirez les appels système superflus.
- Déployez en test avant la production.
- Combinez AppArmor, seccomp et capabilities (e.g.
--cap-drop=ALL --cap-add=NET_BIND_SERVICE
).
Conclusion
En personnalisant AppArmor et seccomp, vous renforcez significativement la sécurité de vos conteneurs Docker, limitant les privilèges et réduisant les risques d’exploitation.