Subido por Marcelo Leguiza

8.AUTENTICACION APACHE

Anuncio
4 Servicio HTTP
Caso práctico b
Autenticación HTTP básica en Apache2
Duración: 30 min. Dificultad: media
Objetivos
Configurar un directorio, servido por Apache2, con autenticación básica, es decir, mediante el uso de
credenciales.
Consideraciones
1. El servidor web Apache está instalado y configurado correctamente dentro del dominio
servidor.aulaSER.com.
2. El administrador ha creado un directorio dentro de /var/www llamado directorio_privado, que se
convierte en el objeto de la autenticación básica.
3. En el sistema existe tan solo el usuario alumno1, el único que podrá acceder al contenido de dicho
directorio.
4. Se supone que la red, con equipos Windows XP y Ubuntu GNU/Linux del aula, funciona
correctamente.
Autenticación HTTP básica
El módulo que controla este método de autenticación es mod_auth_basic. La operación se lleva a cabo
mediante el método de codificación Base64 (no encriptación) que permite obtener la contraseña de
cualquier usuario con Perl y haciendo uso de la función decode_base64.
En el archivo /etc/apache2/sites-available/default o en el archivo relativo al host virtual
correspondiente, habrá que añadir un bloque <Directory>...</Directory> por cada directorio que
se quiera proteger:
<Directory "/var/www/directorio_privado">
AuthType Basic
AuthName "Directorio privado"
AuthUserFile /etc/apache2/passwd/.htpasswd
Require valid-user
</Directory>
Donde:
Directory: indica que las directivas siguientes actúan sobre el directorio /var/www/privado y sus
subdirectorios, de ahí que estén protegidos.
AuthName: nombre del dominio de autenticación. Define el conjunto de recursos que estarán sujetos a
los mismos requisitos. También es el texto que aparecerá en la ventana que solicita el nombre del usuario
y la clave correspondiente e indica el nombre del dominio de autenticación (realm). El navegador web lo
utiliza para determinar qué contraseña se envía para un dominio de autenticación dado.
Servicios en red
1-4
4 Servicio HTTP
AuthType: tipo de autenticación.
Basic: la contraseña se negocia sin encriptar.
Digest: la contraseña se negocia encriptada.
• AuthUserFile: archivo de texto que contiene los nombres de usuario y las contraseñas usadas en
la autenticación HTTP básica. Se suele llamar .htpasswd. Previamente hay que crear el directorio
/etc/apache2/passwd.
• AuthGroupFile: ubicación del archivo de texto que contendrá los nombres de los grupos y los
usuarios asociados a ellos usados en la autenticación HTTP básica. Se suele llamar .htgroup.
• AuthAuthoritative: toma los valores on (por defecto) y off. En el caso de que se utilicen varios
métodos de autenticación en un mismo directorio y falle el primero, permite que se pase al segundo.
• Require: se aplica a los usuarios que tienen acceso a los recursos especificados. Existen varias
opciones disponibles:
– valid-user: cualquier usuario incluido en el archivo de contraseñas .htpasswd.
– user <lista de usuarios>: lista de usuarios de .htpasswd a los que se permite el acceso.
Al especificar sus nombres, deben aparecer separados por un espacio. Si se incluye esta opción,
habrá que incluir también la directiva AuthUserFile para indicar dónde se encuentra el archivo con
la definición de los usuarios usados en la autenticación HTTP básica.
– group <lista de grupos>: lista de los grupos a los que se permite el acceso. Al igual que en
el caso anterior, los nombres deben aparecer separados por un espacio. En estos casos hay que
incluir también la directiva AuthGroupFile para indicar dónde se encuentra el archivo en el que
figura la definición de los grupos empleados en la autenticación HTTP básica.
• Satisfy: al utilizar esta directiva, se determina si se deben cumplir todos los requisitos (all) o
cualquiera (any).
Tareas a realizar
1. Creación de un usuario
Para empezar, se utilizará la orden htpasswd de la forma siguiente:
$ sudo su
# htpasswd -c /etc/apache2/passwd/.htpasswd
nombre_usuario
La opción -c permite crear el archivo .htpasswd con el primer usuario dado de alta, que no tiene por
qué existir antes en el sistema.
A la hora de conceder permisos al archivo .htpasswd, habrá que especificar la clave 644 (lectura y
escritura para el dueño, y root y lectura para el grupo y los demás usuarios).
En el caso de que se desee dar de alta a otros usuarios, no es preciso incluir en cada ocasión el
argumento -c.
2. Creación de un grupo
Para crear grupos primero hay que crear el archivo de texto /etc/apache2/passwd/.htgroup con el
formato para cada línea:
nombreGrupo: user1 user2 user3 …
Servicios en red
2-4
4 Servicio HTTP
La directiva AuthGroupFile indica la ruta completa donde se encuentra el archivo que hemos creado con
la definición de los grupos.
AuthGroupFile /etc/apache2/passwd/.htgroup
Cada usuario del grupo lo añadiremos al archivo de contraseñas según el paso 1.
También se puede indicar cualquier usuario, siempre que esté en el archivo de contraseñas, utilizando la
directiva Require:
Require valid-user
3. Creación del sitio directorio_privado restringido a alumno1
La operación consta de los pasos siguientes:
Se crea directorio_privado con acceso restringido al usuario alumno1.
# mkdir /var/www/directorio_privado
A continuación, se copia una página web sencilla identificada con index.html.
Se genera un directorio para almacenar las contraseñas en el caso de que no exista ninguno:
# mkdir /etc/apache2/passwd
Se da de alta al usuario alumno1 en el archivo de contraseñas:
# htpasswd -c /etc/apache2/passwd/.htpasswd
alumno1
New password:XXXXXX
Re-type new password:XXXXXX
Adding password for user alumno1
Por último, se comprueba que se ha dado de alta el usuario alumno1 en .htpasswd:
# more /etc/apache2/passwd/.htpasswd
alumno1:Uc2mbt97WwWCE
4. Establecer dos formas diferentes de autenticación
• Para hacerlo de manera global, basta con utilizar el archivo de configuración
/etc/apache2/sites-available/default, en el que debería añadirse un bloque
<Directory>...</Directory> para el directorio que queremos proteger:
Alias /privado
/var/www/directorio_privado
<Directory "/var/www/directorio_privado">
AuthType Basic
AuthName "Directorio privado"
AuthUserFile /etc/apache2/passwd/.htpasswd
Require user alumno1
</Directory>
No obstante, es preciso tener en cuenta que se debe forzar a Apache2 a que lea sus archivos de
configuración con force-reload. A continuación, probamos la configuración desde el navegador
(http://servidor.aulaSER.com/directorio_privado/) y visualizamos el contenido del archivo
index.html creado en dicho directorio.
Servicios en red
3-4
4 Servicio HTTP
• Para realizar la autenticación utilizando los archivos .htaccess las directivas incluidas en el archivo
se aplicarán solo al directorio que lo contiene así como a los respectivos subdirectorios.
Los archivos .htaccess se leen cada vez que se solicitan páginas. No hay que reiniciar el servidor
web para que se activen los cambios realizados.
Creamos en /var/www/directorio_privado/ el archivo .htaccess con el contenido siguiente:
# gedit /var/www/directorio_privado/.htaccess
AuthType Basic
AuthName "Directorio privado"
AuthUserFile /etc/apache2/passwd/.htpasswd
Require user alumno1
Ahora habría que comentar en /etc/apache2/sites-available/default el grupo de directivas
que se encargan de la autenticación global así como incluir un grupo <Directory></Directory>
con la directiva AllowOverride que habilita la utilización de archivos .htaccess con autenticación:
Alias /privado
/var/www/directorio_privado
<Directory "/var/www/directorio_privado">
AllowOverride AuthConfig
</Directory>
Probamos la configuración desde el navegador mediante .htaccess.
Por último, nos dirigimos a la URL http://servidor.aulaSER.com/directorio_privado/. Se abrirá una
ventana que solicita la identificación del usuario.
Servicios en red
4-4
Descargar