Wéi konfiguréieren Dir Basis HTTP Authentifikatioun an Nginx


Basis HTTP Authentifikatioun ass e Sécherheetsmechanismus fir den Zougang zu Ärer Websäit/Applikatioun oder e puer Deeler dovun ze beschränken andeems Dir einfach Benotzernumm/Passwuert Authentifikatioun opstellt. Et kann am Wesentlechen benotzt ginn fir de ganzen HTTP-Server, eenzel Serverblocken (virtuell Hosten an Apache) oder Standortblocken ze schützen.

Wéi den Numm et scho seet, ass et keng sécher Method fir op ze vertrauen; Dir sollt et a Verbindung mat anere méi zouverlässeg Sécherheetsmoossnamen benotzen. Zum Beispill, wann Är Webapplikatioun op HTTP leeft, da ginn d'Benotzer Umeldungsinformatiounen am Kloertext iwwerdroen, sou datt Dir sollt iwwerleeën HTTPS z'aktivéieren.

Den Zweck vun dësem Guide ass Iech ze hëllefen eng kleng awer nëtzlech Schicht vu Sécherheet ze addéieren fir privaten/privilegiéierten Inhalter op Äre Webapplikatiounen ze schützen (wéi, awer net limitéiert op Administrator Säiten). Dir kënnt et och benotze fir Zougang zu enger Websäit oder Applikatioun ze verhënneren, déi nach an der Entwécklungsphase ass.

  1. Installéiert LEMP Stack an CentOS/RHEL 7
  2. Installéiert LEMP Stack an Ubuntu/Debian

Erstellt HTTP Authentifikatioun Benotzerdatei

Dir sollt ufänken andeems Dir e Fichier erstellt deen Benotzernumm:Passwuert Pairen späichert. Mir benotzen den htpasswd Utility vum Apache HTTP Server, fir dës Datei ze kreéieren.

Préift als éischt datt apache2-utils oder httpd-Tools, d'Packagen déi htpasswd Utility ubidden, op Ärem System installéiert sinn, soss lafen de passende Kommando fir Är Verdeelung fir se z'installéieren:

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

Als nächst, lafen htpasswd Kommando ënnen fir d'Passwuertdatei mam éischte Benotzer ze kreéieren. D'Optioun -c gëtt benotzt fir d'passwd Datei ze spezifizéieren, wann Dir op [Enter] klickt, gitt Dir gefrot fir d'Benotzerpasswuert anzeginn.

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

Füügt en zweete Benotzer un, a benotzt hei net d'Optioun -c.

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

Elo datt Dir d'Passwuertdatei fäerdeg hutt, fuert weider fir d'Deeler vun Ärem Webserver ze konfiguréieren op déi Dir den Zougang beschränke wëllt. Fir de Passwuertdatei Inhalt ze gesinn (deen Benotzernimm a verschlësselte Passwierder enthält), benotzt de Cat Kommando hei ënnen.

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

Konfiguréieren HTTP Authentifikatioun fir Nginx

Wéi mir virdru scho gesot hunn, kënnt Dir den Zougang zu Ärem Webserver limitéieren, eng eenzeg Websäit (mat sengem Serverblock) oder eng Standuertdirektiv. Zwee nëtzlech Direktiven kënne benotzt ginn fir dëst z'erreechen.

  • auth_basic - aktivéiert d'Validatioun vum Benotzernumm a Passwuert mat dem \HTTP Basic Authentication Protokoll.
  • auth_basic_user_file – spezifizéiert d'Passwuertdatei.

Fir d'Basis Authentifikatioun fir de ganze Webserver ëmzesetzen, wat fir all Serverblocken gëlt, öffnen d' /etc/nginx/nginx.conf Datei a füügt d'Linnen hei ënnen am http Kontext:

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

Fir d'Basis Authentifikatioun fir e bestëmmten Domain oder Sub-Domain z'aktivéieren, öffnen seng Konfiguratiounsdatei ënner /etc/nginx/conf.d/ oder /etc/nginx/conf/sites-available (je no wéi Dir Nginx installéiert hutt), füügt dann de Konfiguratioun hei ënnen am Serverblock oder Kontext:

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

Dir kënnt och Basis Authentifikatioun bannent enger Standuert Direktiv aktivéieren. Am Beispill hei drënner ginn all Benotzer, déi probéieren op de /admin Location Block ze kommen, gefrot fir ze authentifizéieren.

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

Wann Dir d'Basis HTTP Authentifikatioun konfiguréiert hutt, gëtt all Benotzer, dee probéiert op Äre Webserver oder e Sub-Domain oder spezifeschen Deel vun enger Säit ze kommen (je no wou Dir se implementéiert hutt), fir e Benotzernumm a Passwuert gefrot wéi am Screenshot hei ënnendrënner. .

Am Fall vun enger gescheitert Benotzer Authentifikatioun, gëtt e 401 Autorisatioun erfuerderlech Feeler ugewisen wéi hei ënnendrënner.

Dir fannt méi Informatioun beim Aschränkung vum Zougang mat Basis HTTP Authentifikatioun.

Dir kënnt och gären dës folgend nëtzlech Nginx HTTP Server verbonne Guiden liesen.

  1. Wéi Passwuert schützt Web Verzeechnes an Nginx
  2. Den Ultimate Guide fir d'Performance vun Nginx ze sécheren, härden an ze verbesseren
  3. HTTPS opsetzen mat Let's Encrypt SSL Certificate For Nginx

An dësem Guide hu mir gewisen wéi Dir Basis HTTP Authentifikatioun am Nginx HTTP Webserver implementéiere kënnt. Fir Froen ze stellen, benotzt de Feedbackformular hei ënnen.