Ejercicio: Autentificación básica

El servidor web Apache puede acompañarse de distintos módulos para proporcionar diferentes modelos de autenticación.

La primera forma que veremos es la más simple. Usamos para ello el módulo de autenticación básica que viene instalada “de serie” con cualquier Apache: mod_auth_basic. La configuración que tenemos que añadir en el fichero de definición del Virtual Host a proteger podría ser algo así:

<Directory "/var/www/miweb/privado">

     Order deny,allow

     AuthUserFile "/etc/apache2/claves/passwd.txt"

     AuthName "Palabra de paso"

     AuthType Basic

     Require valid-user

 </Directory>

El método de autentificación básica se indica en la directiva AuthType. La información a personalizar está marcada en negritas. En Directory escribimos el directorio a proteger, que puede ser el raíz de nuestro Virtual Host o un directorio interior a este. En AuthUserFile ponemos el fichero que guardará la información de usuarios y contraseñas que debería de estar, como en este ejemplo, en un directorio que no sea visitable desde nuestro Apache. Ahora comentaremos la forma de generarlo. Por último, en AuthName personalizamos el mensaje que aparecerá en la ventana del navegador que nos pedirá la contraseña.

Para controlar el control de acceso, es decir, que usuarios tienen permiso para obtener el recurso utilizamos las siguientes directivas: AuthGroupFile, Require user, Require group.

El fichero de contraseñas se genera mediante la utilidad htpasswd. Su sintaxis es bien sencilla. Para añadir un nuevo usuario al fichero operamos así:

# htpasswd /etc/apache2/claves/passwd.txt carolina

New password:

Re-type new password:

Adding password for user carolina

Para crear el fichero de contraseñas con la introducción del primer usuario tenemos que añadir la opción -c (create) al comando anterior. Si por error la seguimos usando al incorporar nuevos usuarios borraremos todos los anteriores, así que cuidado con esto. Las contraseñas, como podemos ver a continuación, no se guardan en claro. Lo que se almacena es el resultado de aplicar una función hash.

josemaria:rOUetcAKYaliE

carolina:hmO6V4bM8KLdw

alberto:9RjyKKYK.xyhk

Para denegar el acceso a algún usuario basta con que borremos la línea correspondiente al mismo. No es necesario que le pidamos a Apache que vuelva a leer su configuración (/etc/init.d/apache2 reload) cada vez que hagamos algún cambio en este fichero de contraseñas, pero si lo es después de hacer los cambios en el fichero de definición del Virtual Host.

 La principal ventaja de este método es su sencillez. Sus inconvenientes: lo incómodo de delegar la generación de nuevos usuarios en alguien que no sea un administrador de sistemas o de hacer un front-end para que sea el propio usuario quien cambie su contraseña. Y, por supuesto, que dichas contraseñas viajan en claro a través de la red. Si queremos evitar esto último podemos crear una instancia Apache con SSL.

Ejercicios

1) Crea cuatro  usuarios de apache: pepe, maria, juan, ana.

2) Crea dos grupos de usuarios: grupo1 (pepe,maria), grupo2 (juan,ana).

3) Crea un directorio llamado privado1 en el host virtual default, que permita el acceso a todos los usuarios.

4) Crea un directorio llamado privado2 en el host virtual default, que permita el acceso sólo a juan y a ana.

5) Crea un directorio llamado privado3 en el host virtual default, que permita el acceso sólo los usuarios del grupo1.

La directiva satisfy controla como el se debe comportar el servidor cuando tenemos autorizaciones a nives de host (order, allow, deny) y tenemos autorizaciones de usuarios (require).

6) El directorio privado3 del ejercicio5 haz que sólo sea accesible desde el localhost, y estudia como se comporta la autorización si ponemos:

satisfy any

satisfy all

Last modified: Monday, 17 October 2011, 3:15 PM