Proteger directorios con .htaccess en Apache

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.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s