Cómo usar AppArmor en Ubuntu

Probablemente hayas oído hablar de AppArmor mientras usas Ubuntu, pero dado que no es una aplicación que aparece en el Menú de Aplicaciones y no se presenta en ninguna forma gráfica, algunos pueden no saber qué hace y por qué es esencial para tu sistema. En resumen, AppArmor es un módulo de seguridad que confina programas individuales a un conjunto de archivos y capacidades listadas para que no causen estragos en tu sistema.
Aprende la diferencia entre SELinux y AppArmor para asegurar tu sistema Linux.
Tabla de Contenidos
- ¿Qué es AppArmor?
- Cómo funciona AppArmor
- Comprobando el estado de AppArmor
- Encontrando perfiles de AppArmor deshabilitados
- Habilitando y deshabilitando perfiles de AppArmor
- ¿Cómo se ve un perfil de AppArmor?
- Creando tus propios perfiles para restringir aplicaciones
- Deteniendo y reiniciando AppArmor
- Preguntas frecuentes
¿Qué es AppArmor?
AppArmor es un sistema de Control de Acceso Obligatorio (MAC) que confina programas a un conjunto limitado de recursos. Restringe los programas a un conjunto de archivos, atributos y capacidades para que no se internan en el sistema y causen estragos (a menos que se les otorgue permiso). En lugar del modelo de Control de Cuentas de Usuario (UAC) de Windows que otorga control a los usuarios, AppArmor vincula los atributos de control de acceso al propio programa.
Cómo funciona AppArmor
AppArmor funciona a nivel del núcleo (consulta estos consejos si estás compilando tu propio núcleo) y se carga durante el arranque inicial. AppArmor maneja los permisos a través de Perfiles: un conjunto de reglas que determina lo que el programa puede y no puede hacer.
Hay dos modos en los que los Perfiles pueden ejecutarse: Cumplimiento y Queja. El modo Cumplimiento aplica estrictamente la política, que se define en el perfil, y reporta intentos de violación de políticas. El modo Queja solo reportará los intentos de violación de políticas y no hace cumplir la política. La mayoría de los perfiles se cargan en modo Cumplimiento, aunque también pueden haber un buen número de perfiles de terceros cargados en modo Queja.
Comprobando el estado de AppArmor
Si estás utilizando Ubuntu 7.04 o superior, AppArmor está instalado por defecto y se carga cuando inicias tu computadora. Para comprobar el estado de AppArmor, escribe el siguiente comando en el terminal:
sudo apparmor_statusLa imagen a continuación muestra lo que verás.

En mi sistema, puedes ver que hay 36 perfiles cargados en modo Cumplimiento.
Encontrando perfiles de AppArmor deshabilitados
AppArmor tiene varios perfiles pre-cargados, algunos de los cuales están deshabilitados por defecto. Puedes revisarlos en la carpeta “/etc/apparmor.d/disable”. En la última versión de AppArmor, puedes ver que el perfil rsyslogd no está habilitado.

Este perfil está deshabilitado por defecto, ya que los usuarios a menudo realizan cambios de configuración a rsyslogd que lo hacen incompatible con AppArmor.
Consejo: aprende cómo puedes gestionar tu máquina Ubuntu de forma remota con Webmin.
Habilitando y deshabilitando perfiles de AppArmor
Mientras puedes tener múltiples perfiles cargados en tu sistema, cada perfil puede ser habilitado o deshabilitado individualmente. Por ejemplo, puedes habilitar el perfil rsyslogd mencionado anteriormente. Sigue las instrucciones a continuación para aprender cómo hacerlo.
Abre un terminal e ingresa:
sudo apt install apparmor-utilsEso instalará las herramientas necesarias para ejecutar los comandos siguientes en este tutorial. Para habilitar el perfil, ingresa:
sudo aa-enforce /etc/apparmor.d/usr.sbin.rsyslogdPara deshabilitarlo nuevamente:
sudo ln -s /etc/apparmor.d/usr.sbin.rsyslogd /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.rsyslogd¿Cómo se ve un perfil de AppArmor?
Si bien los perfiles de AppArmor suenan como software complicado, en realidad son archivos de texto simples con rutas de archivo que indican qué carpetas y directorios puede acceder la aplicación. Puedes hacer doble clic fácilmente en cualquier perfil en la carpeta “/etc/apparmor.d” para abrirlo en tu editor de texto.
El perfil de Rsyslogd se verá como la imagen a continuación.

Creando tus propios perfiles para restringir aplicaciones
Ubuntu ya hace un buen trabajo para protegerte, pero si deseas restringir una aplicación personalizada que no está protegida por Ubuntu, puedes crear tu propio perfil de AppArmor para bloquear la aplicación. Esto es particularmente útil en un servidor donde las aplicaciones pueden estar ejecutándose en segundo plano.
Nota: antes de crear tus propios perfiles, es mejor primero revisar la biblioteca de perfiles existentes de AppArmor para verificar si el perfil para tu aplicación está disponible. También puedes instalar apparmor-profiles para obtener una lista adicional de perfiles.
Ejecuta el siguiente comando para comenzar a perfilar:
sudo aa-genprof /ruta/a/la/aplicación/ruta/a/la/aplicación es la ruta de archivo a la aplicación que deseas perfilar. La carpeta predeterminada de aplicaciones es “/usr/bin”, pero podría ser diferente dependiendo de la aplicación y el método de instalación, como “/snap/bin”.

Deja el terminal en ejecución y comienza la aplicación que vas a perfilar. Para este ejemplo, estoy usando Krita. Usa la aplicación como lo harías normalmente.
Por cada acción que realices en la aplicación, vuelve al terminal y presiona Shift + S para que escaneé los cambios.

Desde aquí, puedes ver la ruta a la que accede la aplicación y la gravedad de la acción. Elige “Permitir (A)” o “Denegar (D)” la acción.
Sigue haciendo esto con el resto de las acciones realizadas en la aplicación. Para obtener el mejor resultado, es mejor que planifiques tu lista de acciones antes de comenzar a perfilar.
Por último, cuando hayas terminado, presiona Shift + F para finalizar el perfilado y Shift + S para guardar el perfil.
Una vez creado, el perfil se guardará en la carpeta “/etc/apparmor.d” y se cargará en modo Cumplimiento.
Editar Perfiles
Para editar tu perfil recién creado, utiliza el siguiente comando:
sudo aa-logprof /etc/apparmor.d/En este caso, debe ser el nombre del nuevo perfil que se creó cuando usaste el comando aa-genprof anteriormente.
AppArmor escaneará las entradas del log y te permitirá hacer cambios en el perfil.
Deteniendo y reiniciando AppArmor
Si, por alguna razón, necesitas detener AppArmor, puedes hacerlo fácilmente con:
sudo service apparmor stopPuedes confirmar que se detuvo comprobando el estado con este comando:
systemctl status apparmor
Y para iniciar AppArmor nuevamente:
sudo service apparmor restartSi verificas el estado nuevamente, verás una luz verde que indica que AppArmor está en funcionamiento.

Si estás ejecutando tu propio servidor, consulta estos consejos para asegurar tu servidor Linux.
Preguntas frecuentes
¿Por qué AppArmor desactiva rsyslog por defecto?
rsyslog es un software configurable que maneja el registro del sistema, incluyendo la recepción, transformación y entrega de mensajes de registro a diferentes destinos. Su perfil de AppArmor, “usr.sbin.rsyslogd”, está incluido pero deshabilitado por defecto.
Según el ingeniero de Canonical Jamie Strandboge, esto sucede porque rsyslog es tan altamente configurable que el perfil puede no funcionar correctamente en todas las ocasiones.
¿Cuál es la diferencia entre las versiones 2 y 3 de AppArmor?
AppArmor 3.x es la última versión de AppArmor y fue lanzada el 1 de octubre de 2020, siendo una expansión importante. AppArmor 2.x es muy antiguo, habiéndose lanzado alrededor de 2007. Parece que ya no habrá desarrollo activo en la serie 2.x. La última versión, 2.13.6, fue lanzada en diciembre de 2020, y AppArmor 2.14 está listado como “cancelado” en el sitio web de desarrollo. AppArmor 3.0.7 fue lanzado el 9 de agosto de 2022.
Si tengo AppArmor, ¿todavía necesito un antivirus?
Sí, todavía necesitas un programa antivirus incluso si tienes AppArmor en funcionamiento. Los dos realizan operaciones completamente diferentes y se complementan entre sí. Es bueno tener un antivirus en Ubuntu, aunque los sistemas Linux están menos atacados por los creadores de malware.
¿Qué son los blobs binarios y por qué son un riesgo de seguridad? Aprende la respuesta y cómo Linux-Libre puede ofrecerte mejor protección que el Linux normal.
Todas las capturas de pantalla por Brandon Li.