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:

  1. apt-get install apparmor{,-utils,-profiles} ;
  2. si besoin, surcharger certaines politiques de sécurité ; par exemple, c'est nécessaire pour avoir de multiples instances de Tor ;
  3. redémarrer ;
  4. 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é inclue local/PROFILE) ;
  • lancer apparmor_parser -r /etc/apparmor.d/PROFILE Attention : il ne s'agit pas du profile sous local/
  • 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