GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo restringir el acceso al directorio y subdirectorios en Nginx

Hola amigos. En este post continuaremos con algunos trucos para Nginx. Entonces, hoy aprenderá cómo restringir el acceso al directorio y subdirectorios en Nginx. Vamos a por ello.

Primero, ¿debemos hacer esto?

La respuesta corta es sí. Definitivamente. Porque en una aplicación o sitio web, hay muchas carpetas que contienen archivos confidenciales para que funcione.

Por lo anterior, es recomendable establecer reglas para prohibir el acceso a estas carpetas y así mejorar la seguridad del sitio.

Estas restricciones se pueden aplicar por dirección IP, lo que nos permite tener la flexibilidad de aplicar las configuraciones que necesitamos.

Es sin esfuerzo. Vamos a por ello.

Requisitos

Antes de continuar, tenemos que asegurarnos de que cumplimos con los requisitos para completar la publicación sin problemas

  • Necesita tener Nginx instalado y configurado. Así que asegúrese de tenerlo usando los repositorios oficiales de su distribución de Linux.
  • La versión de Nginx debe ser superior a 1.9.5 No debería tener problemas para tenerla porque la mayoría de las distribuciones incluyen versiones recientes.
  • Tener conocimientos básicos sobre el uso del terminal.
  • Un usuario con acceso sudo o root.

Vamos a por ello.

Cómo restringir el acceso a directorios y subdirectorios en Nginx

Es normal tener varios bloques de servidor en el servidor. Pero si quieres aplicar la configuración globalmente, o no tienes ninguna creada, tienes que modificar el /etc/nginx/nginx.conf – De lo contrario, debe editar el archivo de configuración de cada bloque de servidor. Por ejemplo,

sudo nano /etc/nginx/sites-enabled/domain.conf

Para esta publicación, trabajaré con una carpeta llamada data en la raíz del sitio web. Por lo tanto, la ruta relativa sería /data .

La directiva de Nginx que realiza la denegación de acceso es Deny pero tenemos que especificarlo dentro de un script que haga referencia al directorio.

Si desea restringir el acceso a ese directorio, debe incluirlo en el archivo de configuración

location /data {
   ...
      deny all;
         ...
}

También puede restringir el acceso a una dirección IP específica. Por ejemplo:

location /data {
   ...
   deny 192.168.2.5;
   ...
}

Si hay varias direcciones IP, puede especificarlas así

location /data {
   ...
   deny 192.168.2.5;
   deny 192.168.2.9;
   ...
}

También puede usar rangos de direcciones IP

location /data {
   ...
   Deny 192.168.1.0/24;
   ...
}

Guarde los cambios y cierre el editor. Para aplicar los cambios, reinicie Nginx.

sudo systemctl restart nginx

Y listo.

Directorio protegido con contraseña en Nginx

Otra opción útil es agregar una contraseña. Este método es muy seguro y también te da más control sobre quién puede acceder a él.

Para hacer esto, instale apache2-utils paquete en Debian, Ubuntu y derivados; y httpd-tools en RHEL, Rocky Linux y derivados.

Luego, cree el archivo donde se alojará la contraseña seguida por el usuario. Por ejemplo:

sudo htpasswd -c /home/username/.htpasswd user

Cuando lo ejecute, se le pedirá que ingrese una nueva contraseña para el usuario.

Editamos el archivo de configuración de Nginx o ServerBlocks

sudo nano /etc/nginx/sites-enabled/domain.conf

Y agrega algo como esto

location /data {
auth_basic "Restricted";
auth_basic_user_file /home/username/.htpasswd;
}

Guarde sus cambios, cierre el editor y reinicie Nginx.

sudo systemctl restart nginx

Ahora, cuando desee acceder a la carpeta, se le solicitará una contraseña.

Conclusión

En este breve y sencillo post hemos explicado algo tan importante como la restricción de acceso a las carpetas de nuestro servidor web.

Documentación de Nginx


Linux
  1. Cómo contar la cantidad de archivos y subdirectorios dentro de un directorio dado

  2. Cómo acceder a phpMyAdmin y phpPgAdmin en cPanel

  3. Cómo acceder a los sistemas de archivos de Linux en Windows 10 y WSL 2

  4. ¿Cómo eliminar un directorio y una carpeta en Linux?

  5. ¿Cómo grep una cadena en un directorio y todos sus subdirectorios?

Cómo habilitar TLS 1.3 en Nginx en Ubuntu 18.04 y 16.04

Cómo desactivar la exploración de directorios en Apache y Nginx

Cómo habilitar TLS 1.3 en Apache y Nginx

Cómo proteger el directorio con contraseña en Nginx

Cómo instalar y configurar Nginx en Ubuntu 20.04 y Ubuntu 21.04

Cómo instalar y configurar Supervisor en Ubuntu 20.04