5.2. Configuración de Apache para mod-apparmor

Apache se configura colocando directivas en archivos de configuración de sólo texto. El archivo de configuración principal suele ser httpd.conf. Cuando se compila Apache se puede indicar la ubicación de este archivo. Las directivas se pueden colocar en cualquiera de estos archivos de configuración para modificar el comportamiento de Apache. Si se realizan cambios a los archivos de configuración principales, habrá que iniciar o reiniciar Apache para que estos cambios se reconozcan.

5.2.1. Directivas de host virtual

Las directivas de host virtual controlan si las solicitudes que contienen información de vías finales, que siguen a un nombre de archivo real (o un archivo que no exista en un directorio que sí esté presente), se aceptarán o se rechazarán. Para consultar la documentación de Apache sobre las directivas de host virtual, diríjase a la http://httpd.apache.org/docs-2.0/mod/core.html#virtualhost

La palabra clave de configuración específica de change_hat es ImmDefaultHatName y se utiliza de la misma forma que ImmHatName, por ejemplo, ImmDefaultHatName Mi_hat_por_defecto.

La opción de configuración se basa en realidad en una directiva de servidor que permite utilizar la palabra clave independientemente de otras opciones, por lo que se configura para el servidor por defecto. En Apache, se considera que los hosts virtuales son como “servidores” independientes, por lo que se puede definir un nombre de hat por defecto, así como un nombre para cada host virtual, si se desea.

Cuando llega una solicitud, los siguientes pasos reflejan la secuencia que sigue mod-apparmor para intentar aplicar los hats.

  1. Un hat de ubicación o de directorio indicado mediante la palabra clave ImmHatName.

  2. Un hat cuyo nombre indique la vía completa del URI.

  3. Un hat de servidor por defecto indicado mediante la palabra clave ImmDefaultHatName.

  4. DEFAULT_URI (y si no existe ninguno, vuelve al hat “principal” de Apache).

5.2.2. Directivas de ubicación y directorio

Las directivas de ubicación y directorio indican los nombres de los hats en el archivo de configuración del programa, de modo que el programa pueda llamar al hat para asuntos de seguridad. Para Apache, encontrará documentación sobre estas directivas en http://httpd.apache.org/docs-2.0/sections.html.

El ejemplo de directiva de ubicación siguiente indica que mod-apparmor debería usar un hat concreto para una ubicación determinada:

<Location /foo/>
      ImmHatName MI_NOMBRE_DE_HAT
</Location>

En este ejemplo se intenta utilizar MI_NOMBRE_DE_HAT para cualquier URI que empiece por /foo/ (/foo/, /foo/bar, /foo/cgi/path/bla_bla/bla, etc.).

En el siguiente ejemplo, la directiva de directorio funciona de forma similar que la de ubicación, excepto en que hace referencia a una vía del sistema de archivos:

<Directory "/srv/www/www.immunix.com/docs"> # Fíjese en que no hay barra inclinada de cierre 
      ImmHatName immunix.com
</Directory>

Ejemplo:  En el siguiente ejemplo se utiliza el programa phpsysinfo para ilustrar el uso de una directiva de ubicación. Se puede descargar el archivo Tarball de http://phpsysinfo.sourceforge.com.

  1. Tras descargar el archivo Tarball, instálelo en /srv/www/htdocs/sysinfo/

  2. Cree el archivo /etc/apache2/conf.d/sysinfo.conf y añádale el siguiente texto:

    <Location "/sysinfo">
              ImmHatName sysinfo
    </Location>

    El siguiente hat deberá funcionar ahora para phpsyinfo:

       ^sysinfo {
      #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,
      }
    
  3. Vuelva a cargar los perfiles de Novell AppArmor introduciendo el comando rcapparmor restart en una ventana de terminal como usuario Root.

  4. Reinicie Apache introduciendo el comando rcapache2 restart en una ventana de terminal tras iniciar sesión como usuario Root.

  5. Escriba la dirección http://hostname/sysinfo/ en un navegador para obtener la información del sistema que ofrece phpsysinfo.

  6. Realice un seguimiento de los errores de configuración. Para ello diríjase a /var/log/syslog o ejecute el comando dmesg y busque en el resultado cualquier rechazo que se haya producido.