Intro
AppArmor est un système de contrôle d'accès obligatoire pour Linux.
Il permet d'associer des politiques de sécurité à des programmes plutôt qu'à
des utilisateurs. Un profile
AppArmor définit la liste des ressources du
système (réseau, fichiers) auxquels un programme, défini lui-même par son
chemin, peut légitimement accéder. Il s'agit d'empêcher qu'un programme bugué
ou compromis ne compromette à son tour autre chose que ses propres ressources.
Cela s'appelle du confinement : si un profil est défini pour un programme x
et que ce profil dit que x
peut lire dans x.rc
mais pas y écrire, alors
x
ne pourra pas modifier x.rc
, même si x
sert à faire ça et qu'il est
exécuté avec les droits de l'utilisateur root et que le fichier x.rc
a
des permissions autorisant root à le modifier (sans ce profil AppArmor ou avec
n'importe quelle autre commande sans profil, typiquement un éditeur de texte).
Le confinement est effectif lorsqu'un profil est en mode enforce
. Lors de
la construction ou du débogage d'un profil, on peut utiliser le mode complain
,
qui permet au programme défini dans le profil de fonctionner en outrepassant
si nécessaire les règles (trop restrictives ?) du profil, chaque écart étant
tracé dans /var/log/syslog
.
Installation sous Debian
L'installation est décrite dans le wiki Debian:
apt-get install apparmor{,-utils,-profiles}
;- si besoin, surcharger certaines politiques de sécurité ; par exemple, c'est nécessaire pour avoir de multiples instances de Tor ;
- redémarrer ;
- tester et commiter les modification de la config.
Status
Le confinement des services par AppArmor est vérifiable dans la sortie de la
commande aa-status
, plus précisément la fin, qui concerne le statut des
processes, et non pas celui des profiles.
C'est actuellement déployé pour marcuse, marylou, ekumen et AlGrothendieck.
bulbe y a également eu droit, et ClamAV y a le profile par défaut, qui n'a provoqué aucune erreur après installation.
Pour débugger
Lorsque AppArmor empêche une opération, une erreur est logguée, et disponible
dans /var/log/syslog
.
Pour modifier un profile AppArmor, il faut:
- de préférence le faire dans
/etc/apparmor.d/local/PROFILE
plutôt que/etc/apparmor.d/PROFILE
(il faut que le profile installé incluelocal/PROFILE
) ; - lancer
apparmor_parser -r /etc/apparmor.d/PROFILE
Attention : il ne s'agit pas du profile souslocal/
- tester avec
aa-status
- si besoin, relancer le service AppArmor :
systemctl restart apparmor
- si besoin, relancer le service concerné :
systemctl restart tor
- tester et commiter.
Multiples instances de Tor
Attention, si la machine fait tourner plusieurs instances de Tor, il faut modifier le profil AppArmor, comme indiqué sur la page au sujet de Tor