Apache es uno de los servidores web más utilizados y populares del mundo, por lo que es importante mantener sus sitios web privados de usuarios no autorizados. La autenticación de Apache se puede configurar para solicitar a los visitantes del sitio web que inicien sesión con un ID de usuario y una contraseña. Hay muchas maneras de proteger con contraseña los directorios en un servidor web Apache.
Este artículo describe una manera fácil de proteger con contraseña un directorio web en Apache usando un .htaccess
expediente.
Nota: este tutorial se realiza en un servidor Ubuntu con Apache instalado.
Instalación del paquete de utilidades de Apache
En primer lugar, debe instalar el apache2-utils
paquete que proporciona una utilidad llamada htpasswd
para crear un archivo de contraseñas.
Puede instalarlo ejecutando el siguiente comando:
sudo apt-get install apache2-utils
Configure Apache para permitir la autenticación .htaccess
De forma predeterminada, Apache no permite el uso de un archivo .htaccess en Ubuntu 14.04. Deberá configurar el archivo de configuración de Apache para permitir la autenticación basada en .htacces.
Puede hacer esto editando el archivo de configuración de Apache:
sudo nano /etc/apache2/apache2.conf
Encuentra la sección que comienza con el Directory "/var/www/html"
y cambiar la línea de AllowOverride none
a AllowOverride AuthConfig
Options Indexes FollowSymLinks AllowOverride AuthConfig Require all granted
Guarde y cierre el archivo.
Crear el archivo de contraseña
Puedes usar el htpasswd
utilidad de línea de comandos para crear un archivo de contraseña que Apache puede usar para autenticar a los usuarios. Ahora, cree un archivo .htpasswd oculto en el directorio de configuración «/etc/apache2».
sudo htpasswd -c /etc/apache2/.htpasswd authuser1
Esto le pedirá que proporcione y confirme una contraseña para authuser1.
Si desea agregar otro usuario, omita el -c
argumento con htpasswd
dominio.
Ahora, para crear otra autenticación para un segundo usuario, authuser2:
sudo htpasswd /etc/apache2/.htpasswd authuser2
Puede ver el nombre de usuario y la contraseña cifrada de cada registro ejecutando:
sudo cat /etc/apache2/.htpasswd
Debe otorgar permiso al usuario «www-data» para poder leer el archivo .htpasswd.
sudo chown www-data:www-data /etc/httpd/.htpasswd sudo chmod 0660 /etc/httpd/.htpasswd
Configurar la autenticación de contraseña de Apache
Debe crear un archivo «.htaccess» en el directorio web que desea restringir. En este ejemplo, crearé un archivo «.htaccess» en el directorio «/var/www/html/» para restringir la raíz del documento completo.
sudo nano /var/www/html/.htaccess
Agrega el siguiente contenido:
AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user
Esto es lo que significa el código anterior:
- Tipo de autenticación: Esta opción define el tipo de autenticación.
- nombre de autenticación: Este es el contenido que se muestra en la página web cuando se le solicita el nombre de usuario y la contraseña.
- AuthUserFile: esta opción especifica la ubicación de las credenciales de usuario.
- requiere usuario válido: Esto indica que solo las solicitudes autenticadas exitosas pueden cargar la página.
Guarde y cierre el archivo y reinicie Apache para que estos cambios surtan efecto.
sudo /etc/init.d/apache2 restart
Prueba de autenticación de contraseña
Ahora en una máquina remota, acceda a su sitio web en un navegador web. Se le solicitará un nombre de usuario y una contraseña para acceder a la página web.
Si ingresa las credenciales de usuario correctas, se le permitirá acceder al contenido. Si ingresa las credenciales de usuario incorrectas o presiona «Cancelar», verá el No autorizado página de error
Conclusión
Ahora debería tener suficiente conocimiento para configurar la autenticación básica para su servidor web Apache. Recuerde también que la protección por contraseña debe combinarse con el cifrado SSL para que sus credenciales no se envíen al servidor en texto sin formato.