Cómo configurar la contraseña de autenticación para Nginx en Ubuntu 16.04

27 feb 2021 3 min di lettura
Cómo configurar la contraseña de autenticación para Nginx en Ubuntu 16.04
Indice dei contenuti

Introducción

En este artículo, demostraremos cómo restringir el acceso en un servidor web Nginx que se ejecuta en Ubuntu 16.04.

Prerrequisitos

Antes de comenzar esta guía, debe tener un usuario no root con privilegios sudo configurado en su servidor. Siga esta guía: Configuración inicial en Ubuntu 16.04-17.10

Si aún no lo ha hecho, instale Nginx en su servidor escribiendo desde la consola:

sudo apt-get update
sudo apt-get install nginx

Crea el archivo de contraseña

Para comenzar, necesitamos crear el archivo que contendrá nuestros datos de inicio de sesión: nombre de usuario y contraseña. Puede hacer esto usando la herramienta OpenSSL que puede que ya esté disponible en el servidor. Alternativamente, puede utilizar la herramienta htpasswd incluida en el paquete.

Cree el archivo de contraseña usando OpenSSL

Si tiene OpenSSL instalado en su servidor, puede crear un archivo de contraseña sin paquetes adicionales. Crearemos un archivo oculto llamado .htpasswd en el directorio de configuración /etc /nginx para almacenar nuestros datos de inicio de sesión: nombre de usuario y contraseña.

Puede agregar un nombre de usuario al archivo usando este comando. Usamos grok como nuestro nombre de usuario, pero puede usar el nombre que desee:

sudo sh -c "echo -n 'grok:' >> /etc/nginx/.htpasswd"

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

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

Puede repetir este proceso para usuarios adicionales. Puede ver cómo se almacenan los usuarios y las contraseñas cifradas en el archivo escribiendo:

cat /etc/nginx/.htpasswd

Output
 grok:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

Cree el archivo de contraseña con la herramienta Apache

Como alternativa a OpenSSL para cifrar contraseñas para la autenticación Nginx, puede utilizar la herramienta htpasswd, que se encuentra en el paquete apache2-utils.

Para instalar el paquete apache2-utils en su servidor, escriba desde la consola:

sudo apt-get update
sudo apt-get install apache2-utils

Ahora tiene acceso al comando htpasswd. Podemos usarlo para crear un archivo de contraseña que Nginx puede usar para autenticar a los usuarios. Crearemos un archivo oculto para este propósito llamado .htpasswd dentro de nuestro directorio de configuración /etc /nginx.

La primera vez que usamos esta utilidad, debemos agregar la opción -c para crear el archivo especificado. Para este ejemplo, podemos usar el mismo nombre de usuario usando previamente "grok" al final del comando para crear una nueva entrada en el archivo:

sudo htpasswd -c /etc/nginx/.htpasswd grok

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

Si desea agregar más usuarios, no use el parámetro -c nuevamente, por ejemplo:

sudo htpasswd /etc/nginx/.htpasswd nuovo_utente

Podemos ver el nombre de usuario y la contraseña cifrada para cada registro:

cat /etc/nginx/.htpasswd

Output
 grok:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
 nuovo_utente:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

Configurar Nginx con la contraseña de autenticación

Ahora que tenemos un archivo con nuestros usuarios y contraseñas en un formato que Nginx puede leer, necesitamos configurar Nginx para leer este archivo.

Comience abriendo el archivo de configuración de bloques del servidor al que desea agregar una restricción. Para nuestro ejemplo, usaremos el archivo de bloqueo del servidor predeterminado instalado a través del paquete Nginx de Ubuntu:

Desde la consola:

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

Busque el siguiente bloque:

...
 location /{
 try_files $uri $uri/=404;
 }...

Agregue los siguientes elementos:


auth_basic "Restricted Content";
 auth_basic_user_file /etc/nginx/.htpasswd;

El resultado final debe ser el siguiente:


server {
 listen 80 default_server;
 listen [::]:80 default_server ipv6only=on;

 root /usr/share/nginx/html;
 index index.html index.htm;

 server_name localhost;

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

Guarde y cierre el archivo.

Reinicie Nginx:

sudo service nginx restart

El directorio que especificó ahora debería estar protegido con contraseña.

Conéctese a su dirección IP pública o localhost:


http://localhost/

Se le debe solicitar un nombre de usuario y una contraseña.

La configuración de Nginx con contraseña de autenticación en Ubuntu ha finalizado.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.