Linux

Endurecimiento de la seguridad de Linux con AppArmor

Endurecimiento de la seguridad de Linux con AppArmor

Si bien Linux es conocido por su seguridad inherente, ningún sistema operativo es inmune a los ataques. Por lo tanto, en los tiempos que corren donde las amenazas se vuelven cada vez más sofisticadas asegurar los sistemas basados en Linux es primordial.

Ya sea que estés manejando un servidor web, una aplicación en contenedores o un entorno de escritorio, AppArmor es esencial para la pila de seguridad de Linux.

¿Qué es AppArmor?

AppArmor es un módulo de seguridad de Linux (LSM) diseñado para hacer cumplir perfiles individuales que determinan los accesos de las aplicaciones a archivos y recursos del sistema.

A diferencia de los mecanismos genéricos, como los permisos de usuario AppArmor implementa controles de acceso obligatorios.

Eso lo hace independientemente de los privilegios que un usuario haya otorgado a una aplicación.

Conceptos básicos: 

  • Perfiles: define a qué puede acceder una aplicación, incluidos archivos, directorios y capacidades de red.
  •  Enforce Mode: AppArmor aplica activamente las reglas definidas. Si una aplicación intenta acceder a un recurso que no está permitido por su perfil, el acceso será denegado.
  • Complain Mode: AppArmor no bloquea el acceso, pero registra cualquier infracción. Este modo es útil para probar nuevos perfiles o para identificar posibles problemas con los perfiles existentes.

AppArmor viene de serie en la mayoría de las principales distribuciones de Linux, sobre todo en las basadas en Debian.

Para comprobar su estado basta con teclear el siguiente comando:

sudo  aa-status

El resultado debe ser algo parecido a esto:

aa-status

Su objetivo principal es hacer cumplir el principio de privilegio mínimo: cada programa solo debe acceder a los recursos del sistema (archivos, red, capacidades, etc.) que necesita para funcionar.

Para ello, cada vez que un programa inicia un proceso, el kernel comprueba su perfil de AppArmor.

Si DAC (permisos de usuario) dice que sí, pero el perfil de AppArmor dice que no, la respuesta sigue siendo no.

En otras palabras, no puede autorizar algo que está prohibido, pero puede prohibir algo que está permitido.

Escribir un perfil de AppArmor desde cero requiere saber exactamente qué archivos, capacidades y recursos de red necesita una aplicación.

Para operaciones complejas, eso puede significar cientos de reglas.

Afortunadamente, aa-genprof  que forma parte del paquete de utilidades de AppArmor para la gestión de perfiles de seguridad de aplicaciones en sistemas Linux automatiza la parte tediosa.

Para instalarlo teclea los comandos siguientes:

sudo apt update 
sudo apt install apparmor-utils

Por ejemplo, si deseas instalar y ejecutar un programa obtenido de algún repositorio ajeno a tu distribución puedes usar AppArmor para crear un perfil de seguridad.

sudo aa-genprof /ruta/de/la/aplicación
Por ejemplo: sudo aa-genprof /usr/local/bin/PeaZip

Esto te guiará durante el proceso de configuración, preguntándote qué acciones quieres permitir o bloquear.

Al hacerlo te asegurarás de que el programa solo podrá acceder a los recursos necesarios para hacer su función.

# /etc/apparmor.d/local.PeaZip
#include <tunables/global>

/PeaZip {
  # Allow the application to read its own binary
  /path/to/PeaZip r,
  # Allow access to a specific directory
  /path/to/data/* rw,
  # Deny all other access by default
  deny /  rw,
}

En el ejemplo  de arriba la aplicación PeaZip  podrá leer y escribir en un directorio de datos específico, y se le niega el acceso a todos los demás archivos y directorios.

Esto minimiza el daño potencial que un software comprometido o inseguro puede hacer a otras partes del sistema.

AppArmor viene con varios perfiles precargados. Algunos de ellos están deshabilitados de forma predeterminada. 

En distribuciones basadas en Debian puedes consultarlos en la carpeta «/etc/apparmor.d/disable».

Carpeta AppArmor Ubuntu

También es posible crear perfiles más personalizados. Puede requerir algo de aprendizaje inicial, pero los beneficios superan con creces el esfuerzo.

Para más detalles sobre el uso de AppArmor se puede consultar su wiki. Está en inglés.