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 HTTP básica es un mecanismo de seguridad para restringir el acceso a su sitio web/aplicación o algunas partes del mismo configurando una autenticación simple de nombre de usuario/contraseña. Se puede usar esencialmente para proteger todo el servidor HTTP, bloques de servidores individuales (hosts virtuales en Apache) o bloques de ubicación.

Lea también. Cómo configurar IP y basado en nombre Hosts virtuales basados ​​en servidores (bloques de servidor) con NGINX

Como sugiere el nombre, no es un método seguro en el que confiar; debe utilizarlo junto con otras medidas de seguridad más fiables. Por ejemplo, si su aplicación web se ejecuta en HTTP, las credenciales de usuario se transmiten en texto sin formato, por lo que debe considerar habilitar HTTPS.

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

Requisitos

  1. Instalar LEMP Stack en CentOS/RHEL 7
  2. Instalar LEMP Stack en Ubuntu/Debian

Crear archivo de usuario de autenticación HTTP

Debe comenzar creando un archivo que almacenará los pares de nombre de usuario: contraseña. Usaremos la utilidad htpasswd. de Apache HTTP Server, para crear este archivo.

freestar.config.enabled_slots.push

Primero verifique que apache2-utils. o httpd-tools. los paquetes que proporcionan la utilidad htpasswd. estén instalados en su sistema, de lo contrario ejecute el comando apropiado para su distribución para instalarlo:

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

Luego, ejecute htpasswd. comando a continuación para crear el archivo de contraseña con el primer usuario. La opción-c se usa para especificar el archivo passwd, una vez que presione [Enter]. se le pedirá que ingrese la contraseña del usuario.

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

Agregue un segundo usuario y no use la opción-c aquí.

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

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

# cat/etc/nginx/conf.d/.htpasswd  Ver archivo de contraseña HTTP  Ver Archivo de contraseña HTTP 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 sitio web único (usando su bloque de servidor) o una directiva de ubicación. Se pueden usar dos directivas útiles para lograr esto.

  • auth_basic. activa la validación del nombre de usuario y la contraseña mediante la “ autenticación básica HTTP. ”.
  • auth_basic_user_file. especifica el archivo de contraseña.

Hosts virtuales Nginx protegidos con contraseña

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

http auth_basic “¡Acceso restringido!”; auth_basic_user_file/etc/nginx/conf.d/.htpasswd; …… … Sitio web o dominio de Nginx protegido con 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-available. (dependiendo de cómo haya instalado Nginx), luego agregue la siguiente configuración en el bloque del servidor o en el contexto:

server listen 80; nombre_servidor example.com; auth_basic “¡Acceso restringido!”; auth_basic_user_file/etc/nginx/conf.d/.htpasswd; location/…… .. …… … Directorio web protegido con contraseña en Nginx

También puede habilitar la autenticación básica dentro de una directiva de ubicación. En el siguiente ejemplo, a todos los usuarios que intenten acceder al bloque de ubicación/admin se les pedirá que se autentiquen.

servidor escuchar 80; nombre_servidor example.com www.example.com; location/…… .. location /admin/ auth_basic “¡Acceso restringido!”; auth_basic_user_file/etc/nginx/conf.d/.htpasswd; ubicación/público/auth_basic desactivado; # desactiva la autenticación HTTP básica para este bloque …… ..

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

 Autenticación básica de Nginx  Autenticación básica de Nginx Autenticación básica de Nginx

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

401 Error de autorización requerida  401 Error de autorización requerida 401 Error de autorización necesaria

Puede encontrar más información sobre cómo restringir el acceso con autenticación HTTP básica.

También le gustaría leer estas guías útiles relacionadas con el servidor HTTP de Nginx.

  1. Cómo proteger con contraseña los directorios web en Nginx
  2. La guía definitiva para proteger, fortalecer y mejorar el rendimiento de Nginx
  3. Configuración de HTTPS con Let’s Encrypt SSL Certificate para Nginx

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