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 utilise un profil intégré nommé docker-default. Pour créer un profil personnalisé, créez un nouveau fichier :
sudo nano /etc/apparmor.d/docker-custom
Exemple de profil minimal :
#include <tunables/global>
profile docker-custom flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
file,
network,
capability,
deny /etc/shadow r,
deny /etc/passwd w,
}
Puis chargez le profil :
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).
Compléments
Pour une sécurité en profondeur, complétez AppArmor et seccomp avec un guide complet de hardening Docker, le scanning des images avec Trivy, et explorez Podman comme alternative sécurisée.
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.


