Comment contrôler l'accès en fonction de l'adresse IP du client dans Nginx

Comment contrôler l'accès en fonction de l'adresse IP du client dans Nginx

Il existe plusieurs façons de durcissant la sécurité du serveur Web Nginx, dont l'un est un contrôle d'accès en fonction de l'adresse IP. Ce guide explique comment sécuriser les applications Web en contrôlant l'accès en fonction de l'adresse IP d'un client dans Nginx.

Ce guide suppose que vous avez un serveur Web Nginx installé et en cours d'exécution, sinon consultez ces guides:

  • Comment installer le serveur Web Nginx sur Ubuntu
  • Comment installer nginx sur centos
  • Comment installer nginx sur Debian
  • Comment installer nginx sur rhel

Contrôler l'accès basé sur l'adresse IP du client dans Nginx

Le ngx_http_access_module Le module de Nginx permet de limiter l'accès à certaines adresses IP du client. Vous pouvez l'activer avec le permettre et refuser directives.

Le permettre La directive comme le nom implique permet d'accéder à une adresse IP spécifique, un réseau, un socket UNIX ou tout (mot-clé pour les entités précédentes) et le refuser La directive nie l'accès à une adresse IP spécifique, un réseau, un socket Unix ou tous.

Les deux directives sont valables dans le Http, serveur, emplacement ainsi que limit_except contexte. Voici un exemple d'utilisation du permettre et refuser directives au sein d'un emplacement Contexte pour restreindre l'accès à un service API:

APP_API en amont keepalive 100; serveur 10.1.1.50: 5000; serveur 10.1.1.71: 5001;  Server écouter 80; nom du serveur _; Access_log / var / log / nginx / app_api_access.journal principal; error_log / var / log / nginx / app_api_error.Débogue logarithmique; root / usr / share / nginx / html /; emplacement / try_files $ uri / api;  emplacement / api proxy_read_timeout 3600; proxy_connect_timeout 3600s; keepalive_timeout 15; send_timeout 300; proxy_set_header x-Forwarded-for $ proxy_add_x_forwarded_for; proxy_set_header x-forwarded-proto $ schéma; proxy_set_header host $ http_host; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_pass http: // app_api $ request_uri; # liste des IP autorisés à accéder à l'API Autoriser 10.dix.dix.20; Autoriser 10.dix.40.29; Autoriser 192.168.2.23 Autoriser 192.168.dix.0/24; Nier tous;  

Dans l'exemple ci-dessus, toute demande d'accès à l'un des points de terminaison de l'API proxés est autorisé uniquement pour le dix.dix.dix.20, dix.dix.40.29, 192.168.2.23 Adresses IP, et n'importe laquelle de celles du 192.168.dix.0/24 réseau. Les demandes de toute autre adresse IP ou réseau ou socket de domaine Unix seront refusées.

Nginx répondra avec une erreur interdite 403 au client comme indiqué.

Erreur interdite de Nginx 403

Lorsque vous vérifiez le / var / log / nginx / app_api_error.enregistrer Journal d'erreur, vous trouverez des entrées comme celles indiquées dans la capture d'écran suivante:

# cat / var / log / nginx / app_api_error.débogage 
Vérifiez les journaux d'erreur Nginx

Pour plus de conseils de durcissement de la sécurité du serveur Web Nginx, consultez: le guide ultime pour sécuriser et durcir le serveur Web Nginx.