Cómo configurar la autenticación HTTP básica en Nginx

Cómo configurar la autenticación HTTP básica en Nginx

La autenticación básica de HTTP es un mecanismo de seguridad para restringir el acceso a su sitio web/aplicación o algunas partes configurando la autenticación simple de nombre de usuario/contraseña. Se puede usar esencialmente para proteger todo el servidor HTTP, bloques de servidor individuales (hosts virtuales en Apache) o bloques de ubicación.

Leer también: Cómo configurar hosts virtuales basados ​​en nombres y basados ​​en IP (bloques de servidor) con Nginx

Como su nombre indica, no es un método seguro para confiar; Debe usarlo junto con otras medidas de seguridad más confiables. Por ejemplo, si su aplicación web se ejecuta en HTTP, las credenciales de usuario se transmiten en texto plano, por lo que debe considerar habilitar HTTPS.

El propósito de esta guía es ayudarlo a agregar una capa de seguridad pequeña pero útil para proteger el contenido privado/privilegiado en sus aplicaciones web (como, entre otros, lados del administrador). También puede usarlo para evitar el acceso a un sitio web o aplicación que aún está en la fase de desarrollo.

Requisitos

  1. Instale la pila LEMP en CentOS/RHEL 7
  2. Instale Lemp Stack en Ubuntu/Debian

Crear archivo de usuario de autenticación http

Debe comenzar creando un archivo que almacene usuario Contraseña pares. Usaremos el htpasswd utilidad desde el servidor apache http, para crear este archivo.

Primero verifique eso apache2-utils o httpd-herramientas, los paquetes que proporcionan htpasswd La utilidad se instala en su sistema, de lo contrario, ejecute el comando apropiado para que su distribución lo instale:

# yum install httpd-tools [rhel/centos] $ sudo apt install apache2-utils [Debian/Ubuntu] 

A continuación, corre htpasswd Comando a continuación para crear el archivo de contraseña con el primer usuario. El -C La opción se usa para especificar el archivo PASSWD, una vez que presiona [Ingresar], se le pedirá que ingrese la contraseña del usuario.

# htpasswd -c/etc/nginx/conf.d/.desarrollador htpasswd 

Agregue un segundo usuario y no use el -C opción aquí.

# htpasswd/etc/nginx/conf.d/.htpasswd admin 

Ahora que tiene listo el archivo de contraseña, proceda a configurar las partes de su servidor web a las que desea restringir el acceso a. Para ver el contenido del archivo de contraseña (que incluye nombres de usuario y contraseñas cifradas), use el comando CAT a continuación.

# cat/etc/nginx/conf.d/.htpasswd 
Ver archivo de contraseña http

Configurar la autenticación HTTP para Nginx

Como mencionamos anteriormente, puede restringir el acceso a su servidor web, un solo sitio web (usando su bloque de servidor) o una directiva de ubicación. Se pueden usar dos directivas útiles para lograr esto.

  • auth_basic - Enciende la validación del nombre de usuario y la contraseña utilizando el "HTTP Autenticación básica"Protocolo.
  • auth_basic_user_file - Especifica el archivo de contraseña.

Contraseña protege a los hosts virtuales nginx

Para implementar la autenticación básica para todo el servidor web, que se aplica a todos los bloques del servidor, abra el /etc/nginx/nginx.confusión Archivo y agregue las siguientes líneas en el contexto HTTP:

http auth_basic "acceso restringido!"; auth_basic_user_file/etc/nginx/conf.d/.htpasswd; ... 

Sitio web o dominio de proteger Nginx de contraseña

Para habilitar la autenticación básica para un dominio o subdominio en particular, abra su archivo de configuración en /etc/nginx/conf.d/ o /etc/nginx/conf/sites disponible (Dependiendo de cómo instaló NGINX), luego agregue la configuración a continuación en el bloque o contexto del servidor:

servidor escuchar 80; Ejemplo de server_name.com; Auth_basic "Acceso restringido!"; auth_basic_user_file/etc/nginx/conf.d/.htpasswd; ubicación / … …  

Password Protect Web Directory en Nginx

También puede habilitar la autenticación básica dentro de una directiva de ubicación. En el siguiente ejemplo, todos los usuarios que intentan acceder al /administración Se le pedirá al bloque de ubicación que autentique.

servidor escuchar 80; Ejemplo de server_name.com www.ejemplo.com; Ubicación / … Ubicación /administración/ Acceso restringido Auth_Basic "!"; auth_basic_user_file/etc/nginx/conf.d/.htpasswd;  ubicación /public /Auth_Basic Off; #Turns Off Authentication Basic HTTP Off para este bloque ... 

Si ha configurado la autenticación HTTP básica, todos los usuarios que intentan acceder a su servidor web o un subdominio o parte específica de un sitio (dependiendo de dónde lo implemente), se le pedirá un nombre de usuario y una contraseña como se muestra en la captura de pantalla a continuación.

Autenticación básica nginx

En caso de una autenticación de usuario fallida, un "401 Autorización requeridaEl error se mostrará como se muestra a continuación.

401 Autorización Error requerido

Puede encontrar más información para restringir el acceso con la autenticación HTTP básica.

También le gustaría leer estas siguientes guías relacionadas con el servidor NGINX HTTP NGINX.

  1. Cómo proteger la contraseña de los directorios web en Nginx
  2. La guía definitiva para asegurar, endurecer y mejorar el rendimiento de Nginx
  3. Configuración de HTTPS con Let's Cifrypt SSL Certificado para Nginx

En esta guía, mostramos cómo implementar la autenticación HTTP básica en el servidor web nginx http. Para hacer cualquier pregunta, use el formulario de comentarios a continuación.