Les conteneurs Docker apportent flexibilité et portabilité, mais exigent des politiques de sécurité strictes. AppArmor et seccomp restreignent les capacités des conteneurs et réduisent 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 Podman comme alternative sécurisée.
Conclusion
En personnalisant AppArmor et seccomp, vous durcissez la sécurité de vos conteneurs Docker : moins de privilèges accordés, moins de risques d'exploitation.


