Kuinka hallita pääsyä asiakkaan IP-osoitteen perusteella NGINX:ssä


On olemassa useita tapoja NGINX-verkkopalvelimen turvallisuuden vahvistamiseen, joista yksi on IP-osoitteeseen perustuva pääsynhallinta. Tämä opas selittää, kuinka suojata verkkosovelluksia hallitsemalla pääsyä asiakkaan IP-osoitteen perusteella NGINX:ssä.

Tässä oppaassa oletetaan, että NGINX-verkkopalvelin on asennettu ja käynnissä. Muussa tapauksessa tutustu näihin oppaisiin:

  • Kuinka asentaa Nginx Web Server Ubuntuun
  • Kuinka asentaa Nginx CentOS:ään
  • Kuinka asentaa Nginx Debianiin
  • Kuinka asentaa Nginx RHEL:ään

Hallitse pääsyä asiakkaan IP-osoitteen perusteella NGINX:ssä

NGINX:n ngx_http_access_module-moduuli mahdollistaa pääsyn rajoittamisen tiettyihin asiakkaiden IP-osoitteisiin. Voit aktivoida sen allow- ja deny-komennoilla.

allow-direktiivi, kuten nimestä voi päätellä, sallii pääsyn tietylle IP-osoitteelle, verkolle, Unix-pistorasialle tai kaikille (avainsana aiemmille entiteeteille), ja kieltäy-direktiivi estää pääsyn. tietylle IP-osoitteelle, verkolle, Unix-pistorasialle tai kaikille.

Molemmat direktiivit ovat voimassa HTTP-, palvelin-, sijainti- ja limit_except-kontekstissa. Tässä on esimerkki allow- ja deny-käskyjen käytöstä sijaintikontekstissa rajoittamaan pääsyä API-palveluun:

upstream app_api {
	keepalive 100;
	server 10.1.1.50:5000;
	server 10.1.1.71:5001;
}
server {
    listen 80;
    server_name _;
    access_log /var/log/nginx/app_api_access.log main;
    error_log /var/log/nginx/app_api_error.log debug;
    root /usr/share/nginx/html/;    
    location / {
        try_files $uri /api;
    }
    location /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 $scheme;
            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;
	
	#list of allowed IPs to access API
	allow 10.10.10.20;
	allow 10.10.40.29;
	allow 192.168.2.23;  
	allow 192.168.10.0/24;
   	deny  all;
    }
}

Yllä olevassa esimerkissä kaikki välityspalvelimen API-päätepisteiden käyttöpyynnöt sallitaan vain seuraaville: 10.10.10.20, 10.10.40.29, 192.168.2.23. IP-osoitteet ja mitkä tahansa 192.168.10.0/24-verkon osoitteet. Pyynnöt mistä tahansa muusta IP-osoitteesta tai verkosta tai UNIX-verkkotunnuksen pistokkeesta hylätään.

NGINX vastaa asiakkaalle 403 kielletyllä virheellä kuvan osoittamalla tavalla.

Kun tarkistat /var/log/nginx/app_api_error.log-virhelokin, löydät seuraavan kuvakaappauksen kaltaisia merkintöjä:

cat /var/log/nginx/app_api_error.log debug

Lisää vinkkejä NGINX-verkkopalvelimen tietoturvan vahvistamiseen on artikkelissa Ultimate Guide to Secure and Harden Nginx Web Server.