Kuinka määrittää HTTP-perustodennus Nginxissä


HTTP-perustodennus on suojausmekanismi, jolla rajoitetaan pääsyä verkkosivustollesi/sovellukseesi tai joihinkin sen osiin määrittämällä yksinkertainen käyttäjätunnus/salasana todennus. Sitä voidaan käyttää ensisijaisesti suojaamaan koko HTTP-palvelinta, yksittäisiä palvelinlohkoja (Apachen virtuaalisia isäntiä) tai sijaintilohkoja.

Lue myös: Nimi- ja IP-pohjaisten virtuaalipalvelinten (palvelinlohkojen) määrittäminen NGINX:n avulla

Kuten nimestä voi päätellä, se ei ole turvallinen tapa luottaa; sinun tulee käyttää sitä yhdessä muiden luotettavampien turvatoimien kanssa. Jos esimerkiksi verkkosovelluksesi toimii HTTP:llä, käyttäjätunnukset lähetetään pelkkänä tekstinä, joten kannattaa harkita HTTPS:n ottamista käyttöön.

Tämän oppaan tarkoituksena on auttaa sinua lisäämään pieni mutta hyödyllinen suojauskerros yksityisen tai etuoikeutetun sisällön suojaamiseksi verkkosovelluksissasi (kuten, mutta ei rajoittuen järjestelmänvalvojan puoleen). Voit myös estää pääsyn verkkosivustolle tai sovellukseen, joka on vielä kehitysvaiheessa.

Vaatimukset

  1. Asenna LEMP Stack CentOS/RHEL 7:ään
  2. Asenna LEMP Stack Ubuntuun/Debianiin

Luo HTTP-todennuskäyttäjätiedosto

Aloita luomalla tiedosto, joka tallentaa käyttäjänimi:salasana-parit. Käytämme tämän tiedoston luomiseen Apache HTTP Serverin htpasswd-apuohjelmaa.

Tarkista ensin, että apache2-utils tai httpd-tools, paketit, jotka tarjoavat htpasswd-apuohjelman, on asennettu järjestelmääsi. Muussa tapauksessa suorita asianmukainen komento jakelusi asentaaksesi sen:

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

Suorita seuraavaksi alla oleva htpasswd-komento luodaksesi salasanatiedoston ensimmäisen käyttäjän kanssa. -c-vaihtoehtoa käytetään passwd-tiedoston määrittämiseen. Kun painat [Enter], sinua pyydetään antamaan käyttäjän salasana.

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

Lisää toinen käyttäjä äläkä käytä -c-vaihtoehtoa tässä.

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

Nyt kun salasanatiedosto on valmis, määritä verkkopalvelimesi osat, joihin haluat rajoittaa pääsyä. Voit tarkastella salasanatiedoston sisältöä (joka sisältää käyttäjätunnukset ja salatut salasanat) käyttämällä alla olevaa cat-komentoa.

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

Määritä HTTP-todennus Nginxille

Kuten aiemmin mainitsimme, voit rajoittaa pääsyä verkkopalvelimellesi, yksittäiselle web-sivustolle (käyttäen sen palvelinlohkoa) tai sijaintiohjeeseen. Tämän saavuttamiseksi voidaan käyttää kahta hyödyllistä direktiiviä.

  • auth_basic – ottaa käyttöön käyttäjänimen ja salasanan vahvistuksen käyttämällä HTTP Basic Authentication -protokollaa.
  • auth_basic_user_file – määrittää salasanatiedoston.

Salasanasuojaa Nginx Virtual Hosts

Ota käyttöön koko verkkopalvelimen perustodennus, joka koskee kaikkia palvelinlohkoja, avaamalla /etc/nginx/nginx.conf-tiedoston ja lisäämällä alla olevat rivit http-kontekstiin:

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

Salasanasuojaa Nginx-verkkosivusto tai verkkotunnus

Ota perustodennus käyttöön tietylle verkkotunnukselle tai aliverkkotunnukselle avaamalla sen määritystiedosto kohdassa /etc/nginx/conf.d/ tai /etc/nginx/conf/sites-available. (riippuen siitä, kuinka asensit Nginxin), lisää sitten alla olevat asetukset palvelinlohkoon tai kontekstiin:

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

Salasanasuojattu verkkohakemisto Nginxissä

Voit myös ottaa perustodennuksen käyttöön sijaintidirektiivissä. Alla olevassa esimerkissä kaikkia käyttäjiä, jotka yrittävät päästä /admin-sijaintilohkoon, pyydetään todentamaan.

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

Jos olet määrittänyt HTTP-perustodennuksen, kaikilta käyttäjiltä, jotka yrittävät käyttää verkkopalvelintasi tai aliverkkotunnusta tai tiettyä sivuston osaa (riippuen siitä, missä otit sen käyttöön), kysytään käyttäjätunnusta ja salasanaa alla olevan kuvakaappauksen mukaisesti. .

Jos käyttäjän todennus epäonnistuu, 401-valtuutus vaaditaan -virhe näytetään alla olevan kuvan mukaisesti.

Saat lisätietoja kohdasta Pääsyn rajoittaminen HTTP-perustodennuksen avulla.

Saatat myös haluta lukea nämä seuraavat hyödylliset Nginx HTTP -palvelimeen liittyvät oppaat.

  1. Kuinka suojata salasanalla verkkohakemistoja Nginxissä
  2. Lopullinen opas Nginxin turvaamiseen, vahvistamiseen ja suorituskyvyn parantamiseen
  3. HTTPS:n määrittäminen Let's Encrypt SSL-sertifikaatilla Nginxille

Tässä oppaassa näytimme, kuinka HTTP-perustodennus voidaan ottaa käyttöön Nginx HTTP -verkkopalvelimessa. Jos haluat esittää kysymyksiä, käytä alla olevaa palautelomaketta.