Kako konfigurirati osnovnu HTTP autentifikaciju u Nginxu


Osnovna HTTP autentifikacija je sigurnosni mehanizam za ograničavanje pristupa vašoj web stranici/aplikaciji ili nekim njenim dijelovima postavljanjem jednostavne provjere autentičnosti korisničkog imena/lozinke. Može se koristiti u suštini za zaštitu cijelog HTTP servera, pojedinačnih blokova servera (virtuelni hostovi u Apacheu) ili lokacijskih blokova.

Pročitajte također: Kako podesiti virtuelne hostove zasnovane na nazivu i IP (blokove servera) sa NGINX-om

Kao što ime sugerira, to nije siguran metod na koji se može osloniti; trebali biste ga koristiti zajedno s drugim pouzdanijim mjerama sigurnosti. Na primjer, ako vaša web aplikacija radi na HTTP-u, tada se korisnički akreditivi prenose u običnom tekstu, tako da biste trebali razmisliti o omogućavanju HTTPS-a.

Svrha ovog vodiča je da vam pomogne da dodate mali, ali koristan sloj sigurnosti za zaštitu privatnog/privilegiranog sadržaja na vašim web aplikacijama (kao što je, ali ne ograničavajući se na strane administratora). Također ga možete koristiti da spriječite pristup web stranici ili aplikaciji koja je još u fazi razvoja.

Zahtjevi

  1. Instalirajte LEMP Stack u CentOS/RHEL 7
  2. Instalirajte LEMP Stack u Ubuntu/Debian

Kreirajte korisnički fajl za HTTP autentifikaciju

Trebali biste početi kreiranjem datoteke koja će pohraniti parove korisničko ime:lozinka. Koristićemo htpasswd uslužni program sa Apache HTTP servera, da kreiramo ovu datoteku.

Prvo provjerite da li su apache2-utils ili httpd-tools, paketi koji pružaju htpasswd uslužni program instalirani na vašem sistemu, inače pokrenite odgovarajuću komandu za svoju distribuciju da ga instalirate:

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

Zatim pokrenite htpasswd naredbu ispod da kreirate datoteku lozinke sa prvim korisnikom. Opcija -c se koristi za određivanje passwd datoteke, nakon što pritisnete [Enter], od vas će se tražiti da unesete korisničku lozinku.

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

Dodajte drugog korisnika i ne koristite opciju -c ovdje.

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

Sada kada imate spreman fajl lozinke, nastavite da konfigurišete delove vašeg veb servera kojima želite da ograničite pristup. Za pregled sadržaja datoteke lozinki (koji uključuje korisnička imena i šifrirane lozinke), koristite cat komandu ispod.

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

Konfigurirajte HTTP autentifikaciju za Nginx

Kao što smo ranije spomenuli, možete ograničiti pristup vašem web serveru, jednoj web stranici (koristeći njen blok servera) ili direktivi lokacije. Za postizanje ovog cilja mogu se koristiti dvije korisne direktive.

  • auth_basic – uključuje provjeru valjanosti korisničkog imena i lozinke koristeći “HTTP Basic Authentication” protokol.
  • auth_basic_user_file – specificira datoteku lozinke.

Zaštitite Nginx virtuelne hostove lozinkom

Da implementirate osnovnu autentifikaciju za cijeli web server, koja se primjenjuje na sve blokove servera, otvorite datoteku /etc/nginx/nginx.conf i dodajte redove ispod u http kontekstu:

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

Zaštitite Nginx web lokaciju ili domenu lozinkom

Da omogućite osnovnu autentifikaciju za određenu domenu ili poddomenu, otvorite njenu konfiguracijsku datoteku pod /etc/nginx/conf.d/ ili /etc/nginx/conf/sites-available (ovisno o tome kako ste instalirali Nginx), a zatim dodajte konfiguraciju ispod u blok servera ili kontekst:

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

Zaštitite web imenik lozinkom u Nginxu

Također možete omogućiti osnovnu autentifikaciju unutar direktive lokacije. U primjeru ispod, svi korisnici koji pokušavaju pristupiti /admin bloku lokacije bit će zatraženo da se autentifikuju.

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

Ako ste konfigurirali osnovnu HTTP autentifikaciju, svi korisnici koji pokušaju pristupiti vašem web serveru ili poddomenu ili određenom dijelu web-mjesta (u zavisnosti od toga gdje ste ga implementirali), bit će zatraženo za korisničko ime i lozinku kao što je prikazano na slici ispod .

U slučaju neuspjele autentifikacije korisnika, prikazat će se greška “401 Autorizacija je potrebna” kao što je prikazano ispod.

Više informacija možete pronaći u ograničavanju pristupa s osnovnom HTTP autentifikacijom.

Možda biste željeli pročitati i ove korisne vodiče vezane za Nginx HTTP server.

  1. Kako zaštititi web imenike lozinkom u Nginxu
  2. Ultimativni vodič za osiguranje, ojačanje i poboljšanje performansi Nginxa
  3. Postavljanje HTTPS-a sa Let’s Encrypt SSL certifikatom za Nginx

U ovom vodiču smo pokazali kako implementirati osnovnu HTTP autentifikaciju u Nginx HTTP web server. Da biste postavili bilo kakva pitanja, koristite obrazac za povratne informacije u nastavku.