Proteger directorios con password y .htaccess

Si necesitas proteger un directorio con usuario y contraseña, una de las opciones es utilizar archivos .htaccess y .htpasswd.

.htaccess tiene muchos usos, como por ejemplo redirigir nuestras páginas web, restringir el acceso a un directorio, etc.

Información adicional

Puedes encontrar más detalles sobre los archivos .htaccess y algunos de sus usos en el artículo:
Utilizar las rewrite rules en .htaccess

El archivo .htpasswd guardará los nombres de usuario y contraseñas de cada restricción. Es importante tener en cuenta que el archivo .htaccess creado para restringir el acceso se ha de ubicar dentro del directorio que a proteger.

.htaccess de ejemplo

AuthUserFile /var/www/vhosts/dominio.com/private/.htpasswd

AuthName DirectorioProtegido

AuthType Basic

require user UsuarioDominio

El .htaccess anterior es un claro ejemplo de restricción. Vamos a revisar paso por paso las diferentes opciones indicadas:

AuthUserFile /var/www/vhosts/dominio.com/private/.htpasswd

En este punto se tiene que indicar la ruta absoluta del servidor hacia el archivo .htpasswd, que, como hemos comentado antes, es donde guardaremos los datos de acceso de los usuarios. Este archivo no se debería ubicar nunca dentro de la carpeta pública del dominio ( normalmente /httpdocs o /public_html ), ya que sería un grave fallo de seguridad que la gente puediese averiguar los datos de acceso de los usuarios.

Si por alguna razón no fuera posible ubicar el archivo .htpasswd fuera del contenido público, recomendamos que por lo menos se modifique el nombre, como por ejemplo .89lasa12, ya que sería más complicado para posibles usuarios no deseados averiguar qué nombre posee el fichero.

AuthName DirectorioProtegido

Cuando intentes acceder mediante tu navegador al directorio protegido, aparecerá una ventana para introducir usuario y contraseña, y un aviso de que estamos intentando acceder. Esta opción es configurable, tan solo tienes que modificar DirectorioProtegido por lo que quieras que se muestre en el cuadro emergente. En esta línea puedes especificar cualquier cosa ya que no tiene ningún efecto práctico, únicamente estético a la hora de acceder.

AuthType Basic

Opción que indica que el tipo de autentificación es básico.

require user UsuarioDominio

En esta línea se indica que únicamente el usuario UsuarioDominio puede acceder al directorio.

En el caso que quieras añadir usuarios adicionales, siempre es posible añadirlos como en el siguiente ejemplo:

require user UsuarioDominio UsuarioDominio2

Hay multitud de opciones en lo que respecta al control de accesos, de los cuales podríamos destacar el poder proteger ficheros como en el siguiente ejemplo:

AuthUserFile /var/www/vhosts/dominio.com/private/.htaccess

AuthName DirectorioProtegido

AuthType Basic

<Files "ficheroaproteger.php">

require user UsuarioDominio

<Files>

.htpasswd

El archivo .htpasswd es el que almacena los accesos de usuarios y contraseñas que quieras emplear para proteger los directorios o ficheros restringidos mediante el archivo .htaccess.

En los ejemplos siguientes nos referiremos a este fichero como .htpasswd, pero tal y como hemos indicado anteriormente, se le puede especificar el nombre que quieras.

Los datos se almacenan en el fichero .htpasswd con el formato usuario:contraseña y en diferentes líneas como por ejemplo:

UsuarioDominio:AQTm0UkcUgb1M

UsuarioDominio2:m1JcIlg0b23M

Como puedes ver, las contraseñas vienen encriptadas por defecto si se establece mediante el comando htpasswd por Apache. En el caso de disponer de un servidor Apache en el servidor, y accediendo mediante SSH, podrás ejecutar los comandos necesarios para añadir los usuarios al fichero .htpasswd.

Información adicional

Puedes encontrar más información sobre el acceso por SSH a tu servidor en el artículo:

Acceder por SSH a Linux

Una vez dentro, podrás ejecutar el comando de diferentes maneras, por si quieres que cree automáticamente el fichero, o que muestre por pantalla la información y para después introducirla en el fichero .htpasswd:

htpasswd -nb UsuarioDominio contraseña

Esta línea mostrará por pantalla la cadena que debes agregar manualmente a tu archivo .htpasswd.

htpasswd -cb .htpasswd UsuarioDominio contraseña

Esta línea, escribirá directamente en el archivo indicado ( en este caso .htpasswd, pero puedes especificar cualquier otro ).

Añadido el usuario en el archivo .htpasswd y habiendo especificado lo indicado en el archivo .htaccess, ya debería ser suficiente para que el directorio o archivo esté protegido mediante usuario y contraseña.

En la documentación oficial de Apache, podrás encontrar información adicional sobre .htpasswd y .htaccess.

Para comentar sobre este artículo, rellena el formulario. Los campos marcados con un asterisco (*) son obligatorios.


*