17.15. Otro ejemplo: Utilizando MAC para confinar un servidor web

Una locación separada para los datos de web a los cuales los usuarios deben ser capaces de accesar será seleccionada. Esto permitirá a los procesos biba/high derechos de acceso a los datos web.

Inicie creando un directorio para guardar los datos de web:

# mkdir /usr/home/cvs

Ahora inicialicelo con cvs:

# cvs -d /usr/home/cvs init

El primer objetivo es habilitar la política biba, así mac_biba_enable="YES" debe ser colocado en /boot/loader.conf. Se asume que el soporte para MAC ha sido habilitado en el kernel.

De este punto en adelante todo en el sistema debe configurarse a biba/high por omisión.

La siguiente modificación debe ser hecha al archivo login.conf, bajo la clase de usuario por omisión:

:ignoretime@:\
    :umask=022:\
    :label=biba/high:

Cada usuario debe ser ahora colocado en la clase por omisión; un comando como:

# for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \
    /etc/passwd`; do pw usermod $x -L default; done;

logrará esta tarea en unos cuantos momentos.

Ahora hay que crear otra clase, web, una copia de la clase por omisión, con la configuración de etiqueta biba/low.

Agregue un usuario que será utilizado para trabajar con los datos principales de web guardados en un repositorio cvs. Este usuario debe ser colocado en nuestra nueva clase de login, web.

Ya que en todos lados por omisión es biba/high, el repositorio será el mismo. Los datos de web también deben ser lo mismo para usuarios que tienen acceso de lectura/escritura. de todas maneras, ya que nuestro servidor de web estará sirviendo datos que usuarios biba/high deben accesar, necesitaremos rebajar los datos como un todo.

Las herramientas perfectas para esto son sh(1) y cron(8) y ya están en FreeBSD. El siguiente script debe hacer todo lo que queremos:

PATH=/bin:/usr/bin:/usr/local/bin; export PATH;
CVSROOT=/home/repo; export CVSROOT;
cd /home/web;
cvs -qR checkout -P htdocs;
exit;

Nota: En muchos casos los Id tags de cvs deben ser colocados dentro de los archivos de datos del sitio web.

Este script puede ahora ser colocado en el directorio home de web y la siguiente entrada agregada a crontab(1):

# Descargar los datos de web como biba/low cada doce horas:
0       */12       *       *       *       web    /home/web/checkout.sh

Esto descargará las fuentes HTML cada doce horas en la máquina.

El método de arranque por omisión para el servidor de web debe ser modificado también para iniciar los procesos como biba/low. Esto puede realizarse haciendo la siguiente modificación al script /usr/local/etc/rc.d/apache.sh:

command="setpmac biba/low /usr/local/sbin/httpd"

La configuraci6oacute:n de Apache debe ser alterada para trabajar con la política biba/low. En este caso el software debe ser configurado para agregar a los archivos de log en un directorio configurado como biba/low o de lo contrario errores de “access denied” serán retornados.

Nota: Siguiendo este ejemplo requiere que la directiva docroot sea puesta a /home/web/htdocs; de otra manera, Apache fallará al tratar de localizar el directorio desde donde servir documentos.

Otras variables de configuración deben ser también alteradas, incluyendo el PID de archivo, Scoreboardfile, DocumentRoot, sitio del archivo de log o cualquier otra variable que requiera acceso de escritura. Al utilizar biba, todos los accesos de escritura serán negados al servidor en áreas no puestas a biba/low.

Éste y otros documentos pueden obtenerse en ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para preguntas acerca de FreeBSD, leer la documentación antes de contactar con la lista <questions@FreeBSD.org>.
Para preguntas acerca de esta documentación, e-mail a <doc@FreeBSD.org>.