GNU/Linux >> Tutoriales Linux >  >> Linux

Introducción a Ubuntu Apparmor y cómo configurar perfiles de Apparmor

AppArmor es un sistema de control de acceso obligatorio o MAC.

Utiliza el módulo de seguridad de Linux para restringir programas. AppArmor configura una colección de perfiles de aplicación predeterminados para proteger los servicios de Linux.

También puede proteger cualquier otra aplicación que se ejecute en su sistema creando archivos de perfil usted mismo.

En Ubuntu, AppArmor está instalado y habilitado de forma predeterminada. Los perfiles apparmor se cargan cuando se inicia el sistema.

AppArmor funciona en los siguientes dos tipos de modos de perfil:

  1. Aplicar:en el modo de aplicación, el sistema comienza a hacer cumplir las reglas e informa los intentos de violación en syslog o auditd (solo si auditd está instalado) y no se permitirá la operación.
  2. Queja:en el modo de queja, el sistema no aplica ninguna regla. Solo registrará los intentos de violación.

Se pueden encontrar perfiles adicionales en el paquete apparmor-profiles.

Ver estado de prendas

Puede ver el estado actual de apparmor y todos los perfiles cargados como se muestra a continuación:

$ sudo apparmor_status
apparmor module is loaded.
5 profiles are loaded.
5 profiles are in enforce mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/connman/scripts/dhclient-script
   /usr/sbin/mysqld
   /usr/sbin/tcpdump
0 profiles are in complain mode.
2 processes have profiles defined.
2 processes are in enforce mode.
   /sbin/dhclient (585)
   /usr/sbin/mysqld (799)
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Si revisamos el resultado anterior, podríamos ver que 5 perfiles están en modo Forzar.

Esto también indica que dos procesos se están ejecutando actualmente en el modo de cumplimiento (debido a los perfiles). Por ejemplo, /sbin/dhclient con PID de 585 se ejecuta en el modo de cumplimiento.

Cambiar modo de perfil

Para configurar un perfil en modo de queja, primero instale el paquete apparmor-utils si aún no está instalado.

apt-get install apparmor-utils

Use el comando aa-complain para configurar un perfil en modo de queja. Por ejemplo, haga lo siguiente para habilitar el modo de queja para mysqld.

$ sudo aa-complain /usr/sbin/mysqld
Setting /usr/sbin/mysqld to complain mode.

Ahora, cuando ejecute apparmor_status, verá mysqld en modo de queja.

$ sudo apparmor_status
apparmor module is loaded.
5 profiles are loaded.
4 profiles are in enforce mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/connman/scripts/dhclient-script
   /usr/sbin/tcpdump
1 profiles are in complain mode.
   /usr/sbin/mysqld
2 processes have profiles defined.
1 processes are in enforce mode.
   /sbin/dhclient (585)
1 processes are in complain mode.
   /usr/sbin/mysqld (799)
0 processes are unconfined but have a profile defined.

Puede volver a cambiar el perfil al modo de aplicación mediante el comando aa-enforce como se muestra a continuación.

$ sudo aa-enforce /usr/sbin/mysqld
Setting /usr/sbin/mysqld to enforce mode.

Archivos de perfil de AppArmor

Los perfiles de AppArmor son archivos de texto ubicados en el directorio /etc/apparmor.d/.

Los archivos tienen el nombre de la ruta completa al ejecutable que perfilan, pero reemplazan el "/" con ".".

Por ejemplo, el comando ping se encuentra en /bin/ping. El archivo de perfil de AppArmor equivalente se llamará bin.ping

El siguiente es el archivo de perfil de Apparmor para usr.sbin.mysqld. /usr/sbin/mysqld es la ruta absoluta del binario donde se aplica este perfil.

# cat usr.sbin.mysqld
# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>
/usr/sbin/mysqld {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/user-tmp>
  #include <abstractions/mysql>
  #include <abstractions/winbind>
  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,
  network tcp,
  /etc/hosts.allow r,
  /etc/hosts.deny r,
  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/*.cnf r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,
  /sys/devices/system/cpu/ r,
  # Site-specific additions and overrides. See local/README for details.
  #include <local/usr.sbin.mysqld>
}

En un archivo de perfil, los comentarios siempre van con el signo #. #incluir líneas carga el archivo.

Los siguientes son los diferentes tipos de reglas que se utilizan en los perfiles.

  1. Entradas de ruta:contiene información sobre a qué archivos puede acceder la aplicación.
  2. Entradas de capacidad:determina los privilegios que puede usar un proceso confinado.
  3. Entradas de red:determina el tipo de conexión. Por ejemplo:tcp. Para una red de analizador de paquetes, puede ser sin procesar o de paquetes, etc.

Dentro de las llaves {} tenemos otras declaraciones de inclusión y también incluye permisos/modos de acceso [leer (r)/escribir (w)/ejecutar (x) (k) bloquear (requiere r o w, AppArmor 2.1 y posterior)] para varios archivos y directorios, que incluyen expresiones regulares que engloban las declaraciones de inclusión entre llaves {} ayudan a cargar componentes de perfiles de Novell AppArmor.

Deshabilitar AppArmor

Si algún proceso está funcionando como se esperaba, y si desea depurar si los perfiles de apariencia son la razón de eso, es posible que desee deshabilitar temporalmente la apariencia para la depuración.

# /etc/init.d/apparmor stop
 * Clearing AppArmor profiles cache  [OK]

Ejecutar el comando anterior solo borrará el caché de perfiles. Para descargar el perfil ejecute el siguiente comando.

# /etc/init.d/apparmor teardown
 * Unloading AppArmor profiles [OK]

Linux
  1. Cómo instalar y configurar Redis en Ubuntu 18.04

  2. Cómo instalar y configurar Redmine en Ubuntu 18.04

  3. Cómo instalar y configurar Samba en Ubuntu 18.04

  4. ¿Cómo instalar y configurar Fail2ban en Ubuntu?

  5. Cómo instalar y configurar Elasticsearch en Ubuntu 18.04

Cómo instalar y configurar Nextcloud en Ubuntu 20.04

Cómo instalar y configurar Supervisor en Ubuntu 20.04

Cómo instalar y configurar un servidor TeamSpeak en Ubuntu 18.04

Cómo instalar y configurar un servidor de Minecraft en Ubuntu 18.04

Cómo instalar y configurar PHP OPcache en Ubuntu 18.04

Cómo instalar y configurar Git en Ubuntu 20.04