Continuando con el post sobre cómo instalar el servidor web Apache en Ubuntu, podría suponer que ahora me interesa proteger un directorio de mis archivos públicos. Para ello voy a recurrir a la creación de unos archivos de control que se encontrarán en el directorio a proteger y que verificarán las credenciales del usuario o usuarios que nosotros definamos.
En primer lugar, voy a crear una nueva carpeta vacía en el directorio del servidor que se llamará “privado”:
$ sudo mkdir /var/www/privado
Dentro de ella voy a copiar un archivo que he creado de prueba en mi home:
$ sudo cp $HOME/archivo_prueba.html /var/www/privado/
El contenido puede ser, por ejemplo:
<html>
<head>
<title>Prueba</title>
</head>
<body>Hola, mundo!</body>
</html>
En esta carpeta privada tengo que crear también el archivo llamado “.htaccess” (ojo al punto para que quede oculto) con el siguiente contenido:
AuthUserFile /var/www/privado/.usuarios
AuthName carpeta_privada
AuthType Basic
require valid-user
<files "archivo_prueba.html">
require valid-user
</files>
Veamos el .htaccess con más detalle:
AuthUserFile /var/www/privado/.usuarios
Aquí, el servidor Apache consultará un fichero llamado .usuarios (puedes utilizar el nombre que quieras; yo recomiendo cambiarlo y convencionalmente se denomina .htpasswd) donde se almacenan los nombres de usuario y las contraseñas encriptadas (más adelante se detalla el contenido de este archivo).
AuthName carpeta_privada
AuthType Basic
De estas dos lineas, la primera es la que muestra el mensaje con el que se indica a dónde se accede y la segunda que el tipo de autenticación es “básico”:
También se exige que el usuario sea un usuario válido:
require valid-user
Y finalmente restringimos un archivo (en este caso “archivo_prueba.html”) a usuarios válidos.
<files "archivo_prueba.html">
require valid-user
</files>
Como es probable que no queramos que nuestro archivo “.htaccess” ni tampoco el “.usuarios” sean visibles, añadiremos la directiva siguiente:
IndexIgnore .usuarios
IndexIgnore .htaccess
De esta forma nuestro “.htaccess” queda completo tal y como se puede ver a continuación:
AuthUserFile /var/www/privado/.usuarios
AuthName carpeta_privada
AuthType Basic
require valid-user
IndexIgnore .usuarios
IndexIgnore .htaccess
<files "archivo_prueba.html">
require valid-user
</files>
Ahora me ocuparé del contenido del fichero .usuarios. En el, los usuarios se guardan como texto plano, seguidos de el símbolo dos puntos y su contraseña encriptada. Puedes encontrar muchas páginas web para encriptar contraseñas de forma sencilla, como por ejemplo la de U-Net. Por cada linea del fichero se almacena un usuario. En nuestro archivo solo existe una línea con un usuario de prueba:
u_prueba:TXzy66Lhrey4A
Este fichero puede encontrarse en otro directorio y llamarse como tu quieras, pero en el .htaccess debes especificar la ruta absoluta hacia él.