Giunsa Pagkontrol ang Pag-access Pinasukad sa Client IP Address sa NGINX


Adunay daghang mga paagi sa pagpagahi sa seguridad sa web server sa NGINX usa niini ang kontrol sa pag-access base sa IP address. Kini nga giya nagpatin-aw unsaon pag-secure sa mga aplikasyon sa web pinaagi sa pagkontrol sa pag-access base sa IP address sa kliyente sa NGINX.

Kini nga giya nagtuo nga ikaw adunay NGINX web server nga na-install ug nagdagan, kung dili, tan-awa kini nga mga giya:

  • Unsaon Pag-instalar sa Nginx Web Server sa Ubuntu
  • Unsaon Pag-instalar sa Nginx sa CentOS
  • Unsaon Pag-instalar sa Nginx sa Debian
  • Unsaon Pag-instalar sa Nginx sa RHEL

Control Access Base sa Client IP Address sa NGINX

Ang ngx_http_access_module module sa NGINX makapahimo sa paglimite sa pag-access sa pipila ka mga adres sa IP sa kliyente. Mahimo nimo kini ma-aktibo gamit ang pagtugot ug pagdumili sa mga direktiba.

Ang pagtugot nga direktiba sumala sa gipasabot sa ngalan nagtugot sa pag-access alang sa usa ka piho nga IP address, network, Unix socket, o tanan (keyword alang sa nangaging mga entidad), ug ang deny nga direktiba nagdumili sa pag-access alang sa usa ka piho nga IP address, network, Unix socket, o tanan.

Ang duha ka direktiba balido sa HTTP, server, lokasyon ingon man limit_except konteksto. Ania ang usa ka pananglitan sa paggamit sa pagtugot ug pagdumili sa mga direktiba sulod sa konteksto sa lokasyon aron mapugngan ang pag-access sa usa ka serbisyo sa API:

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;
    }
}

Sa pananglitan sa ibabaw, ang bisan unsang hangyo nga ma-access ang bisan unsang mga proxied nga mga endpoint sa API gitugotan lamang alang sa 10.10.10.20, 10.10.40.29, 192.168.2.23 nga mga adres sa IP, ug bisan kinsa sa mga adres sa 192.168.10.0/24. Ang mga hangyo gikan sa bisan unsang lain nga IP address o network o UNIX-domain socket ipanghimakak.

Ang NGINX motubag sa usa ka 403 nga gidili nga sayup sa kliyente sama sa gipakita.

Kung imong susihon ang /var/log/nginx/app_api_error.log error log, makit-an nimo ang mga entry sama sa gipakita sa mosunod nga screenshot:

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

Para sa dugang nga NGINX web server security hardening tips, susiha: Ang Ultimate Guide to Secure and Harden Nginx Web Server.