Cómo configurar la autenticación de contraseña con Nginx en Rocky Linux 8

Introducció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 Rocky Linux 8.

Prerrequisitos

Para comenzar, necesitarás:

  • Acceso a un entorno de servidor Rocky Linux 8 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 Rocky Linux 8 .
  • Nginx instalado en su sistema, siguiendo los pasos 1 y 2 de esta guía sobre cómo instalar Nginx en Rocky Linux 8 .

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 ya deberían estar disponibles en su servidor.

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

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.

El editor de texto predeterminado que viene con Rocky Linux 8 es vi. viEs un editor de texto extremadamente potente, pero puede resultar algo obtuso para los usuarios que no tienen experiencia con él. Puede instalar un editor más fácil de usar como nanopara facilitar la edición de archivos de configuración en su servidor Rocky Linux 8:

  1. sudo dnf install nano

Ahora puedes usar nanopara editar tu archivo de configuración de Nginx:

  1. sudo nano /etc/nginx/nginx.conf

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, por lo que agregará opciones al server{ }bloque principal dentro del archivo. La auth_basicdirectiva activa la autenticación y un 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/nginx.conf

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

Nota: Dependiendo del bloque en el que coloque las restricciones, puede controlar la granularidad de las partes de su sitio que requieren una contraseña. Este ejemplo alternativo restringe solo la raíz del documento con un bloque de ubicación, e incluso puede modificar esta lista para que solo se dirija a un directorio específico dentro del espacio web:

/etc/nginx/nginx.conf

…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 Rocky Linux 8

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 un comentario

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

Scroll al inicio