Cómo configurar la autenticación htpasswd de Apache en Ubuntu
Usar la autenticación htpasswd de Apache es una forma sencilla de añadir un control de acceso básico a tus directorios web, requiriendo que los usuarios proporcionen un nombre de usuario y una contraseña antes de acceder a ciertas partes de tu sitio web. Este tipo de autenticación se utiliza a menudo para restringir el acceso a áreas sensibles, como paneles de administración o sitios de desarrollo, y se puede configurar fácilmente en un servidor Ubuntu que ejecute Apache.
Requisitos previos
- Un servidor Ubuntu con Apache2 instalado.
- Acceso root o sudo al servidor.
- Conocimientos básicos sobre el uso de la línea de comandos.
Paso 1: Instalar Apache (si no está ya instalado)
Si Apache no está instalado en su servidor Ubuntu, puede instalarlo con el siguiente comando:
sudo apt install apache2
Paso 2: Habilitar la utilidad htpasswd
La utilidad htpasswd es proporcionada por el paquete apache2-utils, que normalmente se instala con Apache. Si no está instalado, puede instalarlo ejecutando:
Este comando instala las herramientas necesarias para gestionar los archivos de contraseñas para la autenticación htpasswd.
Paso 3: Crear el archivo .htpasswd
El archivo .htpasswd se utiliza para almacenar los nombres de usuario y las contraseñas cifradas para la autenticación.
- Crear un nuevo archivo .htpasswd:Para crear un nuevo archivo .htpasswd y agregar un usuario, ejecute el siguiente comando:sudo htpasswd -c /etc/apache2/.htpasswd tu_nombre_usuario
Sustituya su_nombre_de_usuario por el nombre de usuario que desea crear.
- La opción -c crea un nuevo archivo .htpasswd. Si el archivo ya existe y utiliza -c, se sobrescribirá, de modo que utilícela sólo cuando cree el archivo por primera vez.
- Introduzca y confirme la contraseña:Después de ejecutar el comando, se le pedirá que introduzca y confirme una contraseña para el usuario.Se creará el archivo /etc/apache2/.htpasswd con la contraseña cifrada para su_nombre_de_usuario.
- Agregar usuarios adicionales (opcional):Para agregar más usuarios sin sobrescribir el archivo .htpasswd existente, ejecute:sudo htpasswd /etc/apache2/.htpasswd otro_nombre_usuario
Sustituya otro_nombre_usuario por el nuevo nombre de usuario. Este comando añade el nuevo usuario al archivo .htpasswd existente.
Paso 4: Configurar Apache para la protección por contraseña
Debe especificar qué directorio o ubicación desea proteger con contraseña. Esto se hace usando un archivo .htaccess o editando directamente el archivo de configuración de Apache.
Opción 1: Usando el archivo .htaccess
- Habilitar archivos .htaccess:Si quiere usar archivos .htaccess para configurar la protección por contraseña, asegúrese de que la directiva AllowOverride está establecida en All para el directorio que quiere proteger. Edite el archivo de configuración de Apache correspondiente (por ejemplo, /etc/apache2/sites-available/000-default.conf):sudo nano /etc/apache2/sites-available/000-default.conf
Busque la sección para su raíz web (por ejemplo, /var/www/html) y establezca AllowOverride en All:
AllowOverride Todos - Reinicie Apache:Después de editar la configuración, reinicie Apache para aplicar los cambios:sudo systemctl restart apache2
- Cree un archivo .htaccess:Dentro del directorio que desea proteger (por ejemplo, /var/www/html), cree o edite un archivo .htaccess:sudo nano /var/www/html/.htaccess
- Añada las siguientes directivas:Añada las siguientes líneas al archivo .htaccess:AuthType Básico
AuthName “Contenido restringido
AuthUserFile /etc/apache2/.htpasswd
Requerir valid-user- AuthType Basic: Especifica la autenticación básica.
- AuthName: Un mensaje que se mostrará en el prompt de autenticación.
- AuthUserFile: La ruta a su archivo .htpasswd.
- Requerir usuario válido: Restringe el acceso a los usuarios que figuran en el archivo .htpasswd.
- Guarde y cierre el archivo.
Opción 2: Usar directamente el archivo de configuración de Apache
Si prefiere gestionar la autenticación directamente en los archivos de configuración de Apache en lugar de usar .htaccess, siga estos pasos:
- Edite la configuración del host virtual:Abra el archivo de configuración de Apache para el sitio que desea proteger (por ejemplo, /etc/apache2/sites-available/000-default.conf):sudo nano /etc/apache2/sites-available/000-default.conf
- Añada las directivas de autenticación:Dentro del bloque o del bloque correspondiente al directorio que desea proteger, añada lo siguiente:<Directorio “/var/www/html”>
AuthType Básico
AuthName “Contenido restringido”
AuthUserFile /etc/apache2/.htpasswd
Requiere valid-user - Guarde y cierre el archivo de configuración.
- Reinicie Apache:Después de realizar los cambios, reinicie Apache:sudo systemctl restart apache2
Paso 5: Pruebe la autenticación
Ahora, navegue hasta la URL del directorio protegido utilizando su navegador web (por ejemplo, http://your_server_ip_or_domain). Debería ver un mensaje de inicio de sesión solicitándole un nombre de usuario y una contraseña.
- Introduzca el nombre de usuario y la contraseña que creó con el comando htpasswd.
- Si las credenciales son correctas, obtendrás acceso al directorio; de lo contrario, se te denegará el acceso.
Paso 6: Proteger el archivo .htpasswd
Por razones de seguridad, asegúrese de que el archivo .htpasswd se almacena fuera de la raíz web (por ejemplo, /etc/apache2/.htpasswd) para que no se pueda acceder a él directamente a través de un navegador web.
Asegúrese de que el archivo .htpasswd tiene los permisos correctos:
sudo chown www-data:www-data /etc/apache2/.htpasswd
Esto garantiza que sólo el usuario de Apache (www-data) y root tengan acceso para leer el archivo .htpasswd.
Conclusión
Configurar la autenticación htpasswd en Apache es una forma sencilla de añadir un control de acceso básico a directorios específicos de su sitio web. Es adecuado para protección de bajo nivel, especialmente en entornos de desarrollo o internos. Sin embargo, para áreas altamente sensibles, considere el uso de métodos de autenticación más robustos, como OAuth o la integración con un sistema de gestión de identidades.