Hvordan konfigurere grunnleggende HTTP-autentisering i Nginx


Grunnleggende HTTP-autentisering er en sikkerhetsmekanisme for å begrense tilgangen til nettstedet/applikasjonen eller noen deler av den ved å sette opp enkel brukernavn/passordautentisering. Den kan hovedsakelig brukes til å beskytte hele HTTP-serveren, individuelle serverblokker (virtuelle verter i Apache) eller lokasjonsblokker.

Som navnet antyder, er det ikke en sikker metode å stole på; du bør bruke den sammen med andre mer pålitelige sikkerhetstiltak. For eksempel, hvis nettapplikasjonen din kjører på HTTP, overføres brukerlegitimasjonen i ren tekst, så du bør vurdere å aktivere HTTPS.

Hensikten med denne veiledningen er å hjelpe deg å legge til et lite, men nyttig lag med sikkerhet for å beskytte privat/privilegert innhold på nettapplikasjonene dine (som, men ikke begrenset til administratorsidene). Du kan også bruke den til å hindre tilgang til en nettside eller applikasjon som fortsatt er i utviklingsfasen.

  1. Installer LEMP Stack i CentOS/RHEL 7
  2. Installer LEMP Stack i Ubuntu/Debian

Opprett brukerfil for HTTP-autentisering

Du bør starte med å lage en fil som vil lagre brukernavn:passord-par. Vi vil bruke htpasswd-verktøyet fra Apache HTTP Server for å lage denne filen.

Kontroller først at apache2-utils eller httpd-tools, pakkene som gir htpasswd-verktøyet er installert på systemet ditt, ellers kjør den riktige kommandoen for distribusjonen din for å installere den:

# yum install httpd-tools		[RHEL/CentOS]
$ sudo apt install apache2-utils	[Debian/Ubuntu]

Deretter kjører du htpasswd-kommandoen nedenfor for å lage passordfilen med den første brukeren. Alternativet -c brukes til å spesifisere passwd-filen, når du trykker på [Enter], vil du bli bedt om å skrive inn brukerpassordet.

# htpasswd -c /etc/nginx/conf.d/.htpasswd developer

Legg til en annen bruker, og ikke bruk -c-alternativet her.

# htpasswd /etc/nginx/conf.d/.htpasswd admin

Nå som du har passordfilen klar, fortsett å konfigurere delene av webserveren du vil begrense tilgangen til. For å se passordfilinnholdet (som inkluderer brukernavn og krypterte passord), bruk cat-kommandoen nedenfor.

# cat /etc/nginx/conf.d/.htpasswd 

Konfigurer HTTP-autentisering for Nginx

Som vi nevnte tidligere, kan du begrense tilgangen til webserveren din, et enkelt nettsted (ved å bruke serverblokken) eller et stedsdirektiv. To nyttige direktiver kan brukes for å oppnå dette.

  • auth_basic – slår på validering av brukernavn og passord ved hjelp av «HTTP Basic Authentication»-protokollen.
  • auth_basic_user_file – spesifiserer passordfilen.

For å implementere grunnleggende autentisering for hele webserveren, som gjelder for alle serverblokker, åpner du filen /etc/nginx/nginx.conf og legger til linjene nedenfor i http-konteksten:

http{
	auth_basic           "Restricted Access!";
    	auth_basic_user_file /etc/nginx/conf.d/.htpasswd; 
	……...
}

For å aktivere grunnleggende autentisering for et bestemt domene eller underdomene, åpne konfigurasjonsfilen under /etc/nginx/conf.d/ eller /etc/nginx/conf/sites-available (avhengig av hvordan du installerte Nginx), og legg deretter til konfigurasjon nedenfor i serverblokk eller kontekst:

server {
	listen 			80;
	server_name    	  example.com;
	auth_basic           	"Restricted Access!";
    	auth_basic_user_file 	/etc/nginx/conf.d/.htpasswd; 
	location /  {
		……..
	}
	……...
}

Du kan også aktivere grunnleggende autentisering innenfor et stedsdirektiv. I eksemplet nedenfor vil alle brukere som prøver å få tilgang til /admin-lokasjonsblokken bli bedt om å autentisere.

server {
	listen 			80;
	server_name    	example.com www.example.com;
	
	location / {
		……..
	}
	location /admin/ {
		auth_basic           	"Restricted Access!";
    		auth_basic_user_file 	/etc/nginx/conf.d/.htpasswd; 
	}

	location /public/{
		auth_basic  off;	#turns off basic http authentication off for this block
	}
	……..
}

Hvis du har konfigurert grunnleggende HTTP-autentisering, vil alle brukere som prøver å få tilgang til webserveren din eller et underdomene eller en spesifikk del av et nettsted (avhengig av hvor du implementerte det), bli bedt om et brukernavn og passord som vist i skjermbildet nedenfor .

I tilfelle en mislykket brukerautentisering, vil en \401 Authorization Required-feil vises som vist nedenfor.

Du finner mer informasjon under begrense tilgang med grunnleggende HTTP-autentisering.

Du vil kanskje også lese disse følgende nyttige Nginx HTTP-serverrelaterte guider.

  1. Hvordan passordbeskytte nettkataloger i Nginx
  2. Den ultimate guiden for å sikre, herde og forbedre ytelsen til Nginx
  3. Sett opp HTTPS med Let's Encrypt SSL-sertifikat for Nginx

I denne veiledningen viste vi hvordan du implementerer grunnleggende HTTP-autentisering i Nginx HTTP-nettserver. For å stille spørsmål, bruk tilbakemeldingsskjemaet nedenfor.