SELinux vs. AppArmor: Diferencias y cuál elegir para tu sistema

SELinux vs. AppArmor: Diferencias y cuál elegir para tu sistema

Linux es un sistema operativo seguro. Incluso el kernel de Linux incluye muchos sistemas de seguridad integrados para mantener seguros los escritorios y los servidores.

Existen dos subsistemas diseñados específicamente para la seguridad de esos sistemas. Security-Enhanced Linux (SELinux) y AppArmor proporcionan aislamiento entre aplicaciones que limitan el plano de ataque que un hacker puede utilizar para acceder a un sistema. Aunque ambos sistemas tienen el mismo objetivo, funcionan de maneras diferentes.

Diferencias entre SELinux y AppArmor

Es importante entender que ciertas distribuciones de Linux predeterminan el uso de AppArmor o SELinux. Por ejemplo, RHEL, Rocky Linux, AlmaLinux, CentOS Stream y Fedora utilizan SELinux.

Por otro lado, Ubuntu, Debian, SUSE Linux Enterprise Server, openSUSE y la mayoría de los derivados de Ubuntu/Debian usan AppArmor. Los administradores pueden instalar SELinux en distribuciones basadas en Ubuntu/Debian, pero no se recomienda instalar AppArmor en distribuciones basadas en RHEL. SELinux no es exclusivo de las distribuciones basadas en RHEL.

SELinux es más difícil de usar que AppArmor. Sin embargo, junto con esa complejidad viene mucho más control sobre cómo se aíslan los procesos y aplicaciones. Debido a la alta complejidad de SELinux, algunos administradores terminan deshabilitándolo si no están familiarizados con su funcionamiento, dejando así el sistema vulnerable.

AppArmor es mucho más fácil de aprender y usar, por lo que rara vez se deshabilita. Con esto en mente, AppArmor suele considerarse la opción más segura. Sin embargo, los administradores que necesitan más control deben usar SELinux.

SELinux define controles de acceso para aplicaciones, procesos y archivos en un sistema con políticas de seguridad. Esas políticas definen lo que los usuarios pueden o no pueden acceder. A menos que se defina una política para un proceso, aplicación o directorio, SELinux no permitirá el acceso. Este sistema está integrado en el kernel del sistema.

AppArmor usa perfiles para determinar qué archivos y permisos requiere una aplicación. Cada sistema también usa ciertas características de manera diferente.

Control de acceso

SELinux utiliza políticas de seguridad basadas en etiquetas de archivos, mientras que AppArmor utiliza políticas basadas en rutas.

AppArmor proporciona control de acceso obligatorio para complementar el control de acceso discrecional tradicional.

MLS/MCS

La seguridad multinivel (MLS) es un esquema de seguridad que aplica el modelo de acceso obligatorio de Bell-LaPadula, que define a los usuarios y procesos como sujetos. Los archivos, dispositivos y otros componentes se denominan objetos. Tanto a los sujetos como a los objetos se les asigna un nivel de seguridad que define la autorización de un sujeto o la clasificación de un objeto.

La seguridad de múltiples categorías (MCS), por otro lado, utiliza categorías que se adjuntan a objetos y se otorgan a sujetos. MCS se añadió originalmente a SELinux para hacerlo más fácil de usar y permitir a los usuarios categorizar sin aumentar la dificultad para los administradores de sistemas.

SELinux utiliza tanto MLS como MCS, mientras que AppArmor no utiliza ninguno de los dos.

Componentes

SELinux se compone de algunos componentes clave, incluyendo los siguientes:

  • Subject: como un proceso.
  • Access Vector Cache: una caché de permisos.
  • Security Server: el corazón de SELinux.
  • SELinux Database Policy: contiene políticas de seguridad.
  • Objects: como archivos, sockets, tuberías o interfaces de red.
  • Kernel module: el módulo que hace posible SELinux.

AppArmor utiliza algunos componentes clave, como los siguientes:

  • El analizador de servidor escanea puertos y determina qué aplicaciones están escuchando. Este componente también detecta si una aplicación no tiene un perfil y si el servidor necesita confinarla.
  • El generador de perfiles analiza una aplicación para crear una plantilla de perfil.
  • El optimizador registra y recopila eventos.

Reglas de políticas y niveles de control

Existen dos políticas de SELinux disponibles para un sistema:

  • Targeted: es la política predeterminada que implementa el control de acceso para un proceso específico. Cada proceso se ejecuta en un dominio confinado para limitar drásticamente el acceso del proceso a los archivos.
  • MLS (Multi-Level Security)

SELinux también incluye tres modos:

  • Enforcing: es el modo predeterminado y aplica la política de seguridad cargada en todo el sistema.
  • Permissive: el sistema registra toda la actividad, pero no la niega.
  • Disabled: SELinux está deshabilitado en un sistema.

AppArmor trabaja con dos tipos de reglas en un perfil:

  • Rutas: determinan qué archivos puede acceder una aplicación o proceso.
  • Capacidades: especifican el privilegio que puede usar un proceso confinado.

Existen dos modos de AppArmor:

  • Enforce: significa que se aplica la política.
  • Complain: las violaciones de la política solo se registran.

Ventajas y desventajas de AppArmor

La mayor ventaja de AppArmor es que es simple de usar. Esta es a menudo una de las razones por las que un administrador podría elegir una distribución basada en Ubuntu sobre una distribución basada en RHEL. Aunque AppArmor no ofrece el nivel de control que se encuentra en SELinux, ofrece más facilidad de uso.

Debido a esa simplicidad, AppArmor no ofrece el mismo nivel de flexibilidad que SELinux. Además, SELinux ofrece más niveles de control que AppArmor.

Otra desventaja de AppArmor es que agrega tiempo adicional de inicio al sistema operativo, mientras que SELinux no.

Comparación de características

Característica
SELinux
AppArmor
Control de acceso
Usa políticas de seguridad basadas en etiquetas de archivos.
Usa políticas de seguridad basadas en rutas.
MLS/MCS
Usa tanto MLS como MCS.
No usa MLS ni MCS.
Reglas de políticas y niveles de control
Ofrece más flexibilidad en políticas.
Ofrece menos flexibilidad en políticas.
Facilidad de uso
SELinux es más difícil de aprender que AppArmor.
Más fácil de aprender y usar que SELinux.
Distribuciones
Disponible para la mayoría de las distribuciones.
Principalmente usado en distribuciones SUSE y Ubuntu/Debian

Ventajas y desventajas de SELinux

La mayor ventaja de SELinux es su flexibilidad. SELinux también es ampliamente considerado como el más seguro de los dos ya que es compatible con MLS.

Al mismo tiempo, SELinux es difícil de aprender. No solo las herramientas de línea de comandos son desafiantes, sino que también es a menudo difícil depurar mensajes de error. En una máquina con SELinux, incluso tareas simples como servir sitios web desde directorios no tradicionales pueden ser un desafío. Debido a esto, SELinux puede frustrar a los nuevos administradores.

SELinux vs. AppArmor: La realidad de cada uno

AppArmor es más adecuado para administradores que necesitan resolver problemas consistentemente en minutos. Por otro lado, los problemas de SELinux pueden tomar horas, y a veces días, en resolverse.

Para el más alto nivel de seguridad, deberíamos elegir una distribución basada en SELinux. Si queremos una distribución que incluya un sistema de seguridad que frustre a los atacantes y no a los administradores, elegiremos una distribución basada en AppArmor.