Slik kontrollerer du tilgang basert på klientens IP-adresse i NGINX
Det er flere måter å styrke NGINX-nettserversikkerheten på, hvorav én er tilgangskontroll basert på IP-adresse. Denne veiledningen forklarer hvordan du sikrer nettapplikasjoner ved å kontrollere tilgang basert på en klients IP-adresse i NGINX.
Denne veiledningen forutsetter at du har en NGINX-webserver installert og kjører, ellers kan du sjekke ut disse veiledningene:
- Hvordan installere Nginx Web Server på Ubuntu
- Hvordan installere Nginx på CentOS
- Hvordan installere Nginx på Debian
- Hvordan installere Nginx på RHEL
Kontroller tilgang basert på klientens IP-adresse i NGINX
ngx_http_access_module-modulen i NGINX gjør det mulig å begrense tilgangen til visse klient-IP-adresser. Du kan aktivere den med tillat- og avslå-direktivene.
allow-direktivet som navnet tilsier tillater tilgang for en spesifikk IP-adresse, nettverk, Unix-socket eller alle (søkeord for de tidligere enhetene), og nekt-direktivet nekter tilgang for en spesifikk IP-adresse, nettverk, Unix-kontakt eller alt.
Begge direktivene er gyldige i HTTP-, server-, plasserings- og limit_except-konteksten. Her er et eksempel på bruk av tillat og nekt-direktivene innenfor en sted-kontekst for å begrense tilgangen til en API-tjeneste:
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;
}
}
I eksemplet ovenfor er enhver forespørsel om tilgang til noen av de proxyede API-endepunktene kun tillatt for 10.10.10.20, 10.10.40.29, 192.168.2.23 IP-adresser, og hvilken som helst av de i 192.168.10.0/24-nettverket. Forespørsler fra enhver annen IP-adresse eller nettverk eller UNIX-domenekontakt vil bli avvist.
NGINX vil svare med en 403 forbudt feil til klienten som vist.
Når du sjekker /var/log/nginx/app_api_error.log feilloggen, vil du finne oppføringer som de som vises i følgende skjermbilde:
cat /var/log/nginx/app_api_error.log debug
For flere NGINX-nettserversikkerhetstips, sjekk ut: The Ultimate Guide to Secure and Harden Nginx Web Server.