Tag Archives: Systems Administrator

All my systems administrator work.

Tutorial de instalación y configuración de AppArmor en Ubuntu

Introducción

Tal y como podemos leer en la propia documentación AppArmor es una implementación de Linux Security Module para el control de acceso obligatorio basado en nombres. AppArmor confina a las aplicaciones a una serie de archivos, directorios y capacidades POSIX 1003.1e (borrador) evitando que la seguridad del sistema completo se vea comprometida por una aplicación concreta.

AppArmor fue diseñado como alternativa a SELinux con la facilidad de uso en mente. No es tan potente y configurable como SELinux, pero la curva de aprendizaje es menor, así como el mantenimiento más sencillo.

Para configurar la confinación de cada aplicación se usan perfiles, que deben configurarse individualmente para cada aplicación y que permiten establecer restricciones adicionales al sistema de permisos de sistemas operativos *nix. Las restricciones del sistema siempre son precedentes, es decir, no podemos dar acceso a un archivo o directorio con AppArmor si las restricciones a nivel de sistema operativo lo impiden. Ejemplo: no podremos acceder a un archivo cuyo único propietario es root.

Esta serie de reglas adicionales protegen el sistema parcialmente frente a vulnerabilidades recientes que no hayan sido parcheadas o que todavía no dispongan de un parche. En otras palabras, mitiga las posibilidades de que un atacante tome el control completo del sistema.

AppArmor en Ubuntu

En Ubuntu desde la versión 8.04 viene preinstalado AppArmor, aunque no viene configurado ni obviamente personalizado para nuestros casos de uso (lo veremos más adelante).

Podemos verificar si tenemos AppArmor instalado con el comando:

Que debería devolver los siguientes paquetes instalados en Ubuntu 14.04 LTS:

Si no lo tenemos instalado, no devolverá ningún paquete.

Si por el contrario tenemos instalada una versión minimal de Ubuntu es posible que tengamos que hacer la instalación manualmente. Para ello hacemos:

Una vez completada la ejecución podemos verificar de nuevo que tenemos todos los paquetes necesarios instalados:

AppArmor registra los intentos de violacion de los perfiles en /var/log/messages

AppArmor usa securityfs para cargar y monitorizar los perfiles. securityfs se monta en /sys/kernel/security

Los perfiles que están actualmente cargados se virtualizan en el fichero /sys/kernel/security/apparmor/profiles

Perfiles

Los perfiles son los archivos de configuración de la confinación de cada aplicación. Se trata de un archivo de texto plano.

A continuación instalaremos algunos perfiles prefabricados de los repositorios de Ubuntu con:

Estos perfiles son poco restrictivos, por lo que debemos personalizarlos en función de nuestras necesidades. También tendremos que activarlos manualmente.

Los perfiles se almacenan en /etc/apparmor.d

Podemos ver los perfiles instalados:

Como vemos tenemos una buena cantidad de perfiles con los que empezar a jugar:

Los nombres de los perfiles corresponden con la ubicación del ejecutable de la aplicación en el que se elimina la barra inicial y se reemplazan las siguientes por el caracter “.”.

Ejemplo:

Si queremos crear un perfil para sublime text 3, en mi caso ubicado en (which subl):

el nombre del archivo del perfil pasa a ser:

y se almacena en:

Modos de ejecución

Una vez un perfil se define, se activa automaticamente cuando se inicia AppArmor. Existen dos modos de ejecución de cada perfil:

Modo “complain” (test): Monitoriza las aplicaciones y registra las violaciones de las restricciones de los perfiles, pero SIN restringir el acceso. Se puede decir que es un modo test.

Modo “enforce” (confinación): Monitoriza las aplicaciones y registra las violaciones de las restricciones de los perfiles. En este modo se deniega el acceso al recuso y la aplicación se confina.

Uso de AppArmor

Para interactuar con AppArmor disponemos de varios comandos. Los primeros a aprender son los relacionados con el servicio:

status: Informa del estado de AppArmor.
start: Inicia AppArmor.
stop: Para AppArmor.
restart: Reinicia AppArmor.
reload: Recarga la configuración de AppArmor.
force-reload: Fuerza la recarga la configuración de AppArmor.
try-restart: Intenta reiniciar AppArmor (test).
kill: Fuerza la parada de AppArmor.

Otros comandos útiles

aa-autodep: Crear una plantilla de perfil para un aplicación. La plantilla contiene los parámetros básicos de configuración, pero ni están todos, ni tiene porque ser correcta la configuración.

aa-complain: Fija un perfil en modo “complain”.

aa-enforce: Fija un perfil en modo “complain”.

aa-unconfined: Lista las aplicaciones con conexiones tcp/udp activas que no están confinadas.

aa-logprof: Inspecciona los logs en busca de problemas y modifica los perfiles asociados.

apparmor_parser: recarga un perfil en el kernel. Por ejemplo, si hemos modificado la configuración del perfil de sublime text 3, podemos recargarlo con:

O bien podemos reiniciar, recargar AppArmor (aunque en este caso se recargarían todos los perfiles, no específicamente el indicado en apparmor_parser).

Se puede obtener una descripción más completa de cada comando mediante el comando “man”:

Tras haber seguido la documentación tenemos unas nociones básicas sobre AppArmor y para que sirve. Más adelante veremos como crear y configurar un perfil con algún ejemplo.

Saludos

REFERENCIAS
http://en.wikipedia.org/wiki/Selinux
http://en.wikipedia.org/wiki/AppArmor
https://help.ubuntu.com/8.04/serverguide/C/apparmor.html
http://www.linux.com/feature/58789
http://www.linuxtopia.org/online_books/opensuse_guides/apparmor_guide/index.html
http://ubuntuforums.org/showthread.php?t=1008906
https://help.ubuntu.com/community/AppArmor