Je sais que les profils AppArmor résident dans /etc/apparmor.d/
, mais je ne sais pas comment l’interpréter. Toute traduction serait éclairante.
La seule chose qui dérange là-dedans sont les codes et vous les interprétez comme ceci:
'r' lit 'w' écrit 'm' mappe mémoire en tant qu'exécutable 'k' fichier bloquant 'l' créant des liens physiques 'ix' exécute et hérite de ce profil 'Px' s'exécute sous un autre profil, après nettoyage de l'environnement 'Ux' s'exécute sans confinement, après nettoyage de l'environnement
Le reste du fichier est principalement constitué de répertoires, de fichiers et de bibliothèques avec parfois des paramètres devant (comme PROC et HOME qui semblent faciles à comprendre) et des expressions rationnelles pour le rendre plus flexible et parfois un "refus" ou un "propriétaire" devant le ligne (elles me paraissent aller de soi: elles refusent l’accès et limitent les actions dans le cas où c’est le propriétaire qui les effectue).
En ce qui concerne PROC:
Exemple:
# pour la mise en réseau flux réseau inet, flux réseau inet6, @ {PROC}/[0-9] */net/if_inet6 r, @ { PROC}/[0-9] */net/ipv6_route r,
et fait
cd /proc/ ls *
Voir tous les répertoires avec des chiffres? Ceux-ci correspondent à chaque processus en cours d'exécution. Si l'un d'entre eux contient un répertoire net
(network
) et qu'il contient un fichier if_net6
ou ipv6_route
, ils sont considérés comme read
.
Voir Access Modes
, Rule Qualifiers
et #include mechanism
dans la page de manuel ...
man apparmor.d
La page de manuel explique cela assez verbalement. En ce qui concerne votre question sur @{PROC}
, certaines variables peuvent être définies dans les fichiers d’inclusion. Depuis la page de manuel apparmor.d (5) ...
Certaines abstractions reposent sur des variables définies dans les fichiers du répertoire
/etc/apparmor.d/tunables/
. Ces variables sont actuellement@{HOME}
et@{HOMEDIRS}
. Les variables ne peuvent pas être définies dans la portée du profil; ils peuvent uniquement être définis avant le profil. Par conséquent, tous les profils qui utilisent des abstractions doivent soit#include <tunables/global>
, soit sinon, s'assurer que@{HOME}
et@{HOMEDIRS}
sont définis avant de commencer la définition du profil. Les utilitairesaa-autodep(8)
etaa-genprof(8)
émettent automatiquement#include <tunables/global>
dans les profils générés.
Si vous regardez dans /etc/apparmor.d/tunables/global
vous verrez qu'il y a un autre #include <tunables/proc>
. Le contenu de ce fichier est ....
# Copyright (C) 2006 Novell/SUSE... GNU GPLv2... more license info...
# @{PROC} is the location where procfs is mounted.
@{PROC}=/proc/
Donc, @{PROC}
est simplement une variable abstraite pointant vers le système de fichiers proc (5) .