Capítulo 5. Creación de perfiles para las aplicaciones Web mediante ChangeHat de Apache

Tabla de contenidos

5.1. Apache ChangeHat
5.2. Configuración de Apache para mod-apparmor

Un perfil de Novell® AppArmor representa la directiva de seguridad para un programa o un proceso concretos. Se aplica a un programa ejecutable, pero si una porción del programa necesita permisos de acceso distintos que otras porciones, el programa puede “cambiar de sombrero” para utilizar un contexto de seguridad distinto, diferente del acceso del programa principal. Esto se conoce como un hat (sombrero en inglés) o subperfil.

ChangeHat permite a los programas cambiar de un hat de un perfil Novell AppArmor a otro. Permite definir la seguridad a un nivel más preciso que los procesos.

Esta función requiere que todas las aplicaciones se hagan “compatibles con ChangeHat”, lo que significa que se modifican para realizar una petición al módulo de Novell AppArmor para cambiar los dominios de seguridad en momentos arbitrarios durante la ejecución de la aplicación.

Un perfil puede tener un número arbitrario de subperfiles, pero sólo hay dos niveles: un subperfil no admite más subperfiles subordinados. Los subperfiles se escriben como perfiles distintos y reciben un nombre que contiene el nombre del perfil, seguido por el nombre del subperfil separados por el símbolo ^. Los subperfiles se deben almacenar en el mismo archivo que su perfil principal.

[Note]Nota

Para obtener más información, consulte la página Man de change_hat.


5.1. Apache ChangeHat

Novell AppArmor incluye el módulo mod-apparmor para el programa Apache. El módulo mod-apparmor funciona en el sistema SUSE Linux para hacer que el servidor Web Apache se haga “compatible con ChangeHat”. Se instala si Apache se encuentra presente en el sistema.

Cuando Apache sea compatible con ChangeHat, buscará los siguientes perfiles de seguridad personalizados de Novell AppArmor en el orden otorgado para cada solicitud de URI que reciba.

  • El hat específico para el URI (por ejemplo, ^phpsysinfo-dev/templates/classic/images/bar_left.gif)

  • DEFAULT_URI

  • HANDLING_UNTRUSTED_INPUT

Si dispone del servidor Apache 2 necesario instalado en el sistema, el módulo mod-apparmor se instala automáticamente con Novell AppArmor y se añade a la configuración de Apache. Apache 1.3 no es compatible.

[Note]Nota

Si instala mod-apparmor sin Novell AppArmor, tendrá que asegurarse de que el módulo de carga de Apache dispone de un comando en el archivo de configuración que cargue el módulo mod-apparmor añadiendo la siguiente línea al archivo de configuración de Apache:

LoadModule change_hat_module modules/mod_change_hat.so

5.1.1. Herramientas para la gestión de aplicaciones compatibles con ChangeHat

Al igual que ocurre con la mayoría de las herramientas de Novell AppArmor, se pueden usar dos métodos para gestionar ChangeHat: YaST o la interfaz de línea de comandos. Es mucho más flexible gestionar las aplicaciones compatibles con ChangeHat desde la línea de comandos, pero el proceso es también más complicado. Ambos métodos permiten gestionar los hats de las aplicaciones y llenarlos con entradas de perfil.

En los siguientes pasos se realiza una demostración en la que se añaden hats a un perfil de Apache mediante YaST. En el Asistente para añadir perfiles, las utilidades de creación de perfiles de Novell AppArmor solicitan que se creen nuevos hats para solicitudes de URI distintas. Si se decide crear un hat nuevo, se podrán crear perfiles individuales para cada URI. De esta forma podrá crear reglas muy estrictas para cada solicitud.

Si el URI que se está procesando no representa un procesamiento significativo, o si no supone un riesgo de seguridad importante, podrá seleccionar de forma segura la opción Usar hat por defecto para procesar este URI en el hat por defecto, que es el perfil de seguridad por defecto.

En la demostración, se ha creado un hat nuevo para el URI phpsysinfo-dev y sus accesos posteriores. Mediante las herramientas de creación de perfiles, se ha determinado lo que se añade a este nuevo hat. El hat resultante se convierte en un contenedor de alta seguridad que comprende todo el procesamiento del servidor que se produce cuando el URI phpsysinfo-dev se pasa al servidor Web Apache.

En esta demostración se ha generado un perfil para la aplicación phpsysinfo (consulte http://phpsysinfo.sourceforge.net para obtener más información). Se presupone que el paquete phpsysinfo-dev está instalado en /srv/www/htdocs/phpsysinfo-dev/ en una instalación limpia (nueva) de Novell AppArmor.

  1. Una vez instalado phpsysinfo-dev, podrá añadir hats al perfil de Apache. En la interfaz de Novell AppArmor, seleccione el Asistente para añadir perfiles.

    Asistente para añadir perfiles
  2. En Perfil que añadir, indique httpd2-prefork.

  3. Haga clic en Crear perfil. Se abrirá la ventana del Asistente de perfiles de Novell AppArmor.

    Asistente de perfiles de AppArmor
  4. Reinicie Apache introduciendo el comando rcapache2 restart en una ventana de terminal.

    [Note]Nota

    Reinicie en este momento cualquier programa para el que esté creando un perfil.

  5. Abra http://localhost/phpsysinfo-dev/ en una ventana del navegador Web. La ventana del navegador mostrará el uso de la red y la información del sistema.

    [Note]Nota

    Para garantizar que el servidor procesa esta solicitud y que no se revisan datos de caché del navegador, deberá actualizar la página. Para ello, haga clic en el botón Actualizar del navegador para asegurarse de que Apache procesa la solicitud para el URI phpsysinfo-dev.

  6. Haga clic en Explorar registro del sistema en busca de entradas que añadir a los perfiles. Novell AppArmor abrirá la herramienta logprof, que explorará toda la información adquirida en el paso anterior. Empezará a realizar preguntas sobre el perfil.

  7. En nuestra demostración, logprof presenta primero las opciones Añadir hat pedido o Usar hat por defecto, ya que ha notado que phpsysinfo-dev ha accedido a un URI. Seleccione Añadir hat pedido.

    Asistente de perfiles de AppArmor: Añadir hat pedido
  8. Haga clic en Permitir

    Al seleccionar Añadir hat pedido en el paso anterior, se crea un hat nuevo en el perfil e indica que las preguntas siguientes acerca de las acciones del guión se añadan al hat recién creado, en lugar de al hat por defecto para esta aplicación.

    En la pantalla siguiente, Novell AppArmor muestra un programa externo que ha ejecutado el guión. Puede indicar que el programa se debe ejecutar con las limitaciones indicadas por el hat phpsysinfo-dev (haga clic en Heredar), con las limitaciones de un perfil distinto (haga clic en Perfil) o que se ejecute sin limitaciones o sin ningún perfil de seguridad (haga clic en No limitado). Si se elige Perfil, se creará un perfil nuevo para el programa, si no existe ya uno.

    [Note]Nota

    Si se selecciona No limitado se puede crear un agujero de seguridad importante y se debe tener precaución a la hora de elegir esta opción.

    Asistente de perfiles de AppArmor: Heredar
    1. Seleccione Heredar para la vía /bin/bash. De esta forma se añadirá /bin/bash/ (al que accede Apache) al perfil hat phpsysinfo-dev con los permisos necesarios.

    2. Haga clic en Permitir.

  9. Las siguientes preguntas le solicitarán que genere nuevos hats y que añada entradas para el perfil y sus hats. El proceso de adición de entradas a perfiles se trata de forma detallada en la Sección 3.3.1, “Adición de perfiles mediante el asistente” (↑Guía de administración de Novell AppArmor 2.0).

    Cuando haya respondido a todas las preguntas, haga clic en Finalizar para guardar los cambios y salir del asistente.

A continuación se muestra un ejemplo del aspecto que puede tener un hat phpsyinfo-dev.

Ejemplo 5.1. Ejemplo de hat phpsysinfo-dev

  ^phpsysinfo {
  #include <program-chunks/base-files>
    /bin/df                               ix,
    /bin/bash                             ix,
    /dev/tty                              rw,
    /etc/SuSE-release                     r,
    /etc/fstab                            r,
    /etc/hosts                            r,
    /etc/mtab                             r,
    /proc/**                              r,
    /sbin/lspci                           ix,
    /srv/www/htdocs/sysinfo/**            r,
    /sys/bus/pci/devices                  r,
    /sys/devices/**                       r,
    /usr/bin/who                          ix,
    /usr/share/pci.ids                    r,
    /var/log/apache2/{access,error}_log   w,
    /var/run/utmp                         r,
  }
[Note]Nota

El perfil ^phpsysinfo-dev sólo será válido en el contexto de un proceso que se ejecute en el perfil principal httpd2-prefork.

5.1.2. Adición de hats y de entradas a hats

Cuando se utiliza el cuadro de diálogo Editar perfil (para obtener más información, consulte la Sección 3.3.3, “Edición de perfiles” (↑Guía de administración de Novell AppArmor 2.0)) o cuando se añade un perfil nuevo mediante Añadir manualmente perfil de Novell AppArmor (para obtener más información, consulte la Sección 3.3.2, “Adición manual de perfiles” (↑Guía de administración de Novell AppArmor 2.0)), se da la opción de añadir hats (subperfiles) a los perfiles de Novell AppArmor.

Es posible añadir un subperfil de ChangeHat en la ventana Cuadro de diálogo de perfiles de Novell AppArmor.

Cuadro de diálogo de perfiles de AppArmor
  1. En la ventana Cuadro de diálogo de perfiles de Novell AppArmor, haga clic en Añadir entrada y seleccione Hat. Se abrirá el cuadro de diálogo Introducir nombre de hat:

    Introducir nombre de hat
  2. Introduzca el nombre del hat que desea añadir al perfil de Novell AppArmor. El nombre es el URI que, cuando se accede a él, recibe los permisos definidos en el hat.

  3. Haga clic en Crear hat. Volverá a la ventana Cuadro de diálogo de perfiles de Novell AppArmor.

  4. Cuando haya terminado de añadir el nuevo hat, haga clic en Terminado.

[Note]Nota

Para observar un ejemplo de un perfil de Novell AppArmor, consulte el Ejemplo 5.1, “Ejemplo de hat phpsysinfo-dev” (↑Guía de administración de Novell AppArmor 2.0).