Apache: Proteger un directorio con contraseña

Proteger un directorio


Voy a seguir con los tutoriales de apache, en este pequeño hilo me gustaría enseñaros a proteger algun directorio con ficheros privados. Para ello deberemos saber:

Módulo de autentificación


Vamos a seguir más o menos como lo dejamos en el último tutorial, tenemos en el VPS un usuario llamado Enrique, con su carpeta public_html, en su directorio home, si no sabes de qué estoy hablando descubrelo aquí.
Lo primero que deberemos hacer es mirar los módulos que tenemos activos.
cd /etc/apache2/mods-enabled
ls -l
Debemos tener activado el módulo auth_basic.
En caso de no tenerlo activado como vimos en el anterior tutorial de cómo activar módulos, deberemos usar el comando:
a2enmod auth_basic
Este sería el primer paso, ahora pongámonos en situación imaginemos que tenemos un VPS con diferentes usuarios y queremos proteger que ciertos usuarios vean ciertos archivos, para ello usaremos dicho módulo, con el que podremos crear un usuario y una contraseña y cuando alguien quiera entrar en dicho archivo nos pedirá las credenciales y permanecerán ocultos hasta que alguien pase dicho control.

Archivo .htaccess


Entramos al directorio que queremos proteger, en mi caso será la carpeta public_html directamente, donde tengo un archivo index.html.
En dicho directorio deberemos crear un archivo llamado .htaccess.
touch .htaccess
OJO*: Si usais un sistema operativo Windows, no podreis crear el archivo con click derecho, crear nuevo archivo y poner el nombre directamente, porque los sistemas operativos windows no dejan llamar archivos que empiecen por punto, debereis hacerlo por el cmd de windows.
Este archivo debe quedar de la siguiente forma:
   AuthType Basic
   AuthName "secret area"
   AuthBasicProvider file
   #Aquí indicamos la ruta donde estarán las credenciales
   AuthUserFile /home/Enrique/public_html/.htpasswds
   #Aquí le decimos que debe loguearse preciso para poder acceder 
   Require valid-user
NOTA*: Las lineas que empiezan por #, son comentarios no influyen en nada, si se ponen o si se quitan.
Una vez llegados a este punto, nuestro directorio ya estará protegido, de hecho si intentamos entrar deberia aparecer lo siguiente:
¿Cuál es el problema? Que aun no le hemos dado las credenciales, he leido que si no se le asigna nada tiene un usuario y una password por defecto, pero eso no nos da ninguna seguridad, así que ahora llegamos a nuestra siguiente parte del tutorial, el archivo .htpasswds.

Archivo .htpasswds


Para darle las credenciales a nuestro directorio necesitaremos crear un archivo .htpasswds, este archivo solo contendrá el usuario y la contraseña, ya esta, bueno no está... No es tan simple, podemos poner directamente el usuario y la contraseña o podremos ponerlo cifrado, mi archivo cifrado se queda de la siguiente forma:
El usuario es avato y la contraseña es a partir de los dos puntos (obviamente esta cifrada).
Buscando información para hacer este tutorial he encontrado una herramienta para crear automáticamente archivos .htpasswds, lo he visto bastante interesante, tu le pones el nombre de usuario y la contraseña que deseas y el te genera el archivo con la contraseña ya cifrada, os dejo el enlace aquí, pero no os vayais aun que no hemos terminado.
Si quisiésemos tener más usuarios que puedan entrar en estos directorios, solo debemos introducir más lineas al .htpasswds, algo muy importante es que cada usuario y contraseña es una linea del archivo.
Ahora volvemos a introducir en el navegador la URL del directorio que tenemos protegido y cuando vuelva a aparecer el cuadro de texto preguntando las credenciales y ya estaremos dentro.
Esta es una forma de proteger los archivos pero no es la recomandada por apache, en la documentación de apache no recomiendo usar los archivos .htaccess, porque realentizan al servidor, que esta forma solo la debemos usar en caso de no tener acceso a la configuración de apache pero si somos los administradores del servidor deberemos hacerlo de otra forma que ahora os explicaré.

Configurar autentificación


La forma que dice apache que debe hacerse es modificando la configuración, haced una copia de dicho archivo por si acaso antes de modificarlo por si nos equivoquemos que no tengamos que reinstalarlo todo. Bien pues manos a la obra, nos situamos en el directorio de apache en /etc/apache2 y allí usamos nuestro editor de texto favorito para modificar el archivo apache.conf
Deberemos introducir lo siguiente:
   <Location "[Directorio que queremos proteger]">
       AuthBasicFake [usuario] [contraseña]
   </Location>
En la foto la contraseña no está encriptada, pero supongo que al igual que en el .htpasswds se debe poder encriptar.
Y ya está, ¿habeis visto que sencillo?
Con esto doy por concluido este pequeño tutorial de como proteger un directorio, espero que os haya gustado, aquí abajo os dejo los links con la información que he utilizado para hacer este tutorial.
Documentación apache .htaccess
Documentación apache auth_basic
Generador de .htpasswds

Comentarios

Entradas populares