Cum se configurează autentificarea HTTP de bază în Nginx


Autentificarea HTTP de bază este un mecanism de securitate pentru a restricționa accesul la site-ul dvs. web/aplicația sau la unele părți ale acestuia, prin configurarea autentificării simple prin nume de utilizator/parolă. Poate fi folosit în esență pentru a proteja întregul server HTTP, blocurile de server individuale (gazde virtuale în Apache) sau blocurile de locație.

După cum sugerează și numele, nu este o metodă sigură pe care să te bazezi; ar trebui să-l utilizați împreună cu alte măsuri de securitate mai fiabile. De exemplu, dacă aplicația dvs. web rulează pe HTTP, atunci datele de conectare ale utilizatorului sunt transmise în text simplu, așa că ar trebui să luați în considerare activarea HTTPS.

Scopul acestui ghid este de a vă ajuta să adăugați un strat mic, dar util de securitate pentru a proteja conținutul privat/privilegiat din aplicațiile dvs. web (cum ar fi, dar fără a se limita la părțile de administrator). De asemenea, îl puteți folosi pentru a împiedica accesul la un site web sau la o aplicație care este încă în faza de dezvoltare.

Cerințe

  1. Instalați LEMP Stack în CentOS/RHEL 7
  2. Instalați LEMP Stack în Ubuntu/Debian

Creați fișierul utilizator de autentificare HTTP

Ar trebui să începeți prin a crea un fișier care va stoca perechi nume utilizator:parolă. Vom folosi utilitarul htpasswd de la Apache HTTP Server pentru a crea acest fișier.

Verificați mai întâi că apache2-utils sau httpd-tools, pachetele care oferă utilitarul htpasswd sunt instalate pe sistemul dvs., altfel rulați comanda corespunzătoare pentru distribuția dvs. pentru a o instala:

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

Apoi, rulați comanda htpasswd de mai jos pentru a crea fișierul de parolă cu primul utilizator. Opțiunea -c este folosită pentru a specifica fișierul passwd, odată ce apăsați pe [Enter], vi se va cere să introduceți parola de utilizator.

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

Adăugați un al doilea utilizator și nu utilizați opțiunea -c aici.

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

Acum că aveți gata fișierul cu parole, continuați să configurați părțile serverului dvs. web la care doriți să restricționați accesul. Pentru a vizualiza conținutul fișierului cu parole (care include nume de utilizator și parole criptate), utilizați comanda cat de mai jos.

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

Configurați autentificarea HTTP pentru Nginx

După cum am menționat mai devreme, puteți restricționa accesul la serverul dvs. web, la un singur site web (folosind blocul de server) sau la o directivă de locație. Două directive utile pot fi folosite pentru a realiza acest lucru.

  • auth_basic – activează validarea numelui de utilizator și a parolei utilizând protocolul „Autentificare de bază HTTP”.
  • auth_basic_user_file – specifică fișierul cu parole.

Protejați cu parolă gazdele virtuale Nginx

Pentru a implementa autentificarea de bază pentru întregul server web, care se aplică tuturor blocurilor de server, deschideți fișierul /etc/nginx/nginx.conf și adăugați liniile de mai jos în contextul http:

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

Protejați cu parolă site-ul sau domeniul Nginx

Pentru a activa autentificarea de bază pentru un anumit domeniu sau subdomeniu, deschideți fișierul său de configurare sub /etc/nginx/conf.d/ sau /etc/nginx/conf/sites-available (în funcție de modul în care ați instalat Nginx), apoi adăugați configurația de mai jos în blocul serverului sau context:

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

Director web protejat prin parolă în Nginx

De asemenea, puteți activa autentificarea de bază într-o directivă de locație. În exemplul de mai jos, tuturor utilizatorilor care încearcă să acceseze blocul de locație /admin li se va cere să se autentifice.

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

Dacă ați configurat autentificarea HTTP de bază, tuturor utilizatorilor care încearcă să vă acceseze serverul web sau un subdomeniu sau o anumită parte a unui site (în funcție de locul în care ați implementat-o), li se va cere un nume de utilizator și o parolă, așa cum se arată în captura de ecran de mai jos. .

În cazul în care autentificarea utilizatorului eșuează, va fi afișată o eroare „Este necesară autorizarea 401”, după cum se arată mai jos.

Puteți găsi mai multe informații la restricționarea accesului cu autentificarea HTTP de bază.

De asemenea, s-ar putea dori să citiți următoarele ghiduri utile legate de serverul HTTP Nginx.

  1. Cum se protejează cu parolă directoarele web în Nginx
  2. Ghidul suprem pentru a securiza, consolida și îmbunătăți performanța Nginx
  3. Configurarea HTTPS cu certificatul SSL Let’s Encrypt pentru Nginx

În acest ghid, am arătat cum să implementăm autentificarea HTTP de bază pe serverul web HTTP Nginx. Pentru a pune întrebări, utilizați formularul de feedback de mai jos.