AppArmor
AppArmor est un module de sécurité du noyau Linux (LSM) qui restreint les actions des programmes via des profils de règles. Sur Debian, AppArmor est activé par défaut depuis Debian 10 : des profils sont en vigueur dès l'installation pour certains services système. Ignorer AppArmor mène à des heures de débogage de refus d'accès sans raison apparente.
État d'AppArmor
apt install apparmor-utils # outils de gestion (si non installés)
aa-status # profils chargés, modes enforce/complainaa-status affiche le nombre de profils chargés et leur mode :
- enforce : actif. Les accès non autorisés sont refusés et journalisés.
- complain : audit passif. Les violations sont journalisées mais non bloquées. Utile pour tester ou diagnostiquer.
- disabled : chargé mais inactif.
Changer le mode d'un profil
aa-enforce /etc/apparmor.d/usr.sbin.nginx # passer en enforce
aa-complain /etc/apparmor.d/usr.sbin.nginx # passer en complain
aa-disable /etc/apparmor.d/usr.sbin.nginx # désactiverLire les violations
Les refus AppArmor apparaissent dans le journal système :
journalctl -k | grep -i apparmor # journal noyau
grep apparmor /var/log/syslog # syslog (si rsyslog actif)Une ligne de violation typique :
apparmor="DENIED" operation="open" profile="/usr/sbin/nginx"
name="/etc/secrets/api_key" pid=1234 comm="nginx"La lecture est directe : quel profil (profile=), quelle opération (operation=), sur quel fichier (name=).
Gérer les profils
# Recharger un profil après modification
apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx
# Recharger tous les profils
apparmor_parser -r /etc/apparmor.d/
# Lister les profils disponibles
ls /etc/apparmor.d/Structure d'un profil (lecture)
# /etc/apparmor.d/usr.sbin.nginx (extrait simplifié)
/usr/sbin/nginx {
#include <abstractions/base>
capability net_bind_service, # écouter sur ports < 1024
/etc/nginx/** r, # lire la configuration
/var/log/nginx/* w, # écrire les logs
/var/www/** r, # lire les fichiers servis
}Les règles sont : chemin + permissions (r lecture, w écriture, x exécution). ** matche récursivement.
En pratique
Le cas le plus courant : un service fraîchement installé ou reconfiguré refuse d'accéder à un fichier sans raison apparente. Réflexe : journalctl -k | grep apparmor. Si une violation est journalisée, passer le profil en mode complain pour la durée du diagnostic, identifier les accès nécessaires, puis ajuster le profil avec aa-genprof ou manuellement. La mauvaise réponse est de désactiver AppArmor globalement : elle supprime une couche de défense sans résoudre le problème sous-jacent.