Cómo controlar el acceso en función de la dirección IP del cliente en Nginx

Cómo controlar el acceso en función de la dirección IP del cliente en Nginx

Hay varias formas de endurecer la seguridad del servidor web Nginx, uno de los cuales es el control de acceso basado en la dirección IP. Esta guía explica cómo asegurar las aplicaciones web controlando el acceso en función de la dirección IP de un cliente en NGINX.

Esta guía supone que tiene un servidor web NGINX instalado y ejecutado, de lo contrario, consulte estas guías:

  • Cómo instalar Nginx Web Server en Ubuntu
  • Cómo instalar nginx en centos
  • Cómo instalar Nginx en Debian
  • Cómo instalar Nginx en RHEL

Control de acceso basado en la dirección IP del cliente en Nginx

El ngx_http_access_module El módulo en Nginx permite limitar el acceso a ciertas direcciones IP del cliente. Puedes activarlo con el permitir y denegar directivas.

El permitir La directiva como el nombre lo indica permite el acceso para una dirección IP específica, red, socket unix o todas (palabra clave para las entidades anteriores) y el denegar La directiva niega el acceso para una dirección IP específica, red, unix socket o todo.

Ambas directivas son válidas en el Http, servidor, ubicación y Limit_except contexto. Aquí hay un ejemplo de usar el permitir y denegar directivas dentro de un ubicación contexto para restringir el acceso a un servicio API:

Upstream App_api KeepAlive 100; servidor 10.1.1.50: 5000; servidor 10.1.1.71: 5001;  servidor escuchar 80; nombre del servidor _; access_log/var/log/nginx/app_api_access.registro principal; ERROR_LOG/VAR/LOG/NGINX/APP_API_ERROR.depuración del registro; root/usr/share/nginx/html/; ubicación / try_files $ uri / api;  ubicación /API proxy_read_timeout 3600; proxy_connect_timeout 3600s; KeepAlive_TimeOut 15; send_timeout 300; proxy_set_header x-forwarded-para $ proxy_add_x_forwarded_for; proxy_set_header x-forwarded-proto $ esquema; proxy_set_header host $ http_host; proxy_redirect off; proxy_http_version 1.1; proxy_set_header conexión ""; proxy_pass http: // app_api $ request_uri; #lista de IP permitidas para acceder a la API Permitir 10.10.10.20; Permitir 10.10.40.29; Permitir 192.168.2.23; Permitir 192.168.10.0/24; negar todo;  

En el ejemplo anterior, cualquier solicitud para acceder a cualquiera de los puntos finales de API proxizados solo está permitido para el 10.10.10.20, 10.10.40.29, 192.168.2.23 Direcciones IP y cualquiera de las de las 192.168.10.24/04 red. Se negarán las solicitudes de cualquier otra dirección IP o red o socket de dominio unix.

Nginx responderá con un error prohibido 403 al cliente como se muestra.

Nginx 403 Error prohibido

Cuando revisas el /var/log/nginx/app_api_error.registro Registro de errores, encontrará entradas como las que se muestran en la siguiente captura de pantalla:

# cat/var/log/nginx/app_api_error.depuración de registros 
Verifique los registros de errores de Nginx

Para obtener más consejos de endurecimiento de seguridad del servidor web Nginx, consulte: la guía final para asegurar y endurecer el servidor web NGINX.