# AppArmor

AppArmor ("Application Armor") es un módulo de seguridad del kernel Linux que permite al administrador del sistema restringir las capacidades de un programa. Para definir las restricciones asocia a cada programa un perfil de seguridad. Este perfil puede ser creado manual o automáticamente. Complementa el modelo tradicional de control de acceso discrecional de Unix (DAC) proporcionando el control de acceso obligatorio (MAC). Está implementado utilizando el framework del núcleo Linux Security Modules.
Actualmente se encarga de mantenerlo la empresa Canonical Ltd.

## Historia

Desarrollado por la compañía Immunix en código fuente cerrado, fue adquirido por la compañía Novell en mayo de 2005 y en enero de 2006 fue publicado como de código fuente abierto. Desde mayo de 2009, Canonical Ltd. se hace cargo del mantenimiento y desarrollo de AppArmor.
AppArmor fue creado en parte como alternativa a SELinux, que era criticado por los administradores por ser demasiado difícil de instalar y mantener. Al contrario que SELinux, que se basa en añadir etiquetas a los archivos, AppArmor trabaja con las rutas de los ficheros. Según sus autores, AppArmor es menos complejo y más fácil de aprender a utilizar para un usuario medio que SELinux; incluso sus procesos de auditoría son más claros al público en general.

## Mecanismo

AppArmor necesita realizar pocas modificaciones en el sistema de ficheros, a diferencia de SELinux que necesita un sistema de ficheros que soporte sus atributos extendidos, lo que implica que no pueda controlar el acceso a archivos montados vía NFS. Con AppArmor no importa en qué clase de sistema de ficheros estén montados los archivos ya que trabaja con las rutas de los archivos o URL.
Además de la especificación manual de perfiles, AppArmor incluye un modo de aprendizaje, en el que las violaciones del perfil son registradas pero no prevenidas. Este registro puede utilizarse para crear un perfil basado en el comportamiento típico del programa.
Aunque en las versiones iniciales se incluían reglas acerca de establecer conexiones UDP y TCP, no fueron incluidas al momento de su lanzamiento. Sin embargo Novell asegura en su manual que para la versión 2.1 sí goza de tales características.

## Otros sistemas

AppArmor representa una aproximación al problema de restringir las acciones que el software instalado puede realizar según una lista de control de acceso, concepto definido en la RFC 4949.
Otra aproximación similar a AppArmor es SELinux. Una diferencia importante es que identifica los objetos del sistema de ficheros por el nombre del inodo en lugar de hacerlo por la ruta. Esto significa que, por ejemplo:
* Hay datos inaccesibles bajo AppArmor y SELinux y luego un usuario crea una nueva versión del mismo (una técnica usada con frecuencia):
** Bajo SELinux los datos se vuelven accesibles.
** Bajo AppArmor se continúa negando el acceso.
* Hay datos inaccesibles bajo AppArmor y SELinux y luego un usuario crea un enlace permanente:
** En SELinux se continúa negando el acceso.
** En AppArmor los datos se vuelven accesibles.
(En ambos casos, una política por defecto de "ningún acceso" evitaría el problema.)
Mientras se sigue debatiendo cual de las dos aproximaciones es mejor, hasta la fecha no hay ninguna evidencia definitiva que haga a uno preferible al otro. La discusión sobre las ventajas y desventajas de cada método suele girar en torno a cual de los dos se alinea más con los mecanismos de control de UNIX/Linux, pero UNIX y Linux usan una combinación de control de acceso basado en la ruta y en el inodo de los ficheros. Observar también que cualquier sistema operativo tiene mecanismos de control de acceso.
SELinux y AppArmor también se diferencian significativamente en cómo se administran e integran en el sistema.
El aislamiento de procesos también se puede lograr por los mecanismos como la virtualización; el proyecto de OLPC, por ejemplo, usa cajas de arena (sandboxes) individuales para las aplicaciones en VServer.

### Disponibilidad

AppArmor empezó a utilizarse en SUSE y openSUSE. En los últimos lanzamientos, está disponible desde la herramienta de administración (YaST), pero no está activado por defecto. En abril de 2007 fue portado/empaquetado para Ubuntu. La distribución francesa Mandriva Linux incluye AppArmor como uno de los componentes de su distribución en la edición Mandriva Linux 2008 . Desde la versión 10, Debian lo activa por defecto