Cómo configurar la autenticación de contraseña con Nginx en Ubuntu 22.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: creación del archivo de contraseña
    1. Opción 1: creación del archivo de contraseña mediante las utilidades de OpenSSL
    2. Opción 2: Creación del archivo de contraseñas mediante las utilidades de Apache
  • Paso 2: Configuración de la autenticación de contraseña de Nginx
  • Paso 3: Confirmación de la autenticación de contraseña
  • Conclusión
  • Al configurar un servidor web, a menudo hay secciones del sitio a las que se desea restringir el acceso. Las aplicaciones web suelen proporcionar sus propios métodos de autenticación y autorización, pero el propio servidor web puede utilizarse para restringir el acceso si estos son inadecuados o no están disponibles. En esta guía, protegerá con contraseña los activos en un servidor web Nginx que se ejecuta en Ubuntu 22.04.

    Prerrequisitos

    Para comenzar, necesitarás:

    • Acceso a un entorno de servidor Ubuntu 22.04 con un usuario no root con sudoprivilegios para realizar tareas administrativas. Para saber cómo crear un usuario de este tipo, siga la guía de configuración inicial del servidor Ubuntu 22.04 .
    • Nginx instalado en su sistema, siguiendo los pasos 1 y 2 de esta guía sobre cómo instalar Nginx en Ubuntu 22.04 .

    Paso 1: creación del archivo de contraseña

    Para comenzar, debe crear un archivo que contenga sus combinaciones de nombre de usuario y contraseña. Puede hacerlo utilizando las utilidades OpenSSL que pueden estar disponibles en su servidor. Alternativamente, puede utilizar la htpasswdutilidad específica incluida en el apache2-utilspaquete (los archivos de contraseña de Nginx utilizan el mismo formato que Apache). Elija el método que más le guste a continuación.

    Opción 1: creación del archivo de contraseña mediante las utilidades de OpenSSL

    Si tiene OpenSSL instalado en su servidor, puede crear un archivo de contraseñas sin necesidad de paquetes adicionales. Creará un archivo oculto .htpasswden el /etc/nginxdirectorio de configuración para almacenar sus combinaciones de nombre de usuario y contraseña.

    Puede agregar un nombre de usuario al archivo usando este comando. sammyse usa aquí como nombre de usuario, pero puede usar cualquier nombre que desee:

    1. sudo sh -c "echo -n 'sammy:' /etc/nginx/.htpasswd"

    A continuación, agregue una entrada de contraseña cifrada para el nombre de usuario escribiendo:

    1. sudo sh -c "openssl passwd -apr1 /etc/nginx/.htpasswd"

    Puede repetir este proceso para nombres de usuario adicionales. Puede ver cómo se almacenan los nombres de usuario y las contraseñas cifradas dentro del archivo escribiendo:

    1. cat /etc/nginx/.htpasswd
    Outputsammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

    Opción 2: Creación del archivo de contraseñas mediante las utilidades de Apache

    Si bien OpenSSL puede cifrar contraseñas para la autenticación de Nginx, a muchos usuarios les resulta más fácil utilizar una utilidad especialmente diseñada. La htpasswdutilidad, que se encuentra en el apache2-utilspaquete, cumple bien esta función.

    Instale el apache2-utilspaquete en su servidor escribiendo:

    1. sudo apt update
    2. sudo apt install apache2-utils

    Ahora tienes acceso al htpasswdcomando. Puedes usarlo para crear un archivo de contraseñas que Nginx pueda usar para autenticar usuarios. Crea un archivo oculto para este propósito .htpasswddentro de tu /etc/nginxdirectorio de configuración.

    La primera vez que utilice esta utilidad, deberá agregar la -copción para crear el archivo especificado. Especifique un nombre de usuario ( sammyen este ejemplo) al final del comando para crear una nueva entrada dentro del archivo:

    1. sudo htpasswd -c /etc/nginx/.htpasswd sammy

    Se le pedirá que proporcione y confirme una contraseña para el usuario.

    Omite el -cargumento para cualquier usuario adicional que desees agregar:

    1. sudo htpasswd /etc/nginx/.htpasswd another_user

    Si observa el contenido del archivo, podrá ver el nombre de usuario y la contraseña cifrada para cada registro:

    1. cat /etc/nginx/.htpasswd
    Outputsammy:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

    Paso 2: Configuración de la autenticación de contraseña de Nginx

    Ahora que tiene un archivo con sus usuarios y contraseñas en un formato que Nginx puede leer, necesita configurar Nginx para que verifique este archivo antes de servir su contenido protegido.

    Comience abriendo el archivo de configuración del bloque de servidor al que desea agregar una restricción. Para su ejemplo, utilizará el defaultarchivo de bloque de servidor instalado a través del paquete Nginx de Ubuntu:

    1. sudo nano /etc/nginx/sites-enabled/default

    Para configurar la autenticación, debe decidir el contexto que desea restringir. Entre otras opciones, Nginx le permite establecer restricciones a nivel de servidor o dentro de una ubicación específica.

    Este ejemplo será para una restricción a nivel de servidor. La auth_basicdirectiva activa la autenticación y el nombre de dominio que se mostrará al usuario cuando se le soliciten las credenciales. Utilizará la auth_basic_user_filedirectiva para indicarle a Nginx el archivo de contraseñas que creó:

    /etc/nginx/sites-enabled/predeterminado

    server {    listen 80 default_server;     . . .       auth_basic "Restricted Content";    auth_basic_user_file /etc/nginx/.htpasswd;}

    Nota: Dependiendo del bloque que coloques como restricción, puedes controlar la granularidad de qué partes de tu sitio requieren una contraseña. Este ejemplo alternativo restringe solo la raíz del documento con un bloque de ubicación, e incluso puedes modificar esta lista para que solo se dirija a un directorio específico dentro del espacio web:

    /etc/nginx/sites-enabled/predeterminado

    server {    listen 80 default_server;     . . .       location / {    try_files $uri $uri/ =404;    auth_basic "Restricted Content";    auth_basic_user_file /etc/nginx/.htpasswd;    }}

    Guarde y cierre el archivo cuando haya terminado. Reinicie Nginx para implementar su política de contraseñas:

    1. sudo systemctl restart nginx

    El directorio que usted especificó ahora debe estar protegido con contraseña.

    Paso 3: Confirmación de la autenticación de contraseña

    Para confirmar que su contenido está protegido, intente acceder a su contenido restringido en un navegador web:

    http://server_domain_or_IP

    Debería aparecer un mensaje solicitando nombre de usuario y contraseña:

    Si ingresa las credenciales correctas, podrá acceder al contenido. Si ingresa las credenciales incorrectas o presiona “Cancelar”, verá la página de error “Autorización requerida”:

    Conclusión

    Ahora debería tener todo lo que necesita para configurar la autenticación básica para su sitio. Tenga en cuenta que la protección con contraseña debe combinarse con el cifrado TLS para que sus credenciales no se envíen al servidor en texto sin formato. Consulte esta guía sobre cómo proteger Nginx con Let’s Encrypt en Ubuntu 22.04

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion