Despliegue de Aplicaciones Web (2º DAW)
Prácticas 1ª Evaluación: Control de acceso, autenticación y autorización.
ACTIVIDAD 1. MÓDULO userdir
1. Comprueba, consultando el directorio /etc/apache2/mods-enabled que el módulo userdir no está
habilitado. Adjunta una captura.
2. Habilita el módulo ejecutando el comando sudo a2enmod userdir . Adjunta una captura.
3. Comprueba que el directorio /etc/apache2/mods-enabled se han creado enlaces simbólicos del
módulo userdir (ficheros .load y .conf ) hacia /etc/apache2/mods-available .
4. Reinicia el servidor para que los cambios tengan efecto.
5. Consulta el fichero /etc/apache2/mods-enabled/[Link] . Observa que está habilitado el uso
de directorios personales para todos los usuarios excepto para el usuario root y que public_html es
el nombre del subdirectorio que pueden crear los usuarios en su directorio home para poner sus
páginas personales. Adjunta un pantallazo señalando dónde está esta información.
Despliegue de Aplicaciones Web (2º DAW)
2
6. Crea el usuario bloguero. Inicia sesión con ese usario
7. Crea el directorio /home/bloguero/public_html
8. Dentro del directorio crea un fichero denominado [Link] con el contenido que quieras .
9. Al entrar via navegador en localhost/~bloguero debe mostrarse el listado de todos los archivos
del directorio
9. ¿Dónde tendríamos que tocar para que el acceso anterior estuviera prohibido?
Desde el usuario despliegue
Despliegue de Aplicaciones Web (2º DAW)
3
(prohibición para listar directorios)
10. Deshabilita el módulo ejecutando el comando sudo a2dismod userdir . 10. Por último, reinicia el
servidor para que los cambios tengan efecto.
AUTENTICACION
Objetivos
1. Conocer el funcionamiento de las directivas allow y deny para configurar
Apache para que sólo pueda accederse desde ciertos equipos.
2. Conocer los distintos tipos de autenticación y aplicar los tipos basic y digest en
Apache.
1 . Control de acceso.
El control de acceso consiste en prohibir a ciertos equipos poder acceder a determinados recursos
del servidor. En Apache, esto se establece en la directiva <Directory> junto con las directivas allow
from y deny from junto con la IP o el FQDN de la máquina a la que deseamos permitir o denegar el
acceso al recurso.
• Order allow,deny : indica que el acceso está denegado por defecto. Las
directivas allow se evalúan antes que las directivas deny . Cualquier cliente que no "case" con una
directiva allow o deny tendrá denegado el acceso. Si el cliente casa al mismo tiempo en una
directiva allow y otra deny , tendrá denegado el acceso porque las directivas deny se evalúan en
último lugar.
• Order deny,allow : indica que el acceso está permitido por defecto. Las
directivas deny se evalúan antes que las directivas allow . Cualquier cliente que no "case" con una
directiva deny o allow tendrá permitido el acceso. Si el cliente casa al mismo tiempo en una
Despliegue de Aplicaciones Web (2º DAW)
4
directiva allow y otra deny , tendrá permitido el acceso porque las directivas allow se evalúan en
último lugar.
Veamos algunos ejemplos:
Ejemplo 1
Order deny,allow Acceso permitido por defecto. deny from all Se deniegan todos los
equipos.
allow from [Link] Se permite el acceso a los equipos del dominio [Link] . Resultado: sólo los
equipos de *.[Link] son permitidos.
Ejemplo 2
Order allow,deny Acceso denegado por defecto.
allow from [Link] Se permite el acceso a los equipos del dominio [Link] .
deny from [Link] Se deniega el acceso a los equipos del dominio [Link] .
Resultado: se permite el acceso a todos los equipos de *.[Link] excepto a los de *.[Link] .
ACTIVIDAD 2 : CONTROL DEL ACCESO AL SERVIDOR
Indica los resultados de las siguientes configuraciones:
Configuración 1
Order allow,deny
allow from [Link]/24 deny from [Link]
Resultado:El equipo con ip [Link]/24 y no tenga el dominio [Link]
pueden acceder
Configuración 2
Order allow,deny
allow from [Link]/16 deny from all
Resultado: Aunque permite acceder a una IP en concreto no puede acceder nadie
debido a la segunda condición
Para introducir el concepto de control de acceso por IP o por nombre de dominio vamos a crear un
directorio /var/www/profesor y vamos a configurar Apache para que sólo se pueda acceder desde el
equipo local y no desde el Server.
CONTROL DE ACCESO MEDIANTE IP
1. Inicia sesión en ServerUbuntu con un usuario con privilegios de administrador.
Despliegue de Aplicaciones Web (2º DAW)
5
2. Crea el directorio /var/www/profesor . Dentro, crea un archivo llamado [Link] con el
contenido que quieras.
3. Edita el archivo de configuración /etc/apache2/sites-available/default . Utilizaremos la directiva
<Directory> junto con las directivas Order , Allow y Deny para denegar el acceso al directorio a
todos los equipos excepto al local
4. Reinicia el servidor para que los cambios tengan efecto.
5. Comprueba que se puede acceder a [Link] de ServerUbuntu>/profesor y NO a
[Link] desde EL HOST.
ACTIVIDAD 3 : PROHIBIR EL ACCESO AL SERVIDOR
Despliegue de Aplicaciones Web (2º DAW)
6
1. Establece el fichero [Link] como el que se servirá por defecto cuando se acceda al
directorio profesor . Explica cómo lo haces y adjunta un pantallazo donde se pueda apreciar que
funciona.
2. Modifica el archivo /etc/apache2/sites-available/default de forma que prohíbas que nos podamos
conectar al servidor desde la máquina HOST. Explica cómo lo haces y adjunta un pantallazo donde
se pueda apreciar que, efectivamente, no podemos. ¿Qué código de error devuelve el servidor?
2 . Autenticación y autorización Basic y Digest .
Autenticación y autorización son términos distintos. La autenticación es el proceso de verificar que
alguien es realmente quien dice ser, mientras que la autorización es el proceso por el que se permite
a alguien hacer o acceder a algo que quiere.
Hay varios tipos de autenticación:
• Basic: la lleva a cabo el módulo mod_auth_basic . • Digest: la lleva a cabo el módulo
mod_auth_digest . • Mediante formularios HTML+JavaScript
• Mediante certificados digitales, llevada a cabo por el módulo mod_ssl .
Nos vamos a centrar en la dos primeras. En la autenticación basic la contraseña es enviada por el
cliente en texto plano, mientras que en la autenticación digest se envía cifrada (con cifrado débil)
por el cliente.
ACTIVIDAD 4: AUTENTICACIÓN HTTP BASIC
Vamos a configurar en Apache bajo Ubuntu la autenticación HTTP Basic sobre el directorio
/var/www/profesor para que sólo puedan acceder los usuarios profesor1 y profesor2 .
1. Inicia sesión en ServerUbuntu con un usuario con privilegios de administrador. 2. Comprueba,
consultando el directorio /etc/apache2/mods-enabled que el
módulo auth_basic está habilitado. Adjunta un pantallazo.
Despliegue de Aplicaciones Web (2º DAW)
7
3. Para poder usar la autenticación basic tenemos que crearnos un fichero accesible por Apache en
el que se guarden los usuarios y sus contraseñas. Para crear este fichero usaremos el comando
htpasswd de la siguiente forma: a. Creamos el fichero y añadimos el usuario profesor1 con sudo
htpasswd -c /etc/apache2/passwd profesor1 (la opción -c es para crear el archivo passwd ). Pedirá
contraseña para el usuario profesor1 . b. Añadimos el usuario profesor2 con sudo htpasswd
/etc/apache2/passwd profesor2 . Pedirá contraseña para el usuario profesor2 .
4. Edita el fichero de configuración /etc/apache2/sites-available/default y permite el acceso al
directorio /var/www/profesor a los usuarios profesor1 y profesor2 , tal y como se puede ver en la
imagen.
5. Reinicia el servidor para que los cambios surtan efecto.
Accede con los usuarios profesor1 y profesor2. Inténtalo con otro usuario. ¿Es posible? ¿Qué error
aparece? Haz otro pantallazo donde se aprecie esto último.
No he conseguido que me de error
Despliegue de Aplicaciones Web (2º DAW)
8
ACTIVIDAD 5: AUTENTICACIÓN HTTP DIGEST
Vamos a configurar la autenticación digest sobre el directorio
/var/www/departamento para que sólo puedan acceder los usuarios admin1 y admin2 .
1. Crea el directorio /var/www/departamento . Dentro, crea un fichero
[Link] con el contenido que quieras.
2. El módulo auth_digest no está habilitado por defecto (puedes comprobarlo).
Despliegue de Aplicaciones Web (2º DAW)
9
Para habilitarlo, tecleamos sudo a2enmod auth_digest . 3. Reinicia el servidor para que los cambios
tengan efecto.
4. Para usar la autenticación digest hay que crear un fichero accesible por Apache en el que se
guardarán los usuarios y sus contraseñas asociados a un dominio ( realm ). Para crear este fichero
usaremos el comando htdigest de la siguiente forma:
a. Crear el fichero y añadir el usuario admin1 al dominio informatica con sudo htdigest -c
/etc/apache2/digest informatica admin1 (la opción -c es para crear el archivo).
b. Añadir el usuario admin2 con sudo htdigest /etc/apache2/digest
informatica admin2 .
5. Edita el fichero de configuración /etc/apache2/sites-available/default y permite el acceso al
directorio /var/www/departamento a los usuarios admin1 y admin2 , según puedes ver en la figura.
Despliegue de Aplicaciones Web (2º DAW)
10
7. Reinicia el servidor para que los cambios surtan efecto.
FICHEROS .htaccess
Objetivos
Crear configuraciones personalizadas para directorios haciendo uso de los ficheros de
configuración .htaccess .
1 . Ficheros .htaccess .
Un archivo .htaccess es un archivo que contiene directivas que Apache puede interpretar y aplicar al
directorio en el que se encuentra el archivo y los subdirectorios dentro de él. Lo general es que este
archivo se nombre como .htaccess dentro del servidor, aunque el nombre puede cambiarse mediante
la directiva AccessFileName .
Sin embargo los permisos de configuración dependen de los establecidos dentro del archivo de
configuración del sitio (archivo default ) mediante la directiva AllowOverride . Podemos permitir
todo, denegar todo o permitir sólo ciertas opciones:
<Directory …>
AllowOverride None # no permite ninguna directiva de .htaccess </Directory>
<Directory …>
AllowOverride All # permite las directivas de .htaccess </Directory>
Las directivas de .htaccess son aplicadas a los subdirectorios, pero si un directorio tiene otro archivo
de configuración (otro .htaccess ), éstas podrán sobrescribir las de la carpeta superior.
Se recomienda que el uso de archivos .htaccess sea exclusivo en casos donde no se tenga acceso al
archivo de configuración principal de Apache ( [Link] ), ya que es un riesgo de seguridad
tener archivos de configuración junto con las carpetas en las que navegan los usuarios dentro de
nuestro sitio.
Su uso es sencillo: basta crear un archivo con ese nombre, colocar las directivas dentro del mismo y
subirlo al servidor. Con eso, cada vez que Apache detecte la presencia de este archivo, ejecutará su
contenido.
Despliegue de Aplicaciones Web (2º DAW)
11
Dentro de un archivo .htaccess podemos incluir directivas de definición de intérpretes,
redireccionamientos, control de acceso de permisos, …, en definitiva, todo lo que incluíamos dentro
de la directiva <Directory> en el archivo default .
Los pasos para trabajar con ficheros .htaccess serán los siguientes:
1. Habilitar el uso de ficheros .htaccess para el directorio que nos interese en el
archivo de configuración default .
2. Crear el fichero .htaccess y añadirle las directivas necesarias.
ACTIVIDAD 6
Vamos a probar el funcionamiento de los ficheros .htaccess con un ejemplo. Los pasos que daremos
serán:
• Habilitar el uso de ficheros .htaccess en el directorio /home/profesor/blog
para que sea el propio usuario profesor el que pueda controlar cómo sirve Apache los contenidos de
ese directorio.
• Configurar un alias
/blog que permita acceder al directorio
/home/profesor/blog .
• Como usuario profesor, hacer uso del fichero .htaccess y hacer que:
Sólo se pueda acceder a /home/profesor/blog desde la máquina host.
o Autenticación digest para que sólo pueda acceder el usuario blog .
1. Inicia sesión en ServerUbuntu con un usuario con privilegios de administrador. 2. Crea el usuario
profesor. Adjunta un pantallazo donde se compruebe que dicho usuario ha sido creado.
Despliegue de Aplicaciones Web (2º DAW)
12
3. Edita el archivo de configuración /etc/apache2/sites-available/default . Crea el alias y habilita el
uso de ficheros .htaccess en el directorio /home/profesor/blog permitiendo sobrescribir todas las
directivas. Para ello elimina todas las directivas anteriores y añade la directiva AllowOverride All ,
como puedes ver en la figura.
4. Reinicia el servidor para que los cambios surtan efecto.
5. Inicia sesión como usuario profesor .
6. Crea el directorio blog dentro de /home/profesor y, dentro de él, un fichero
[Link] con el contenido que quieras.
Despliegue de Aplicaciones Web (2º DAW)
13
7. Vamos a hacer que el usuario blog sea el único que pueda acceder al directorio
/home/profesor/blog . Para ello usaremos el comando htdigest tal y como se vio en la práctica
anterior. Realiza una captura para comprobar que se ha creado el usuario usando el comando con las
opciones correctas.
8. A continuación, crea el fichero /home/profesor/blog/.htaccess y añade las directivas necesarias
según se explicó más arriba y según puedes ver en la siguiente figura.
9. Prueba, desde host, que es posible acceder a [Link] de ServerUbuntu>/blog introduciendo las
credenciales del usuario blog . Adjunta un pantallazo donde se pueda observar que todo funciona
bien.
_____________________________________________________________________
ACTIVIDAD RESUMEN:
Se pide en un servidor web Apache:
1. Configurar un servidor virtual de nombre [Link] que permita el acceso a la página web
de la empresa ( [Link] ) al directorio del servidor web /empresa . Por seguridad, no deseamos
que el servidor muestre el contenido de este directorio cuando no se proporcione el nombre de
ningún recurso.
Despliegue de Aplicaciones Web (2º DAW)
14
Despliegue de Aplicaciones Web (2º DAW)
15
2. Configurar un directorio virtual /images que apunte a un directorio de imágenes que tenemos en
la carpeta que se quiera del sistema. Por defecto se mostrará la página [Link] . En este caso sí se
permite el listado del directorio.
3. El servidor deberá la página [Link] cuando se produzca dicho error. 404.
Crear el subdirectorio /empresa/restringido teniendo en cuenta que:
a. El directorio /empresa permite el acceso a cualquier usuario.
b. El subdirectorio /empresa/restringido permite el acceso sólo al personal de la empresa con
autentication digest . En este caso, toda la información de configuración de este directorio se situará
en un archivo .htaccess .
• Para la solución de la práctica simular el sitio web con dos archivos HTML:
o Uno de nombre [Link] en el directorio /empresa que contenga el
texto "ACCESO NO RESTRINGIDO".
o Otro de nombre [Link] en el directorio /empresa/restringido que contenga el texto
"ACCESO RESTRINGIDO". En este caso, se aconseja probar primero sin crear el fichero .htaccess
y, si todo va bien, trasladar la configuración a dicho fichero.
• La entrega de cada apartado de la práctica consiste en:
Indicar el archivo a configurar junto con el código necesario para resolver la cuestión
correspondiente. Adjuntar los ficheros configurados.