Este documento describe los pasos realizados en una práctica sobre configuración de autenticación en un servidor Apache. Se enumeran las directivas de autenticación y control de acceso por IP. Luego, se deniega el acceso a una máquina cliente y se habilita la autenticación Digest por usuario y grupo mediante ficheros de cuentas. Finalmente, se explican los códigos de error 401 y 403.
TALLER -SISTEMA CODIGOS DE LUZ - ACCTIVACION DE CODIGOS LEMURIANOS Y ATLANTES
Autenticación y control de acceso Apache
1. IES Gran Capitán
Módulo: Despliegue de Aplicaciones Web
Ciclo Formativo de Grado Superior “Desarrollo de aplicaciones Web”
Práctica 5: Servidores web con autenticación
Fecha entrega: 4/11/2013
Autores: Pablo Medina Suárez
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://informatica.iesgrancapitan.org informatica@iesgrancapitan.org
2. Práctica 5: Servidor web con autenticación
2
1 ÍNDICE
1
ÍNDICE
2
2
INTRODUCCIÓN
3
3
DESARROLLO DE LA PRÁCTICA
4
3.1
3.2
3.3
3.4
ENUMERA LAS DIRECTIVAS DE AUTENTICACIÓN.
4
ENUMERA LAS DIRECTIVAS PARA EL CONTROL DE ACCESO POR IPS.
4
INDICA EL SERVIDOR WEB QUE VAS A UTILIZAR (IP Y NOMBRE) Y EL CLIENTE (IP Y/O NOMBRE) 5
DENEGAR ACCESO POR IP A UNA DE TUS MÁQUINAS CLIENTES. DEBES PROBAR QUE EL CLIENTE
INICIALMENTE TENGA ACCESO Y LUEGO DENEGÁRSELO.
5
3.5 AUTENTIFICACIÓN DIGEST POR USUARIO (MEDIANTE UN FICHERO DE CUENTAS DE USUARIO). 7
3.5.1 AUTENTICACIÓN DE UN USUARIO CONCRETO.
8
3.5.2 AUTENTICACIÓN DE UN GRUPO (LLÁMALO GRUPO[TUAPELLIDO])
9
3.6 ¿QUÉ INDICA EL CÓDIGO DE ESTADO 401 QUE DEVUELVE EL NAVEGADOR? ¿Y EL 403? ¿CUÁL Y
CUÁNDO TE HA APARECIDO?
10
4
BIBLIOGRAFIA
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
12
3. Práctica 5: Servidor web con autenticación
2
3
INTRODUCCIÓN
- Objetivo:
Restringir el acceso a algunos recursos (páginas). Con Apache podemos establecer
mecanismos de usuario y contraseña, para limitar el acceso. Incluso los usuarios pueden
incluirse en grupos y establecer los permisos de acceso a nivel de grupo lo cual puede resultar
más cómodo.
¡PERO CUIDADO! la transmisión de información tiene una encriptación muy débil.
Aunque en esta primera práctica sobre permisos de acceso aún no lo vamos a aplicar, ten en
cuenta que no deberías estar pasando password si no utilizas también SSL. Cualquier sniffer
podrá fácilmente robarte las contraseñas! Lo veremos en la siguiente práctica.
También hay que tener en cuenta que Apache permite otros métodos más sofisticados
de autenticación como son: guardar la contraseña en bases de datos (tipo DB y DBM), en
un directorio LDAP e incluso en bases de datos relacionales como MySQL.
- Procedimiento:
Leer el capítulo 5 de la "Guía de supervivencia Apache"
Leer el capítulo "Más Opciones" del Curso de Víctor Fuster.
Aplicar mecanismos de control de acceso sobre alguno de los servidores Web virtuales
creados en prácticas anteriores.
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
4. Práctica 5: Servidor web con autenticación
4
3 DESARROLLO DE LA PRÁCTICA
3.1
Enumera las Directivas de Autenticación.
En Apache existen las siguientes directivas utilizadas para la configuración de
autenticación:
3.2
AuthType: establece el tipo de autenticación de usuario que se utilizará. Puede
tomar los valores Basic y Digest. También se puede guardar la contraseña en
bases de datos, un directorio LDAP e incluso en BBDD relacionales, como
MySQL.
AuthName: establece el nombre para la parte del sitio que estamos
protegiendo.
AuthUserFile: establece el fichero del servidor que guarda la información de
los usuarios y sus correspondientes contraseñas encriptadas. Utilizado para
autenticación básica.
AuthDigestFile: establece el fichero del servidor que guarda la información de
usuarios y sus digest. Utilizado para la autenticación de tipo Digest.
AuthGroupFile: establece el fichero del servidor que guarda la información de
grupos de usuarios. Utilizado para autenticación básica de grupos de usuarios.
Require: permite establecer qué usuarios podrán acceder al recurso protegido.
Puede tomar los valores:
User. Debe añadirse una lista separada por espacios con los nombres de
los usuarios autorizados.
Group. Debe añadirse una lista separada por espacios con los nombres
de los grupos autorizados.
Valid-user.
Cualquier combinación de ellos.
AccessFileName: permite establecer el nombre para los ficheros de
configuración distribuidos.
AllowOverride: permite establecer qué directivas están permitidas en los
ficheros de configuración distribuidos. Puede tomar los valores:
AuthConfig.
FileInfo.
Indexes.
Limit.
Options.
Enumera las Directivas para el control de acceso por IPs.
Allow: controla qué clientes pueden acceder al recurso protegido, esto puede
hacerse con la dirección IP, una subred, o nombres de dominios.
Deny: controla qué clientes no pueden acceder al recurso protegido. Funciona
de igual manera que Allow, sólo que deniega el acceso.
Order: establece el orden en el que se aplican las dos directivas anteriores.
Puede tomar los siguientes valores (sin espacios entre las comas):
Deny,Allow: primero deniega, después permite.
Allow,Deny: permite, luego deniega.
Mutual-Failure: tiene el mismo efecto que Allow,Deny. Actualmente,
se encuentra en desuso.
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
5. Práctica 5: Servidor web con autenticación
3.3
5
Indica el servidor web que vas a utilizar (IP y nombre) y el cliente (IP
y/o nombre)
Contamos con estas dos máquinas virtuales:
3.4
Servidor:
Cliente:
IP: 192.168.115. 99/192.168.115.100
IP: 192.168.115.105
Nombre: desplapwserver
Denegar acceso por IP a una de tus máquinas clientes. Debes probar
que el cliente inicialmente tenga acceso y luego denegárselo.
En primer lugar, voy a crear un sitio específico para la realización de ésta práctica,
siguiendo los pasos que ya se han seguido anteriormente, por lo que no los voy a adjuntar. El
resultado es que tendremos un sitio denominado practica5 con el siguiente aspecto:
Y el archivo de configuración (aún por defecto), tiene el siguiente aspecto:
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
6. Práctica 5: Servidor web con autenticación
6
Vamos a comprobar primero si tenemos acceso desde nuestra máquina cliente, por lo
que abrimos el navegador e introducimos la dirección correspondiente:
Como se ve, tenemos acceso incluso al directorio supuestamente “privado”, algo que no
queremos. Por lo que voy a configurarlo de forma que la máquina cliente no tenga acceso a
dicho sitio:
Se reinicia el servidor y probamos el acceso desde la máquina cliente:
Ahora el cliente ya no tiene acceso a este directorio, y recibe un error 403.
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
7. Práctica 5: Servidor web con autenticación
3.5
7
Autentificación Digest por usuario (mediante un fichero de cuentas
de usuario).
Para habilitar la autentificación Digest en el directorio privado, tenemos que hacer los
siguientes cambios en el archivo del sitio:
Las líneas introducidas cargan el módulo de autentificación Digest y obligan a cualquier
usuario a identificarse al acceder al directorio /privado, y la información introducida será
contrastada con la del archivo que crearemos en /var/www/users, con el nombre del entorno
protegido especificado en AuthName, en el siguiente paso. Si la información introducida es
válida, podrá acceder, sin importar el usuario que sea (Require valid-user).
Para la gestión de usuarios, tenemos que hacer uso de htdigest, introduciendo los
siguientes comandos en un terminal:
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
8. Práctica 5: Servidor web con autenticación
8
Lo que hemos hecho es crear (usando –c) un archivo users que responde al entorno
privado. En dicho archivo se crea el usuario pabloms con la contraseña introducida.
Vamos a crear otro usuario, usuario1, que también tendrá acceso:
Ahora reiniciamos el servidor y comprobamos si los cambios realizados funcionan
correctamente, por lo que accedemos con la máquina cliente:
Si nos identificamos con información válida (alguno de los usuarios que hemos creado
antes), se accede correctamente al sitio privado. En caso contrario, o si cancelamos la operación,
nos aparece la siguiente página, recibiendo el error 401:
Con esto, ya tenemos controlado el sitio mediante autentificación Digest.
3.5.1 Autenticación de un usuario concreto.
En el paso anterior, se han creado dos usuarios, y si el usuario se identificaba con
alguno de los dos podía acceder al sitio privado. Esto es debido a la directiva Require validuser.
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
9. Práctica 5: Servidor web con autenticación
9
Para restringir el acceso para que sólo un usuario concreto pueda tener acceso, debemos
usar la directiva Require user nombreusuario:
Ahora sólo podrá acceder pabloms, si probamos con usuario1, se nos repite la petición
hasta que cancelemos la introducción o usemos el usuario requerido.
3.5.2 Autenticación de un grupo (llámalo grupo[tuapellido])
Con la directiva Require también podemos restringir el acceso sólo a los usuarios que
pertenezcan a un grupo concreto, usando Require group nombregrupo.
Para configurar el acceso a privado utilizando grupos, se realizan los siguientes cambios
en su archivo de configuración:
Se buscarán los usuarios pertenecientes al grupo medinasuarez en el archivo
/var/www/groups, el cual contiene la siguiente información:
Si el usuario introducido tiene una entrada en el archivo indicado en AuthUserFile y
pertenece al grupo indicado en el archivo AuthGroupFile, se permitirá el acceso al sitio.
Si nos identificamos con cualquiera de los dos usuarios podremos acceder, pues ambos
pertenecen al grupo.
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
10. Práctica 5: Servidor web con autenticación
10
Si cambiamos el archivo y eliminamos usuario1:
Al intentar acceder sólo podemos identificarnos como pabloms para tener acceso.
En caso de crear un nuevo usuario, si queremos que tenga acceso tendremos que
modificar el archivo groups.
Con esto ya tenemos configurado el acceso por grupos de usuarios.
3.6
¿Qué indica el código de estado 401 que devuelve el navegador? ¿Y
el 403? ¿Cuál y cuándo te ha aparecido?
Se recibe el error 401 cuando falla la autorización del acceso al sitio restringido:
También podemos ver el código de error si echamos un vistazo a los archivos de log:
El error 403 se recibe cuando el acceso al recurso es denegado, como ocurre cuando
negamos el acceso a una IP concreta:
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
11. Práctica 5: Servidor web con autenticación
11
Podemos verlo desde los archivos de log de la misma manera:
También podemos recibir el error 404 cuando no se encuentra un documento, pero este
error ya lo hemos tratado anteriormente.
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
12. Práctica 5: Servidor web con autenticación
4 BIBLIOGRAFIA
Guía de Supervivencia Apache.
Consultado en: http://moodle.iesgrancapitan.org/mod/resource/view.php?id=5575
Curso Apache 2.0, por Víctor Fuster
Consultado en: http://moodle.iesgrancapitan.org/mod/resource/view.php?id=5180
Documentación oficial de Apache. Módulo auth_digest
Consultado en: http://httpd.apache.org/docs/2.4/mod/mod_auth_digest.html
Documentación oficial de Apache. Autentificación
Consultado en: http://httpd.apache.org/docs/2.4/howto/auth.html
IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba.
http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
12