# AppArmor

AppArmor (Application Armor) est un logiciel de sécurité pour Linux édité sous Licence publique générale GNU.
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).
En plus des profils de spécifications manuels, AppArmor comprend un mode d'apprentissage (learning mode), où toutes les transgressions au profil sont enregistrées, mais pas empêchées. Ce fichier de suivi peut alors être incorporé au profil, se fondant alors sur le comportement typique du programme.
AppArmor est mis en place au sein du noyau Linux au moyen de l'interface de sécurité du noyau, LSM (Linux Security Modules).
AppArmor a été créé en partie comme une alternative à SELinux, critiqué pour être difficile à paramétrer et à maintenir par les administrateurs. À la différence de SELinux, qui s'appuie sur l'application d'indicateurs aux fichiers, AppArmor travaille avec les chemins. Les partisans d'AppArmor disent que c'est moins complexe et plus facile pour l'utilisateur moyen que d'apprendre SELinux. Ils prétendent aussi qu'AppArmor demande moins de modifications pour fonctionner avec les systèmes existants ; par exemple, SELinux demande d'utiliser un système de fichiers qui prend en charge les attributs étendus pour les fichiers, et ne peut donc pas gérer le contrôle d'accès pour les fichiers montés avec NFS.
Initialement développé par Crispin Cowan de la société Immunix (en), AppArmor fut repris par Novell lorsque cette dernière racheta Immunix. Novell abandonna cependant le projet et licencia les développeurs d'AppArmor. Canonical en a repris le développement et AppArmor est intégré au noyau Linux depuis la version 2.6.36.
AppArmor est installé par défaut sur Debian, openSUSE, Ubuntu et Parrot OS. Il est disponible sur Annvix, Arch Linux, Gentoo, Mandriva, NixOS, Pardus Linux et PLD.

## Autres systèmes

AppArmor représente une des multiples approches possibles pour limiter les traitements que les logiciels installés peuvent faire.
Le système SELinux utilise généralement une approche semblable à AppArmor. Une différence importante est qu'il identifie les objets du système par leur nom plutôt que par leur chemin. Cela signifie, par exemple, qu'avec AppArmor, un fichier qui est inaccessible peut devenir accessible quand un lien est créé, alors que SELinux interdira l'accès à travers le nouveau lien créé. À l'inverse, avec SELinux, les données qui sont inaccessibles peuvent devenir accessibles lorsque les applications mettent à jour le fichier en le remplaçant par une nouvelle version (une technique utilisée fréquemment), alors qu'AppArmor continuera à en interdire l'accès. Dans les deux cas, une politique par défaut no access résout le problème.
Alors qu'il y a des débats importants sur quelle approche est la meilleure, il n'y a encore aucune preuve qu'une méthode soit préférable à l'autre. Les discussions sur les avantages et les inconvénients de chaque méthode tournent toujours autour de la question de savoir quelle est l'approche la plus cohérente avec les mécanismes de contrôle d'accès UNIX/Linux existants, mais UNIX et Linux utilisent tous deux un mélange d'accès par fichier et par chemin. On peut aussi noter que les mécanismes de contrôle d'accès de chaque système restent en place.
SELinux et AppArmor ont aussi des différences quant à la façon dont ils sont gérés et aussi comment ils sont intégrés au système.
L'isolation des processus peut aussi être réalisée par le biais de la virtualisation ; le projet OLPC, par exemple, utilise un système de bac à sable afin d'isoler les applications grâce à un serveur de virtualisation très léger (Vserver), bien que cela ne constitue pas une couche de sécurité à part entière.