AppArmor permet à l'administrateur système d'associer à chaque programme un profil de sécurité qui restreint ses accès au système d'exploitation. Il complète le traditionnel modèle d'Unix du contrôle d'accès discrétionnaire (DAC, Discretionary access control) en permettant d'utiliser le contrôle d'accès obligatoire (MAC, Mandatory access control).
/profile { /path/to/file* r, # allow read to /path/to/file* /path/to/file1 w, # allow write to /path/to/file1 deny /path/to/file2, w, # deny write to /path/to/file2, without logging audit /path/to/file3 w, # allow write to /path/to/file3, with logging audit deny /path/to/file4 r, # deny read to /path/to/file4, with logging }
alias /home/ -> /mnt/users/
owner /foo r,
owner=fred owner=1001 owner=(fred) owner=(fred george) owner=(fred 1001)
/parent/profile { /path/to/child1 cx -> child1, /path/to/child2 cx, /path/to/* cx, # for * matching child3 will transition to child3, # child4, child5, ... will transition to /path/to/child* # if matching child profile does not exist will fail /another/path/to/* cx -> child1, # send all matching execs to child1 profile child1 { } profile /path/to/child2 { } profile /path/to/child3 { } # generic fall back profile profile /path/to/child* { } }
$ chkconfig boot.apparmor on
$ chkconfig boot.apparmor boot.apparmor on
Voir le status de apparmor :
$ aa-status
La commande apparmor_status permet de faire la même chose.
Activer un profile existant, par exemple firefox :
$ aa-enforce firefox
Ou
$ aa-enforce /usr/bin/firefox
Ou charger tous les profils :
$ aa-enforce /etc/apparmor.d/*
Permet de ne pas bloquer les accès mais log toutes les violation de la politique : s'utilise de la même manière que aa-enforce. Par défaut les profils sont en mode enforced.
$ aa-complain firefox
AppArmor détectera automatiquement les accès faits par l'application, générera le fichier profil approprié et le placera dans le répertoire /etc/apparmor.d
.
On crée d'abord un profil temporaire à l'aide de la commande aa-autodep.
On laisse tourner le processus à confiner durant le temps nécessaire, puis on corrige le fichier de profil à l'aide des messages laissés dans les fichiers log, grâce à la commande aa-logprof.
Au besoin, on continue à laisser tourner le processus et on relance la commande aa-logprof, jusqu'à ce que le fichier de profil soit adéquat.
On peut alors placer ce fichier en mode enforced
.
$ grep logfiles /etc/apparmor/logprof.conf logfiles = /var/log/audit/audit.log /var/log/syslog /var/log/messages
$ aa-logprof
17:04:21
aux règles adéquates :
$ aa-logprof -m "17:04:21"
$ grep firefox /var/log/audit/audit.log > gigix $ aa-logprof -f gigix
$ apparmor_parser -Q --debug /etc/apparmor.d/usr.sbin.apache2
$ apparmor_parser -p /etc/apparmor.d/usr.sbin.apache2
$ apparmor_parser -r /etc/apparmor.d/bin.ping