Zoeken op website

Hoe basis-HTTP-authenticatie in Nginx te configureren


Basis-HTTP-authenticatie is een beveiligingsmechanisme om de toegang tot uw website/applicatie of bepaalde delen ervan te beperken door eenvoudige gebruikersnaam-/wachtwoordauthenticatie in te stellen. Het kan hoofdzakelijk worden gebruikt om de hele HTTP-server, individuele serverblokken (virtuele hosts in Apache) of locatieblokken te beschermen.

Lees ook: hoe u op naam en IP gebaseerde virtuele hosts (serverblokken) kunt instellen met NGINX

Zoals de naam al doet vermoeden, is het geen veilige methode om op te vertrouwen; u moet het gebruiken in combinatie met andere, betrouwbaardere beveiligingsmaatregelen. Als uw webapplicatie bijvoorbeeld op HTTP draait, worden de gebruikersgegevens in platte tekst verzonden. Overweeg dus om HTTPS in te schakelen.

Het doel van deze handleiding is om u te helpen een kleine maar nuttige beveiligingslaag toe te voegen om privé-/bevoorrechte inhoud op uw webapplicaties te beschermen (zoals, maar niet beperkt tot, beheerderskanten). U kunt het ook gebruiken om de toegang tot een website of applicatie die zich nog in de ontwikkelingsfase bevindt, te voorkomen.

Vereisten

  1. Installeer LEMP-stack in CentOS/RHEL 7
  2. Installeer LEMP-stack in Ubuntu/Debian

Maak een HTTP-authenticatiegebruikersbestand

U moet beginnen met het maken van een bestand waarin gebruikersnaam:wachtwoord-paren worden opgeslagen. We zullen het hulpprogramma htpasswd van Apache HTTP Server gebruiken om dit bestand te maken.

Controleer eerst of apache2-utils of httpd-tools, de pakketten die het hulpprogramma htpasswd bieden, op uw systeem zijn geïnstalleerd. Voer anders de juiste opdracht uit uw distributie om het te installeren:

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

Voer vervolgens de onderstaande opdracht htpasswd uit om het wachtwoordbestand met de eerste gebruiker te maken. De optie -c wordt gebruikt om het passwd-bestand op te geven. Zodra u op [Enter] drukt, wordt u gevraagd het gebruikerswachtwoord in te voeren.

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

Voeg een tweede gebruiker toe en gebruik hier niet de -c optie.

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

Nu u het wachtwoordbestand bij de hand heeft, gaat u verder met het configureren van de delen van uw webserver waartoe u de toegang wilt beperken. Om de inhoud van het wachtwoordbestand (inclusief gebruikersnamen en gecodeerde wachtwoorden) te bekijken, gebruikt u de cat-opdracht hieronder.

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

Configureer HTTP-authenticatie voor Nginx

Zoals we eerder vermeldden, kunt u de toegang tot uw webserver, een enkele website (met behulp van het serverblok) of een locatierichtlijn beperken. Om dit te bereiken kunnen twee nuttige richtlijnen worden gebruikt.

  • auth_basic – schakelt de validatie van gebruikersnaam en wachtwoord in met behulp van het “HTTP Basic Authentication”-protocol.
  • auth_basic_user_file – specificeert het wachtwoordbestand.

Wachtwoordbeveiliging Nginx virtuele hosts

Om basisauthenticatie voor de hele webserver te implementeren, die van toepassing is op alle serverblokken, opent u het bestand /etc/nginx/nginx.conf en voegt u de onderstaande regels toe in de http-context:

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

Wachtwoordbeveiliging Nginx-website of domein

Om basisauthenticatie voor een bepaald domein of subdomein in te schakelen, opent u het configuratiebestand ervan onder /etc/nginx/conf.d/ of /etc/nginx/conf/sites-available (afhankelijk van hoe je Nginx hebt geïnstalleerd) en voeg vervolgens de onderstaande configuratie toe in serverblok of context:

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

Wachtwoordbeveiligde webdirectory in Nginx

U kunt ook basisauthenticatie inschakelen binnen een locatierichtlijn. In het onderstaande voorbeeld wordt aan alle gebruikers die toegang proberen te krijgen tot het locatieblok /admin gevraagd om zich te authenticeren.

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

Als u basis-HTTP-authenticatie heeft geconfigureerd, wordt aan alle gebruikers die proberen toegang te krijgen tot uw webserver of een subdomein of een specifiek deel van een site (afhankelijk van waar u dit heeft geïmplementeerd) om een gebruikersnaam en wachtwoord gevraagd, zoals weergegeven in de onderstaande schermafbeelding .

In het geval van een mislukte gebruikersauthenticatie wordt de foutmelding “401 Autorisatie vereist” weergegeven, zoals hieronder weergegeven.

Meer informatie vindt u op Toegang beperken met basis-HTTP-authenticatie.

Misschien wilt u ook deze volgende nuttige Nginx HTTP-servergerelateerde handleidingen lezen.

  1. Hoe u webmappen met een wachtwoord kunt beveiligen in Nginx
  2. De ultieme gids voor het beveiligen, versterken en verbeteren van de prestaties van Nginx
  3. HTTPS instellen met Let's Encrypt SSL-certificaat voor Nginx

In deze handleiding hebben we laten zien hoe u basis-HTTP-authenticatie kunt implementeren in de Nginx HTTP-webserver. Als u vragen heeft, kunt u het onderstaande feedbackformulier gebruiken.