Cómo proteger una carpeta con contraseña usando Webmin y Apache

Cómo proteger una carpeta con contraseña usando Webmin y Apache

Protege un directorio de tu servidor web con autenticación básica (usuario y contraseña) desde Webmin. Incluye creación de usuarios de Apache, configuración paso a paso y comprobación desde el navegador.

FECHA:
ACTUALIZADO:
AUTOR:Jorge Beneyto Castelló
LECTURA:5 MINUTOS DE LECTURA

¿Tienes un directorio en tu servidor web que no debería ser accesible para todo el mundo? Con Webmin puedes proteger cualquier carpeta de Apache con un usuario y una contraseña en pocos pasos, sin tocar archivos de configuración. Es una forma rápida de añadir autenticación básica a archivos internos, paneles de administración o secciones privadas de tu sitio.

🤔 ¿Qué vamos a conseguir?

  • Proteger una carpeta con autenticación básica (usuario + contraseña) desde la interfaz de Webmin.
  • Crear usuarios de Apache específicos para esa carpeta.
  • Verificar que al acceder a la ruta desde el navegador aparece el cuadro de autenticación.
  • Entender cómo funciona la autenticación básica de Apache y sus limitaciones.

🧰 Prerrequisitos

  • Un servidor con Apache instalado y funcionando.
  • Webmin instalado y accesible (normalmente en https://ip_del_servidor:10000).
  • Un directorio existente en el servidor web que quieras proteger (por ejemplo, /var/www/html/client).
  • Un navegador web para probar la protección.

🛠️ Instalar Webmin (si no lo tienes)

# Añade el repositorio oficial de Webmin
sudo sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list'
wget -q -O - https://www.webmin.com/jcameron-key.asc | sudo apt-key add -
sudo apt update
sudo apt install webmin

Accede desde el navegador en https://ip_del_servidor:10000. Acepta el certificado autofirmado y entra con tu usuario root o un usuario con permisos sudo.

🚀 Proteger una carpeta desde Webmin

Paso 1 — Acceder a Directorios Protegidos

  1. Entra en Webmin con tu navegador.
  2. Ve a Otros → Directorios Protegidos (en la sección de módulos).
  3. Si el módulo no aparece, instálalo desde Webmin → Webmin Configuration → Webmin Modules buscando “apache”.

Paso 2 — Crear el directorio protegido

  1. En Directorios Protegidos, haz clic en Agregar protección para un directorio.
  2. Rellena los campos:
    • Nombre de la protección: un nombre descriptivo (ej. client_area).
    • Ruta del directorio: la ruta completa del directorio a proteger, por ejemplo /var/www/html/client.
    • Nombre de dominio: el dominio o IP de tu servidor (ej. www.beneyto.com o 192.168.101.1).
  3. Pulsa Crear.
Configuración del directorio protegido en Webmin

Paso 3 — Crear usuarios de autenticación

Una vez creado el directorio protegido:

  1. Haz clic sobre el nombre de la protección que acabas de crear (ej. client_area).
  2. Pulsa Crear usuario de este directorio.
  3. Rellena:
    • Nombre de usuario: el usuario que accederá a la carpeta (ej. admin).
    • Contraseña: una contraseña segura.
    • Confirmar contraseña: repite la contraseña.
  4. Pulsa Crear.
Crear usuario de autenticación en Webmin

Paso 4 — Verificar desde el navegador

Abre el navegador de un equipo cliente y navega a la carpeta protegida:

http://www.beneyto.com/~client/

Aparecerá un cuadro de diálogo pidiendo usuario y contraseña. Introduce las credenciales que creaste en Webmin y accederás al contenido.

Cuadro de autenticación al acceder a la carpeta protegida

🧪 Comprobar que funciona

  • Con credenciales correctas: introduces usuario y contraseña y accedes al contenido de la carpeta.
  • Con credenciales incorrectas: el navegador muestra 401 Unauthorized o vuelve a pedir las credenciales.
  • Sin credenciales (navegador privado): al acceder a la ruta, aparece el cuadro de autenticación automáticamente.
  • Desde la terminal (comprobación programática):
# Debería devolver 401 (Unauthorized) sin credenciales
curl -s -o /dev/null -w "%{http_code}" http://www.beneyto.com/~client/

# Debería devolver 200 con credenciales
curl -s -o /dev/null -w "%{http_code}" -u admin:contraseña http://www.beneyto.com/~client/

⚠️ Errores comunes

ErrorCausaSolución
403 ForbiddenEl directorio no tiene un index.html o index.php, o permisos incorrectosCrea un index.html en la carpeta o ajusta permisos: chmod 755 /var/www/html/client
401 Unauthorized pero no pide usuarioApache no está procesando la configuración de .htaccessVerifica que el VirtualHost tiene AllowOverride All o que Webmin creó los archivos .htpasswd correctamente
El cuadro de autenticación no apareceLa ruta escrita en el navegador no coincide con la protegidaRevisa la ruta exacta en Webmin y asegúrate de que coincida con la URL
Could not open password fileEl archivo .htpasswd no tiene permisos de lectura para Apachesudo chown www-data:www-data /etc/apache2/.htpasswd && sudo chmod 644 /etc/apache2/.htpasswd
Webmin no muestra el módulo de Directorios ProtegidosEl módulo no está instaladoVe a Webmin → Webmin Modules e instala el módulo “Apache”

🪜 Siguiente nivel

Una vez domines la autenticación básica, la escalera natural es:

  1. Certificados SSL — cifra las conexiones para que las contraseñas no viajen en claro: Cómo obtener un certificado SSL.
  2. Servidor virtual con Apache — aloja múltiples sitios web en el mismo servidor: Cómo crear un servidor virtual.
  3. Protección avanzada — usa autenticación por certificados client TLS o integra LDAP para gestión centralizada de usuarios.
  4. Firewall y fail2ban — protege tu servidor de intentos de fuerza bruta contra la autenticación.

🔗 Enlaces y recursos

COMPARTIR:
COMENTARIOS:

📋 Contenido