4.4. Limitación de privilegios con AppArmor

Muchas vulnerabilidades de seguridad se producen por fallos en los programas de confianza. Los programas de confianza se ejecutan con privilegios que algunos atacantes desean tener, por lo que ese programa deja de ser de confianza si tiene un fallo que permita al atacante conseguir esos privilegios.

Novell® AppArmor es una solución de seguridad de aplicaciones diseñada específicamente para reducir al mínimo los privilegios de los programas sospechosos. AppArmor permite al administrador especificar el dominio de actividades que el programa puede realizar desarrollando un perfil de seguridad para esa aplicación, que consiste en una lista de archivos a los que puede acceder el programa y las acciones que puede llevar a cabo.

El robustecimiento de un sistema informático requiere la reducción al mínimo del número de programas que otorgan privilegios y, seguidamente, la aplicación de toda la seguridad posible a los programas. Con Novell AppArmor, lo único que necesita es definir el perfil de los programas que están expuestos a ataques en su entorno, con lo que se reduce drásticamente la cantidad de trabajo necesario para robustecer el equipo. Los perfiles de AppArmor aplican directivas que garantizan que los programas hacen lo que se supone que deben hacer, pero nada más.

Los administradores sólo tienen que preocuparse de las aplicaciones vulnerables a los ataques y generar perfiles para ellas. El robustecimiento de un sistema, por lo tanto, se reduce a crear y mantener el conjunto de perfiles de AppArmor y a monitorizar las violaciones de las directivas o las excepciones registradas por la utilidad de creación de informes de AppArmor.

La creación de perfiles de AppArmor con los que limitar las aplicaciones es muy directa e intuitiva. AppArmor se distribuye con varias herramientas que asisten en la creación de perfiles. AppArmor no requiere ninguna tarea de programación ni de gestión de guiones. La única tarea que deberá realizar el administrador es establecer una directiva del acceso más estricto y ejecutar permisos para cada aplicación que deba controlarse.

La actualización o la modificación de los perfiles de aplicaciones sólo son precisas cuando cambia la configuración del software o el ámbito de actividades necesario. AppArmor ofrece herramientas intuitivas para gestionar la actualización y la modificación de los perfiles.

Los usuarios no notarán en absoluto la presencia de AppArmor. Se ejecuta “en segundo plano” y no requiere ningún tipo de interacción por parte del usuario. El rendimiento tampoco se verá afectado de forma perceptible por el uso de AppArmor. Si alguna actividad de la aplicación no queda cubierta por un perfil de AppArmor, o si se impide alguna actividad, el administrador tendrá que ajustar el perfil de esa aplicación para que cubra ese tipo de comportamiento.

En esta guía se describen las tareas básicas que hay que llevar a cabo con AppArmor para proteger el sistema de forma eficaz. Para obtener información más detallada, consulte la Guía de administración de Novell AppArmor 2.0.

4.4.1. Instalación de Novell AppArmor

Los usuarios que opten por la instalación de un escritorio GNOME o KDE pueden omitir esta sección, ya que Novell AppArmor se instala por defecto con esas opciones.

Si no instala ninguno de estos escritorios, o incluso si va a instalar un entorno basado totalmente en texto, haga lo siguiente para instalar los paquetes necesarios utilizando el gestor de paquetes de YaST.

  1. Inicie la sesión como usuario Root y abra YaST.

  2. En el Centro de control de YaST, seleccione Software+Instalar/desinstalar software.

  3. Utilice la función de búsqueda de YaST (palabra clave “AppArmor”) para instalar los siguientes paquetes:

    • apparmor-parser

    • libapparmor

    • apparmor-docs

    • yast2-apparmor

    • apparmor-profiles

    • apparmor-utils

  4. Seleccione todos esos paquetes para instalarlos y después elija Aceptar. YaST resuelve todas las dependencias e instala todos los paquetes sin que el usuario tenga que intervenir.

  5. Cuando YaST haya terminado de actualizar la configuración del sistema, haga clic en Finalizar para salir del gestor de paquetes.

4.4.2. Habilitación de Novell AppArmor

Cuando se haya instalado Novell AppArmor, habilítelo explícitamente para asegurarse de que se iniciará cuando se abra el sistema. Utilice el módulo Servicios del sistema (niveles de ejecución) de YaST para esta tarea:

  1. Inicie la sesión como usuario Root y abra YaST.

  2. Abra Sistema+Servicios del sistema (Niveles de ejecución).

  3. En la lista de servicios mostrada, seleccione apparmor. Consulte la Figura 4.3, “Habilitación de Novell AppArmor con YaST”.

  4. Haga clic en Habilitar para habilitar AppArmor de forma permanente.

  5. Haga clic en Finalizar para aceptar los ajustes.

Figura 4.3. Habilitación de Novell AppArmor con YaST

Habilitación de Novell AppArmor con YaST

Mediante la herramienta de niveles de ejecución de YaST, es posible habilitar de forma permanente los servicios: estos ajustes se mantienen tras rearrancar el sistema. Para habilitar AppArmor de forma temporal (únicamente mientras dure una sesión), haga lo siguiente:

  1. Inicie la sesión como usuario Root y abra YaST.

  2. Inicie Novell AppArmor+Panel de control de AppArmor.

  3. Defina la opción Estado de AppArmor con el valor AppArmor está habilitado haciendo clic en Configurar+Habilitar+Aceptar.

  4. Confirme sus ajustes con la opción Terminado.

4.4.3. Procedimientos iniciales para la creación de perfiles de aplicaciones

Para preparar una instalación correcta de Novell AppArmor en el sistema, tenga especial cuidado con los siguientes elementos:

  1. Determine las aplicaciones para las que hay que crear perfiles. Obtenga más información al respecto en Sección 4.4.3.1, “Selección de las aplicaciones para las que crear perfiles”.

  2. Cree los perfiles necesarios como se describe de forma somera en Sección 4.4.3.2, “Creación y modificación de perfiles”. Compruebe los resultados y ajuste los perfiles según sea necesario.

  3. Haga un seguimiento de lo que ocurre en el sistema ejecutando informes de AppArmor y resolviendo los eventos de seguridad. Consulte Sección 4.4.3.3, “Configuración de notificaciones de eventos e informes de Novell AppArmor”.

  4. Actualice los perfiles cuando se produzcan cambios en el entorno o cuando tenga que reaccionar a los eventos de seguridad registrados por la herramienta de informes de AppArmor. Consulte Sección 4.4.3.4, “Actualización de los perfiles”.

4.4.3.1. Selección de las aplicaciones para las que crear perfiles

Sólo es necesario proteger los programas que están expuestos a ataques con su configuración concreta, por lo tanto, sólo se usarán los perfiles de las aplicaciones que se ejecuten realmente. Utilice la siguiente lista para determinar los candidatos más probables:

Agentes de red

Los programas (servidores y clientes) tienen puertos de red abiertos y los agentes de red son programas servidores que responden a esos puertos. Los clientes de los usuarios (por ejemplo, los clientes de correo electrónico o los navegadores Web) también tienen puertos de red abiertos y otorgan privilegios.

Aplicaciones Web

Los guiones CGI de Perl, las páginas PHP y aplicaciones Web mucho más complejas se pueden invocar mediante un navegador Web.

Tareas del daemon cron

Los programas que ejecuta periódicamente el daemon cron leen datos de entrada de varios orígenes.

Para averiguar qué procesos se están ejecutando actualmente con puertos de red abiertos y pueden requerir un perfil que los limite, ejecute el comando unconfined como usuario Root.

Ejemplo 4.1. Resultado del comando unconfined

19848 /usr/sbin/cupsd not confined
19887 /usr/sbin/sshd not confined
19947 /usr/lib/postfix/master not confined
29205 /usr/sbin/sshd confined by '/usr/sbin/sshd (enforce)'

Todos los procesos del ejemplo anterior con la etiqueta not confined (sin limitar) pueden requerir un perfil personalizado para limitarlos. Los indicados con la etiqueta confined by (limitado por) ya están protegidos por AppArmor.

[Tip]Información adicional

Para obtener más información acerca de cómo elegir las aplicaciones que necesitan perfiles, consulte el capítulo Selección de programas que inmunizar (Guía de administración de Novell AppArmor 2.0).

4.4.3.2. Creación y modificación de perfiles

Novell AppArmor en SUSE Linux incluye un conjunto preconfigurado de perfiles para las aplicaciones más importantes. Asimismo, puede utilizar AppArmor para crear sus propios perfiles para un conjunto de aplicaciones definido en /etc/apparmor/README.profiles.

Existen dos formas de gestionar perfiles. Una consiste en utilizar la interfaz gráfica ofrecida por los módulos de Novell AppArmor de YaST; la otra es utilizar las herramientas de la línea de comandos ofrecidas por el propio paquete de AppArmor. Ambos métodos funcionan básicamente igual.

Si se ejecuta sin limitación, como se describe en Sección 4.4.3.1, “Selección de las aplicaciones para las que crear perfiles”, se identifica una lista de aplicaciones que pueden necesitar un perfil para que funcionen de forma segura.

Siga estos pasos para crear un perfil para cada aplicación:

  1. Como usuario Root, permita que AppArmor cree un esbozo del perfil de la aplicación ejecutando el comando genprof nombre_programa.

    O bien

    Ejecute YaST+Novell AppArmor+Asistente para añadir perfiles e indique la vía completa de la aplicación para la que desea crear un perfil.

    Se creará un perfil básico y AppArmor pasará a modo de aprendizaje, lo que significa que registrará cualquier actividad del programa que esté ejecutando, pero sin limitarlo aún.

  2. Ejecute todas las acciones posibles con la aplicación para que AppArmor obtenga una imagen clara de sus actividades.

  3. Permita que AppArmor analice los archivos de registro generados en el Paso 2. Puede hacerlo pulsando la tecla S en genprof

    O bien

    Haga clic en Explorar registro del sistema en busca de eventos de AppArmor en el Asistente para añadir perfiles y siga las instrucciones del asistente hasta completar el perfil.

    AppArmor explorará los registros que haya guardado durante la ejecución de la aplicación y le pedirá que defina los derechos de acceso de cada evento registrado. Puede definirlos para cada archivo o utilizar configuraciones globales.

  4. Cuando se hayan definido todos los permisos de acceso, el perfil se establecerá en el modo de aplicación. El perfil se aplicará y AppArmor restringirá la aplicación según este perfil recién creado.

    Si ha iniciado genprof para una aplicación que ya tuviera un perfil en el modo de queja, este perfil seguirá en el modo de aprendizaje hasta que salga de este ciclo de adiestramiento. Para obtener más información acerca de cómo cambiar el modo de un perfil, consulte la sección Modo de aprendizaje o de queja (Capítulo 3, Creación de perfiles de Novell AppArmor, Guía de administración de Novell AppArmor 2.0) y la sección Modo de aplicación (Capítulo 3, Creación de perfiles de Novell AppArmor, Guía de administración de Novell AppArmor 2.0).

Pruebe los ajustes del perfil efectuando todas las tareas que necesita con la aplicación que acaba de limitar. Por norma general, el programa limitado se ejecutará sin problemas y no será consciente de las actividades de AppArmor. Sin embargo, si nota algún comportamiento anómalo en la aplicación, compruebe los registros del sistema para ver si AppArmor está poniendo demasiadas limitaciones a la aplicación. Encontrará los registros oportunos en /var/log/messages o ejecutando el comando dmesg.

Si observa algo parecido al siguiente ejemplo, puede indicar que AppArmor está limitando demasiado la aplicación:

AppArmor: REJECTING w access to /var/run/nscd/socket (traceroute(2050) profile
/usr/sbin/traceroute active /usr/sbin/traceroute)

Para ajustar el perfil, vuelva a ejecutar el Asistente para añadir perfiles como se describe anteriormente y permita que analice los mensajes de registro relativos a esta aplicación concreta. Determine los derechos de acceso o las restricciones cuando YaST lo solicite.

[Tip]Información adicional

Para obtener más información acerca de la creación y modificación de perfiles, consulte el Capítulo Creación de perfiles de Novell AppArmor (Guía de administración de Novell AppArmor 2.0).

4.4.3.3. Configuración de notificaciones de eventos e informes de Novell AppArmor

Configure las notificaciones de eventos en Novell AppArmor para poder revisar los eventos de seguridad. La notificación de eventos es una función de Novell AppArmor que informa a un destinatario concreto por correo electrónico cuando se produce una actividad sistemática de Novell AppArmor con el nivel de gravedad seleccionado. Esta función está disponible actualmente a través de la interfaz de YaST.

Para configurar las notificaciones de eventos en YaST, siga estos pasos:

  1. Asegúrese de que hay un servidor de correo ejecutándose en el sistema para enviar las notificaciones de eventos.

  2. Inicie la sesión como usuario Root y abra YaST. A continuación, seleccione Novell AppArmor+Panel de control de AppArmor.

  3. En la sección Habilitar notificación de eventos de seguridad, seleccione Configurar.

  4. Defina una frecuencia para cada tipo de informe (Notificación simple, Notificación de resumen y Notificación detallada), introduzca la dirección de correo electrónico que recibirá los informes y determine la gravedad de los eventos que se deben registrar. Si desea incluir eventos de gravedad desconocida en los informes, marque la casilla Incluir los eventos de gravedad desconocida.

    [Note]Nota

    A no ser que esté familiarizado con las categorías de eventos de AppArmor, elija la opción para que se le notifiquen los eventos de todos los niveles de gravedad.

  5. Salga de este cuadro de diálogo haciendo clic en Aceptar+Finalizar para aplicar los ajustes.

Configure informes de Novell AppArmor. Mediante el uso de informes, es posible leer información importante sobre los eventos de seguridad de Novell AppArmor incluida en los archivos de registro sin tener que escudriñar manualmente en la maraña de mensajes que sólo resultan de utilidad para la herramienta logprof. Se puede reducir el tamaño del informe filtrando por periodo de tiempo o por nombre de programa.

Para configurar los informes de AppArmor, siga este procedimiento:

  1. Inicie la sesión como usuario Root y abra YaST. Seleccione Novell AppArmor+Informes de AppArmor.

  2. Seleccione el tipo de informe que desee examinar o configurar: Resumen ejecutivo de seguridad, Auditoría de aplicaciones o Informe de incidentes de seguridad.

  3. Modifique la frecuencia de generación de informes, la dirección de correo electrónico, el formato de exportación y la ubicación de los informes haciendo clic en Editar e introduciendo los datos necesarios.

  4. Para ejecutar un informe del tipo seleccionado, haga clic en Ejecutar ahora.

  5. Puede desplazarse por los informes archivados de un tipo concreto haciendo clic en Ver archivo e indicando el tipo de informe.

    O bien

    Suprima los informes que no necesite o añada otros nuevos.

[Tip]Información adicional

Para obtener más información acerca de la configuración de las notificaciones de eventos en Novell AppArmor, consulte la sección “Establecimiento de notificaciones de eventos” (Capítulo 4, Gestión de aplicaciones con perfiles, Guía de administración de Novell AppArmor 2.0). Para obtener más información acerca de la configuración de los informes, consulte la sección “Informes” (Capítulo 4, Gestión de aplicaciones con perfiles, Guía de administración de Novell AppArmor 2.0).

4.4.3.4. Actualización de los perfiles

El software y la configuración del sistema cambian con el tiempo. Como resultado, puede que sea preciso ajustar la configuración de los perfiles de AppArmor de cuando en cuando. AppArmor comprueba el registro del sistema para detectar violaciones de directivas u otros eventos de AppArmor y le permite ajustar el conjunto de perfiles en consecuencia. También se puede tratar cualquier comportamiento de una aplicación que quede fuera de lo definido en el perfil utilizando el Asistente para actualizar perfiles.

Para actualizar el conjunto de perfiles, siga este procedimiento:

  1. Inicie la sesión como usuario Root y abra YaST.

  2. Inicie Novell AppArmor+Asistente para actualizar perfiles.

  3. Cuando se le solicite, ajuste los derechos de acceso o ejecución de cualquier recurso o archivo ejecutable que se haya registrado.

  4. Salga de YaST tras contestar a todas las preguntas. Los cambios se aplicarán al perfil oportuno.

[Tip]Información adicional

Para obtener más información sobre la actualización de los perfiles a partir de los registros del sistema, consulte la sección “Actualización de perfiles a partir de entradas de registro del sistema” (Capítulo 3, Creación de perfiles de Novell AppArmor, Guía de administración de Novell AppArmor 2.0).