Búsqueda de sitios web

Cómo proteger con contraseña directorios web en Apache usando el archivo .htaccess


Cuando gestiona proyectos en línea, a menudo necesita limitar el acceso a ese proyecto para protegerlo del mundo exterior. Puede haber diferentes razones para esto; por ejemplo, desea evitar que los rastreadores de los motores de búsqueda accedan a su sitio mientras aún se encuentra en la fase de desarrollo.

En este tutorial, le mostraré cómo proteger con contraseña diferentes directorios de sitios web en el servidor web Apache. Hay muchas formas de lograrlo, pero revisaremos dos de ellas que son las más utilizadas.

El primer método configura la protección con contraseña directamente en el archivo de configuración de Apache, mientras que el segundo utiliza el archivo .htaccess.

Requisitos

Para configurar la protección con contraseña para sus directorios web, necesitará tener:

  • Un servidor web Apache en funcionamiento
  • La directiva AllowOverride AuthConfig debe estar habilitada en el archivo de configuración de Apache.

Configurar el directorio protegido con contraseña de Apache

1. Para este tutorial, protegeremos el directorio raíz web principal /var/www/html. Para proteger ese directorio, abra la configuración de su Apache:

---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf

---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf

2. Busque la raíz del directorio de documentos de Apache para /var/www/html y agregue lo siguiente como se sugiere:

En la versión Apache 2.2

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All
Order allow,deny
Allow from all 
</Directory>

En la versión Apache 2.4

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>

3. Guarde el archivo y reinicie Apache usando el siguiente comando:

--------------- On Systemd -------------------
systemctl restart httpd         [On RedHat based systems]
systemctl restart apache2       [On Debian based systems]


--------------- On SysV init -----------------
service httpd restart           [On RedHat based systems]
service apache2 restart         [On Debian based systems]

4. Ahora usaremos el comando htpasswd para generar el nombre de usuario y la contraseña para nuestro directorio protegido. Este comando se utiliza para administrar archivos de usuario para la autenticación básica.

La sintaxis general del comando es:

htpasswd -c filename username

La opción -c especifica el archivo que mantendrá la contraseña cifrada y nombre de usuario especifica el usuario para la autenticación.

5. Nuestro archivo de contraseña debe estar ubicado fuera del directorio accesible web de Apache para que esté bien protegido. Para ello crearemos un nuevo directorio:

mkdir /home/tecmint

6. Después de eso generaremos nuestro nombre de usuario y contraseña que se almacenarán en ese directorio:

htpasswd -c /home/tecmint/webpass tecmint

Una vez que ejecute este comando, deberá ingresar una contraseña para nuestro nuevo usuario "tecmint" dos veces:

Después de eso, tendremos que asegurarnos de que Apache pueda leer el archivo “webpass”. Para ello, deberá cambiar la propiedad de ese archivo con el siguiente comando:

---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass

7. En este punto nuestro nuevo usuario y contraseña están listos. Ahora necesitamos decirle a Apache que solicite una contraseña al acceder a nuestro directorio de destino. Para ello, cree un archivo llamado .htaccess en /var/www/html:

vi /var/www/html/.htaccess

Agregue el siguiente código en él:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8. Ahora guarde el archivo y ponga a prueba su configuración. Abra su navegador e ingrese su dirección IP o nombre de dominio en el navegador web, por ejemplo:

http://ip-address

Se le debería solicitar el nombre de usuario y la contraseña:

Ingrese el nombre de usuario y la contraseña que configuró para acceder a su página.

Notas adicionales

Si utiliza alojamiento compartido, lo más probable es que no tenga acceso al archivo de configuración de Apache. Sin embargo, la mayoría de las empresas de hosting han habilitado la opción "AllowOverride All" de forma predeterminada. Esto significa que sólo necesitará generar el nombre de usuario y la contraseña y luego seleccionar el directorio que desea proteger. Esto facilita significativamente su tarea.

Conclusión

Espero que este tutorial te haya resultado útil y te ayude a lograr tu objetivo. Si tiene alguna pregunta o comentario, no dude en publicarlo en la sección siguiente.