Kaip sukonfigūruoti pagrindinį HTTP autentifikavimą „Nginx“.


Pagrindinis HTTP autentifikavimas yra saugos mechanizmas, skirtas apriboti prieigą prie jūsų svetainės/programos ar kai kurių jos dalių, nustatant paprastą vartotojo vardo/slaptažodžio autentifikavimą. Jis gali būti naudojamas iš esmės apsaugoti visą HTTP serverį, atskirus serverio blokus (virtualiuosius „Apache“ pagrindinius kompiuterius) arba vietos blokus.

Taip pat skaitykite: kaip nustatyti vardais ir IP pagrįstas virtualias prieglobas (serverio blokus) naudojant NGINX

Kaip rodo pavadinimas, tai nėra saugus metodas, kuriuo galima pasikliauti; turėtumėte jį naudoti kartu su kitomis patikimesnėmis apsaugos priemonėmis. Pavyzdžiui, jei jūsų žiniatinklio programa veikia naudojant HTTP, vartotojo kredencialai perduodami paprastu tekstu, todėl turėtumėte apsvarstyti galimybę įjungti HTTPS.

Šio vadovo tikslas – padėti jums pridėti nedidelį, bet naudingą saugos sluoksnį, kad būtų apsaugotas privatus/privilegijuotas žiniatinklio programų (pvz., administratoriaus pusės, bet tuo neapsiribojant) turinys. Taip pat galite jį naudoti norėdami užkirsti kelią prieigai prie svetainės ar programos, kuri vis dar tik kuriama.

Reikalavimai

  1. Įdiekite LEMP Stack į CentOS/RHEL 7
  2. Įdiekite LEMP Stack Ubuntu/Debian

Sukurkite HTTP autentifikavimo vartotojo failą

Pirmiausia turėtumėte sukurti failą, kuriame bus saugomos naudotojo vardas:slaptažodis poros. Šiam failui sukurti naudosime htpasswd iš Apache HTTP serverio.

Pirmiausia patikrinkite, ar apache2-utils arba httpd-tools, paketai, kurie teikia htpasswd paslaugų programą, yra įdiegti jūsų sistemoje, kitu atveju paleiskite atitinkamą komandą jūsų platinimas, kad jį įdiegtumėte:

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

Tada paleiskite toliau pateiktą komandą htpasswd, kad sukurtumėte slaptažodžio failą su pirmuoju vartotoju. Parinktis -c naudojama nurodyti passwd failą, kai paspausite [Enter], būsite paprašyti įvesti vartotojo slaptažodį.

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

Pridėkite antrą vartotoją ir čia nenaudokite parinkties -c.

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

Dabar, kai slaptažodžio failas yra paruoštas, konfigūruokite žiniatinklio serverio dalis, prie kurių norite apriboti prieigą. Norėdami peržiūrėti slaptažodžių failo turinį (įskaitant vartotojo vardus ir užšifruotus slaptažodžius), naudokite toliau pateiktą komandą cat.

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

Sukonfigūruokite „Nginx“ HTTP autentifikavimą

Kaip minėjome anksčiau, galite apriboti prieigą prie savo žiniatinklio serverio, vienos svetainės (naudodami jos serverio bloką) arba vietos nurodymą. Tam gali būti naudojamos dvi naudingos direktyvos.

  • auth_basic – įjungia vartotojo vardo ir slaptažodžio patvirtinimą naudojant „HTTP pagrindinio autentifikavimo“ protokolą.
  • auth_basic_user_file – nurodo slaptažodžio failą.

Apsaugokite Nginx virtualiuosius kompiuterius slaptažodžiu

Norėdami įdiegti pagrindinį viso žiniatinklio serverio autentifikavimą, kuris taikomas visiems serverio blokams, atidarykite failą /etc/nginx/nginx.conf ir pridėkite toliau pateiktas eilutes http kontekste:

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

Apsaugokite „Nginx“ svetainę arba domeną slaptažodžiu

Norėdami įgalinti pagrindinį konkretaus domeno ar padomenio autentifikavimą, atidarykite jo konfigūracijos failą /etc/nginx/conf.d/ arba /etc/nginx/conf/sites-available. (atsižvelgiant į tai, kaip įdiegėte Nginx), tada pridėkite toliau pateiktą konfigūraciją serverio bloke arba kontekste:

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

Slaptažodžio apsaugos žiniatinklio katalogas Nginx

Taip pat galite įjungti pagrindinį autentifikavimą pagal vietos nurodymą. Toliau pateiktame pavyzdyje visų vartotojų, bandančių pasiekti /admin vietos bloką, bus paprašyta autentifikuoti.

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

Jei sukonfigūravote pagrindinį HTTP autentifikavimą, visų vartotojų, kurie bando pasiekti jūsų žiniatinklio serverį arba padomenį arba konkrečią svetainės dalį (atsižvelgiant į tai, kur tai įdiegėte), bus paprašyta įvesti naudotojo vardą ir slaptažodį, kaip parodyta toliau esančioje ekrano kopijoje. .

Jei naudotojo autentifikavimas nepavyko, bus rodoma klaida „Reikia 401 prieigos teisės“, kaip parodyta toliau.

Galite rasti daugiau informacijos apie prieigos apribojimą naudojant pagrindinį HTTP autentifikavimą.

Taip pat galbūt norėsite perskaityti šiuos naudingus su Nginx HTTP serveriu susijusius vadovus.

  1. Kaip slaptažodžiu apsaugoti žiniatinklio katalogus Nginx
  2. Galutinis vadovas, kaip apsaugoti, sustiprinti ir pagerinti Nginx veikimą
  3. HTTPS nustatymas naudojant „Nginx“ SSL sertifikatą

Šiame vadove parodėme, kaip Nginx HTTP žiniatinklio serveryje įdiegti pagrindinį HTTP autentifikavimą. Jei norite užduoti klausimų, naudokite toliau pateiktą atsiliepimų formą.