Hvernig á að stilla grunn HTTP auðkenningu í Nginx


Grunn HTTP auðkenning er öryggiskerfi til að takmarka aðgang að vefsíðunni þinni/forriti eða sumum hlutum hennar með því að setja upp einfalda auðkenningu notandanafns/lykilorðs. Það er hægt að nota í meginatriðum til að vernda allan HTTP netþjóninn, einstaka netþjónablokkir (sýndarhýsingar í Apache) eða staðsetningarblokkir.

Eins og nafnið gefur til kynna er það ekki örugg aðferð til að treysta á; þú ættir að nota það í tengslum við aðrar áreiðanlegri öryggisráðstafanir. Til dæmis, ef vefforritið þitt keyrir á HTTP, þá eru notendaskilríki send í venjulegum texta, svo þú ættir að íhuga að virkja HTTPS.

Tilgangur þessarar handbókar er að hjálpa þér að bæta við litlu en gagnlegu öryggislagi til að vernda einka-/forréttindaefni á vefforritum þínum (svo sem en ekki takmarkað við stjórnandahliðar). Þú getur líka notað það til að koma í veg fyrir aðgang að vefsíðu eða forriti sem er enn á þróunarstigi.

  1. Settu upp LEMP Stack í CentOS/RHEL 7
  2. Settu upp LEMP Stack í Ubuntu/Debian

Búðu til HTTP Authentication User File

Þú ættir að byrja á því að búa til skrá sem mun geyma notandanafn:lykilorð pör. Við munum nota htpasswd tólið frá Apache HTTP Server, til að búa til þessa skrá.

Athugaðu fyrst að apache2-utils eða httpd-tools, pakkarnir sem veita htpasswd gagnsemi eru settir upp á vélinni þinni, annars keyrðu viðeigandi skipun fyrir dreifingu þína til að setja það upp:

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

Næst skaltu keyra htpasswd skipunina hér að neðan til að búa til lykilorðsskrána með fyrsta notandanum. Valmöguleikinn -c er notaður til að tilgreina passwd skrána, þegar þú ýtir á [Enter] verðurðu beðinn um að slá inn lykilorð notanda.

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

Bættu við öðrum notanda og ekki nota -c valkostinn hér.

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

Nú þegar þú ert með lykilorðaskrána tilbúna skaltu halda áfram að stilla þá hluta vefþjónsins sem þú vilt takmarka aðgang að. Til að skoða innihald lykilorðaskrárinnar (sem inniheldur notendanöfn og dulkóðuð lykilorð) skaltu nota köttaskipunina hér að neðan.

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

Stilltu HTTP auðkenningu fyrir Nginx

Eins og við nefndum áðan geturðu takmarkað aðgang að vefþjóninum þínum, einni vefsíðu (með því að nota netþjónablokk þess) eða staðsetningartilskipun. Hægt er að nota tvær gagnlegar tilskipanir til að ná þessu.

  • auth_basic – kveikir á staðfestingu á notendanafni og lykilorði með því að nota \HTTP Basic Authentication samskiptareglur.
  • auth_basic_user_file – tilgreinir lykilorðsskrána.

Til að innleiða grunnauðkenningu fyrir allan vefþjóninn, sem á við um allar netþjónablokkir, opnaðu /etc/nginx/nginx.conf skrána og bættu við línunum hér að neðan í http samhenginu:

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

Til að virkja grunnauðkenningu fyrir tiltekið lén eða undirlén skaltu opna stillingarskrá þess undir /etc/nginx/conf.d/ eða /etc/nginx/conf/sites-available (fer eftir því hvernig þú settir upp Nginx), bættu síðan við stillingar hér að neðan í miðlarablokk eða samhengi:

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

Þú getur líka virkjað grunnauðkenningu innan staðsetningartilskipunar. Í dæminu hér að neðan verða allir notendur sem reyna að fá aðgang að /admin staðsetningarblokkinni beðnir um að auðkenna.

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
	}
	……..
}

Ef þú hefur stillt grunn HTTP auðkenningu verða allir notendur sem reyna að fá aðgang að vefþjóninum þínum eða undirléni eða tilteknum hluta vefsvæðis (eftir því hvar þú innleiddir það) beðnir um notandanafn og lykilorð eins og sýnt er á skjámyndinni hér að neðan .

Ef um misheppnaða auðkenningu notenda er að ræða mun villa „401 heimild krafist“ birtast eins og sýnt er hér að neðan.

Þú getur fundið frekari upplýsingar á því að takmarka aðgang með Basic HTTP Authentication.

Þú gætir líka viljað lesa þessar eftirfarandi gagnlegu leiðbeiningar sem tengjast Nginx HTTP netþjóni.

  1. Hvernig á að vernda vefskrár með lykilorði í Nginx
  2. Fullkominn leiðarvísir til að tryggja, herða og bæta árangur Nginx
  3. Setja upp HTTPS með Let's Encrypt SSL Certificate For Nginx

Í þessari handbók sýndum við hvernig á að innleiða grunn HTTP auðkenningu á Nginx HTTP vefþjóni. Til að spyrja spurninga, notaðu athugasemdareyðublaðið hér að neðan.