Autenticación y autorización en Apache Ubuntu Server 20.04
Bienvenido a este tutorial, donde aprenderás a proteger cualquier página con autenticación y autorización en Apache de Ubuntu Server 20.04.
En Apache, podemos crear autenticación a través de Basic, Digest o con .htaccess, así que a continuación te enseñaré a crear la autenticación y autorización de las dos formas diferentes.
# Contenidos del tutorial
1. Autenticación con Basic
Para configurar la autenticación con Basic debemos de:
Actualizar los repositorios de Ubuntu
apt-get update
Instalamos el paquete de apache2-utils:
apt-get install apache2 apache2-utils
Creamos un nuevo usuario y almacemanos la contraseña en el fichero .htpasswd. En mi caso voy a crear un usuario llamado profesor1:
htpasswd -c /etc/apache2/.htpasswd profesor1
El sistema nos pedirá una contraseña para el usuario (este usuario y contraseña será el que usaremos para iniciar sesión a nuestro sitio restringido).
IMPORTANTE: Si queremos crear más usuarios, deberemos de escribir el siguiente comando (yo por ejemplo voy a crear un usuario llamado profesor2):
htpasswd /etc/apache2/.htpasswd profesor2
Creamos un nuevo directorio para el profesor que posteriormente lo vamos a restringir (en mi caso voy a llamar al directorio “profesor”):
mkdir /var/www/html/profesor
Entramos en el fichero de configuración 000-default.conf:
nano /etc/apache2/sites-enabled/000-default.conf
Dentro del documento, en la virtualzone añadiremos las siguientes líneas:
<Directory /var/www/html/profesor>
AuthType Basic
AuthName "Secure area - Authentication required"
AuthUserFile /etc/apache2/.htpasswd
Require user profesor1 mab55
</Directory>
En la sección Directory, debemos de poner la ruta de la carpeta que queremos restringir (en mi caso es /var/www/html/profesor).
En AuthUserFile, debemos de poner la ruta del fichero donde están los usuario y contraseñas (en mi caso es /etc/apache2/.htpasswd).
Por último en Require user, debemos de escribir el nombre de los usuarios que solo tendrán acceso a ese directorio (en mi caso es profesor1 y mab55).
Guardamos los cambios realizados (Ctrl + O) + Enter y salimos del documento (Ctrl + X).
Reiniciamos el servidor de Apache
service apache2 restart
Entramos con el cliente a la carpeta profesor, y podemos ver que nos pide autenticación:
NOTA: Si no te aparece el formulario de inicio de sesión, debes de abrir la web en modo incognito.
Ingresamos los datos de profesor1 y vemos que podemos entrar correctamente.
En cambio, si probamos a entrar con profesor2, no entra.
TUTORIAL RECOMENDADO PARA Windows
Tomcat para Windows 10 parte 3
2. Autenticación con Digest
Ahora vamos a realizar la misma autenticación pero con Digest, para ello:
Activamos el módulo de digest.
a2enmod auth_digest
Creamos un directorio para restringirle el acceso (en mi caso voy a crear un directorio llamado “departamento).
mkdir /var/www/html/departamento
Reiniciamos el servidor de Apache para aplicar los cambios.
service apache2 restart
Creamos un nuevo usuario y almacemanos la contraseña en el fichero digest. En mi caso voy a crear un usuario llamado admin1:
htdigest -c /etc/apache2/digest departamento admin1
El sistema nos pedirá una contraseña para el usuario (este usuario y contraseña será el que usaremos para iniciar sesión a nuestro sitio restringido).
IMPORTANTE: Si queremos crear más usuarios, deberemos de escribir el siguiente comando (yo por ejemplo voy a crear un usuario llamado admin2):
htdigest /etc/apache2/digest departamento admin2
Entramos en el fichero 000-default.conf:
nano /etc/apache2/sites-available/000-default.conf
Dentro del documento, en la virtualzone añadiremos las siguientes líneas:
<Directory /var/www/html/departamento>
Options Indexes FollowSymLinks
AllowOverride None
AuthType Digest
AuthName "departamento"
AuthDigestProvider file
AuthUserFile /etc/apache2/digest
Require valid-user
</Directory>
En la sección Directory, debemos de poner la ruta de la carpeta que queremos restringir (en mi caso es /var/www/html/profesor).
En AuthName, debemos de poner el nombre del grupo que le hemos puesto al usuario.
En AuthUserFile, debemos de poner la ruta del fichero donde están los usuario y contraseñas (en mi caso es /etc/apache2/digest).
Guardamos los cambios realizados (Ctrl + O) + Enter y salimos del documento (Ctrl + X).
Para aplicar los cambios reiniciamos el servidor de Apache.
service apache2 restart
Entramos con un cliente al directorio “departamento” y podemos ver que nos aparece la autenticación.
NOTA: Si no te aparece el formulario de inicio de sesión, debes de abrir la web en modo incognito.
Entramos por ejemplo con el usuario admin1 y vemos que hemos podido entrar correctamente.
TUTORIAL RECOMENDADO PARA Windows
Ficheros de configuración importantes de Apache Windows Server 2019
3. Autenticación con .htaccess
Por último, vamos a aprender a hacer la autenticación con -htaccess, para ello debemos de:
Crear un nuevo usuario en el sistema (en mi caso voy a llamar al usuario profesor):
adduser profesor
Entramos en el fichero de configuración 000-default.conf
nano /etc/apache2/sites-available/000-default.conf
Dentro del documento añadiremos las siguientes líneas dentro del virtualzone:
Alias /blog /home/profesor/blog
<Directory /home/profesor/blog>
AllowOverride All
</Directory>
En alias colocaremos primero el nombre del alias (en mi caso /blog) y luego colocaremos la ruta donde se encuentra ese directorio (en mi caso /home/profesor/blog).
En la sección Directory, debemos de poner la ruta de la carpeta que queremos restringir (en mi caso es /home/profesor/blog).
Guardamos los cambios realizados (Ctrl + O) + Enter y salimos del documento (Ctrl + X).
Salimos de Root y de nuestro usuario actual usando 2 veces el comando exit.
exit
Entramos con el usuario que hemos creado previamente (en mi caso es profesor).
Creamos el directorio blog con un archivo html dentro (debemos de crear el directorio dentro de la carpeta del usuario profesor).
mkdir /home/profesor/blog
nano /home/profesor/blog/index.html
Creamos un usuario (en mi caso le llamaré blog) y le establecemos una contraseña:
htdigest -c /home/profesor/.htdigest blog blog
Creamos el fichero .htaccess dentro del directorio blog.
nano /home/profesor/blog/.htaccess
Dentro del documento, añadimos las siguientes líneas:
Options Indexes
AuthType Digest
AuthName "blog"
AuthDigestProvider file
AuthUserFile /home/profesor/blog/.htdigest
Require user blog
En AuthName debemos de escribir el nombre del grupo del usuario (en mi caso es “blog”).
En AuthUserFile debemos de escribir la ruta de donde se encuentra el fichero .htdigest (en mi caso está en /home/profesor/blog/.htdigest).
Por último, en Require user debemos de colocar el nombre del usuario que queremos dar acceso (en mi caso es el usuario “blog”).
Guardamos los cambios realizados (Ctrl + O) + Enter y salimos del documento (Ctrl + X).
Entramos en el directorio /blog de nuestro servidor y podemos ver que nos pide los datos para iniciar sesión.
NOTA: Si no te aparece el formulario de inicio de sesión, debes de abrir la web en modo incognito.
Introducimos los datos y listo, ya estamos dentro del directorio /blog.
TUTORIAL RECOMENDADO PARA Windows
Instalar Sublime Text en Windows 11
Espero que hayas podido proteger tus directorios de Apache con un usuario y contraseña… Para cualquier duda puedes escribirme en el formulario de contacto pulsando aquí.
Un saludo Mab55
Marçal Alarcón Brugal
Soy Técnico en Desarrollo de Aplicaciones Web con más de 5 años de experiencia en el sector informático. En los últimos años, me he centrado en enseñar mis conocimientos de informática a través de cursos, tutoriales…