SELinux vs AppArmor: ¿Cuáles son las diferencias y cuál deberías usar?

SELinux (abreviatura de Security Enhanced Linux) es un módulo de seguridad del núcleo de Linux que se utiliza para aumentar la seguridad en las distribuciones de Linux endureciendo el acceso a archivos y procesos. Otro módulo similar de seguridad del núcleo de Linux utilizado para este propósito es AppArmor. Hay un gran interés en estos dos módulos debido a sus funciones superpuestas en el control de acceso para sistemas operativos Linux. Este artículo cubre las diferencias entre SELinux y AppArmor, permitiendo a los usuarios determinar cuál de estos módulos es el mejor para sus necesidades a través de una comparación de características y facilidad de uso.
Tabla de Contenidos
- ¿Qué es SELinux?
- Operaciones y comandos de SELinux
- ¿Qué es AppArmor?
- Facilidad de uso entre SELinux y AppArmor
- Preguntas frecuentes
También lee: Las 5 Mejores Distribuciones Linux-Libre para Mejorar la Seguridad
¿Qué es SELinux?
Asegurar servidores con SELinux elimina la dependencia del acceso basado en DAC basado en usuarios y roles reales del sistema. En su lugar, introduce un sistema de contexto de tres cadenas para cada proceso o usuario del sistema. Las tres cadenas, a saber, nombre de usuario, rol y dominio, permiten mayor flexibilidad y control sobre el acceso al sistema.
Un proceso sólo puede ser permitido en un dominio específico a través de la configuración de políticas en SELinux. La única excepción es cuando un proceso se lanza en un contexto explícitamente definido a través del comando runcon. Sin embargo, si existen políticas conflictivas para tal proceso ya en configuración, SELinux puede denegar dicha transición a otro contexto. Eso asegura que SELinux funcione sobre el principio de negar por defecto. Cualquier proceso o usuario necesita tener una configuración de acceso explícita para un archivo o recurso del sistema antes de acceder a él.
Operaciones y comandos de SELinux
Como una extensión de comandos de utilidad comunes en el terminal, SELinux proporciona el switch -Z, que permite la visualización del contexto de seguridad de los archivos y procesos. Comandos como ps y ls se benefician de este switch para depurar rápidamente o identificar errores en la configuración. A continuación, se muestra una captura de pantalla del comando ls.
ls-Z
La primera parte de cada línea de salida es el dominio, la segunda es el tipo de objeto y la tercera es el nombre de usuario en la configuración de SELinux. De esta manera, SELinux puede proporcionar un control total sobre el acceso a cada archivo y proceso. Los siguientes comandos se utilizan para manipular el contexto de archivos y directorios.
| Comando | Uso |
|---|---|
| chcon -t | Cambiar el contexto de un archivo objetivo |
| chcon -R | Cambiar el contexto de un directorio objetivo (este cambio es recursivo) |
| restorecon -v | Restaurar el contexto de un archivo a su valor por defecto |
| restorecon -v -R | Restaurar el contexto de un directorio a su valor por defecto (este cambio es recursivo) |
| semanage fcontext -a -t | Establecer el contexto predeterminado de un directorio a lo que el REGEX evalúa |
Por ejemplo, si hay que cambiar el contexto de todos los archivos en el directorio “/srv/web” a “httpd_sys_content_t”, se puede usar el siguiente comando:
sudo semanage fcontext -a-t httpd_sys_content_t “/srv/web(/.*)”
Dado que este contexto visto en la captura de pantalla ya está definido recursivamente para el directorio “/srv/web”, SELinux muestra un mensaje para informar al usuario. Si no está definido, una operación exitosa de semanage no muestra ninguna salida.
Los administradores del sistema y los usuarios pueden habilitar, deshabilitar o permitir SELinux a través del uso del comando setenforce. De manera similar, para verificar cuál es el estado de la aplicación en ese momento, los usuarios pueden usar el comando getenforce como se muestra en la captura de pantalla a continuación.

También lee: Cómo Transferir Archivos de Manera Segura en Linux Usando SCP
¿Qué es AppArmor?
AppArmor es apoyado en el desarrollo por Canonical, la empresa matriz que desarrolla la distribución de Linux Ubuntu. AppArmor busca ser más simple y fácil de usar que SELinux y sus perfiles se crean en el directorio “/etc/apparmor.d/”. Se muestra a continuación un perfil de AppArmor para el proceso “/usr/bin/man”.

Operaciones y comandos de AppArmor
Para ver el estado de AppArmor, se utiliza el comando aa-status. A continuación, se muestra una salida de muestra del comando.

Los perfiles de AppArmor se pueden listar por los contenidos del directorio “/etc/apparmor.d/”, como se muestra a continuación.

De la lista anterior de perfiles, si un usuario desea deshabilitar el perfil usr.bin.man, puede usar el siguiente comando:
sudo aa-complain /usr/bin/manTen en cuenta que un perfil deshabilitado se encuentra en el subdirectorio disable del directorio principal de perfiles de AppArmor. Para volver a habilitar un perfil que ha sido deshabilitado, se utiliza el siguiente comando:
sudo aa-enforce /usr/bin/manFacilidad de uso entre SELinux y AppArmor
AppArmor trabaja con rutas de archivos en el sistema de archivos en lugar de trabajar con cadenas para cada archivo como lo hace SELinux. Una ventaja de AppArmor es que las operaciones de leer, escribir, bloquear y otras operaciones con archivos son más fáciles de configurar que en SELinux. Por otro lado, aunque SELinux proporciona más características para el control de acceso a archivos, estas características se implementan a un nivel mucho más bajo en el sistema.
Por lo tanto, los usuarios tienen que aprender a usar mknod, sockets de red y otras operaciones del sistema para trabajar con SELinux. Para todos aquellos que no son administradores del sistema, es mucho más fácil aprender a usar AppArmor.
AppArmor también proporciona un modo de aprendizaje que se utiliza para registrar violaciones de control de acceso. Este modo no restringe ni previene el acceso en caso de una violación, sino que recoge datos a lo largo del tiempo para permitir la creación de un perfil separado de AppArmor basado en el comportamiento de los programas para cada infracción de acceso registrada. No hay un modo similar disponible en SELinux.
También lee: Cómo Asegurar un Servidor Doméstico Linux
Preguntas frecuentes
¿Qué distribuciones de Linux vienen preinstaladas con SELinux y AppArmor?
Todas las distribuciones de Linux bajo el paraguas de RedHat vienen preinstaladas con o ofrecen una configuración de SELinux, incluyendo RHEL, CentOS y Fedora. AppArmor está preinstalado en Debian, Ubuntu, sus distribuciones derivadas, SUSE Enterprise Server y distribuciones OpenSUSE.
¿Cuál módulo de seguridad es el mejor para un nuevo usuario de Linux?
La mayoría de las principales distribuciones de Linux vienen con cualquiera de los módulos de seguridad instalados por defecto. Por lo tanto, es poco probable que un nuevo usuario de Linux no tenga un módulo de seguridad de serie. La comparación de características y facilidad de uso entre SELinux y AppArmor muestra que para usuarios avanzados o administradores del sistema que desean un control más fino sobre su sistema operativo, SELinux es el mejor, pero para todos los demás, AppArmor es la mejor opción.
¿Son SELinux y AppArmor alternativas a cortafuegos, antivirus y otros software de seguridad o protección de datos?
SELinux y AppArmor no son alternativas a los antivirus o cortafuegos bien configurados para la seguridad del sistema y la integridad de los datos. Por lo tanto, se recomienda complementar tu sistema con un programa antivirus para una mejor protección de los datos.
Créditos de imagen: Página Wiki de AppArmor y Página Wiki de SELinux. Todas las capturas de pantalla por Zeeman Memon.