Kako konfigurirati osnovnu HTTP autentifikaciju u Nginxu


Osnovna HTTP autentifikacija je sigurnosni mehanizam za ograničavanje pristupa vašoj web stranici/aplikaciji ili nekim njezinim dijelovima postavljanjem jednostavne autentifikacije korisničkim imenom/lozinkom. Može se koristiti u osnovi za zaštitu cijelog HTTP poslužitelja, pojedinačnih blokova poslužitelja (virtualni hostovi u Apacheu) ili blokova lokacije.

Pročitajte također: Kako postaviti virtualne hostove temeljene na nazivu i IP-u (blokove poslužitelja) s NGINX-om

Kao što naziv sugerira, to nije sigurna metoda na koju se možete osloniti; trebali biste ga koristiti u kombinaciji s drugim pouzdanijim sigurnosnim mjerama. Na primjer, ako vaša web-aplikacija radi na HTTP-u, tada se korisničke vjerodajnice prenose u obliku običnog teksta, pa biste trebali razmisliti o omogućavanju HTTPS-a.

Svrha ovog vodiča je pomoći vam dodati mali, ali koristan sloj sigurnosti za zaštitu privatnog/privilegiranog sadržaja na vašim web aplikacijama (kao što su, ali ne ograničavajući se na strane administratora). Također ga možete koristiti za sprječavanje pristupa 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

Stvorite korisničku datoteku HTTP autentifikacije

Trebali biste početi stvaranjem datoteke koja će pohraniti parove username:password. Koristit ćemo htpasswd pomoćni program s Apache HTTP poslužitelja za izradu ove datoteke.

Prvo provjerite jesu li apache2-utils ili httpd-tools, paketi koji pružaju htpasswd uslužni program, instalirani na vašem sustavu, inače pokrenite odgovarajuću naredbu za svoju distribuciju za instalaciju:

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

Zatim pokrenite naredbu htpasswd u nastavku da biste stvorili datoteku zaporke s prvim korisnikom. Opcija -c koristi se 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 nemojte ovdje koristiti opciju -c.

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

Sada kada ste pripremili datoteku zaporke, nastavite s konfiguriranjem dijelova vašeg web poslužitelja kojima želite ograničiti pristup. Za pregled sadržaja datoteke zaporke (koja uključuje korisnička imena i šifrirane zaporke), upotrijebite donju naredbu cat.

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

Konfigurirajte HTTP autentifikaciju za Nginx

Kao što smo ranije spomenuli, možete ograničiti pristup svom web poslužitelju, jednoj web stranici (pomoću njezinog bloka poslužitelja) ili direktivi o lokaciji. Dvije korisne direktive mogu se koristiti da se to postigne.

  • auth_basic – uključuje provjeru valjanosti korisničkog imena i lozinke korištenjem “HTTP Basic Authentication” protokola.
  • auth_basic_user_file – navodi datoteku zaporke.

Zaštitite Nginx virtualne hostove lozinkom

Za implementaciju osnovne provjere autentičnosti za cijeli web poslužitelj, koja se odnosi na sve blokove poslužitelja, otvorite datoteku /etc/nginx/nginx.conf i dodajte donje retke u http kontekstu:

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

Zaštitite Nginx web stranicu ili domenu lozinkom

Da biste omogućili osnovnu autentifikaciju za određenu domenu ili poddomenu, otvorite njezinu konfiguracijsku datoteku pod /etc/nginx/conf.d/ ili /etc/nginx/conf/sites-available (ovisno o tome kako ste instalirali Nginx), zatim dodajte konfiguraciju u nastavku u blok poslužitelja 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 provjeru autentičnosti unutar direktive o lokaciji. U donjem primjeru, svi korisnici koji pokušavaju pristupiti bloku lokacije /admin bit će zamoljeni za autentifikaciju.

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 poslužitelju ili poddomeni ili određenom dijelu web stranice (ovisno o tome gdje ste to implementirali), bit će zatraženi za korisničko ime i lozinku kao što je prikazano na snimci zaslona u nastavku .

U slučaju neuspjele provjere autentičnosti korisnika, prikazat će se pogreška “Potrebna je autorizacija 401” kao što je prikazano u nastavku.

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

Također biste mogli pročitati sljedeće korisne vodiče koji se odnose na Nginx HTTP poslužitelj.

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

U ovom smo vodiču pokazali kako implementirati osnovnu HTTP autentifikaciju u Nginx HTTP web poslužitelju. Za postavljanje bilo kakvih pitanja upotrijebite obrazac za povratne informacije u nastavku.