Weboldal keresés

Az alapvető HTTP-hitelesítés konfigurálása az Nginxben


Az alapvető HTTP-hitelesítés egy olyan biztonsági mechanizmus, amely egyszerű felhasználónév/jelszó hitelesítés beállításával korlátozza a hozzáférést a webhelyhez/alkalmazáshoz vagy annak egyes részeihez. Alapvetően a teljes HTTP-kiszolgáló, az egyes szerverblokkok (virtuális gazdagépek az Apache-ban) vagy a helyblokkok védelmére használható.

Olvassa el még: Név- és IP-alapú virtuális gazdagépek (szerverblokkok) beállítása az NGINX segítségével

Ahogy a neve is sugallja, ez nem egy biztonságos módszer, amelyre támaszkodhat; más megbízhatóbb biztonsági intézkedésekkel együtt kell használnia. Például, ha webalkalmazása HTTP-n fut, akkor a felhasználói hitelesítő adatok sima szövegben kerülnek továbbításra, ezért érdemes megfontolni a HTTPS engedélyezését.

Ennek az útmutatónak az a célja, hogy segítsen hozzáadni egy kicsi, de hasznos biztonsági réteget a privát/kiváltságos tartalmak védelmére a webalkalmazásaiban (például, de nem kizárólagosan a rendszergazdai oldalon). Használhatja azt is, hogy megakadályozza a még fejlesztési fázisban lévő webhelyhez vagy alkalmazáshoz való hozzáférést.

Követelmények

  1. Telepítse a LEMP Stack-et a CentOS/RHEL 7 rendszerben
  2. Telepítse a LEMP Stack-et Ubuntu/Debian-ba

Hozzon létre HTTP-hitelesítési felhasználói fájlt

Kezdje egy olyan fájl létrehozásával, amely a felhasználónév:jelszó párokat tárolja. A fájl létrehozásához az Apache HTTP Server htpasswd segédprogramját fogjuk használni.

Először ellenőrizze, hogy az apache2-utils vagy a httpd-tools, a htpasswd segédprogramot biztosító csomagok telepítve vannak-e a rendszeren, ellenkező esetben futtassa a megfelelő parancsot az Ön disztribúciója a telepítéshez:

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

Ezután futtassa az alábbi htpasswd parancsot a jelszófájl létrehozásához az első felhasználóval. A -c opció a passwd fájl megadására szolgál, miután az [Enter] lenyomása után meg kell adnia a felhasználói jelszót.

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

Adjon hozzá egy második felhasználót, és ne használja itt a -c opciót.

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

Most, hogy a jelszófájl készen áll, folytassa a webszerver azon részeinek konfigurálásával, amelyekhez korlátozni szeretné a hozzáférést. A jelszófájl tartalmának megtekintéséhez (amely felhasználóneveket és titkosított jelszavakat is tartalmaz), használja az alábbi cat parancsot.

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

Konfigurálja a HTTP-hitelesítést az Nginx számára

Amint azt korábban említettük, korlátozhatja a hozzáférést a webszerverhez, egyetlen webhelyhez (a szerverblokk használatával) vagy egy hely direktívával. Ennek eléréséhez két hasznos irányelv használható.

  • auth_basic – bekapcsolja a felhasználónév és jelszó érvényesítését a „HTTP Basic Authentication” protokoll használatával.
  • auth_basic_user_file – a jelszófájlt adja meg.

Jelszavas védelme Nginx Virtual Hosts

A teljes webszerver alapvető hitelesítésének megvalósításához, amely minden kiszolgálóblokkra vonatkozik, nyissa meg az /etc/nginx/nginx.conf fájlt, és adja hozzá az alábbi sorokat a http kontextusban:

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

Jelszavas védelme Nginx webhely vagy tartomány

Egy adott domain vagy aldomain alapszintű hitelesítésének engedélyezéséhez nyissa meg a konfigurációs fájlt az /etc/nginx/conf.d/ vagy az /etc/nginx/conf/sites-available alatt. (attól függően, hogy hogyan telepítette az Nginxet), majd adja hozzá az alábbi konfigurációt szerverblokkban vagy kontextusban:

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

Jelszóvédett webcímtár az Nginxben

Az alapszintű hitelesítést helyirányelvben is engedélyezheti. Az alábbi példában minden felhasználót hitelesítésre kell kérni, aki megpróbál hozzáférni a /admin helyblokkhoz.

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

Ha beállította az alapvető HTTP-hitelesítést, minden olyan felhasználótól, aki megpróbál hozzáférni a webszerverhez vagy egy aldomainhez vagy a webhely meghatározott részéhez (attól függően, hogy hol valósította meg), a rendszer felhasználói nevet és jelszót kér az alábbi képernyőképen látható módon. .

Sikertelen felhasználói hitelesítés esetén a „401-es engedélyezés szükséges” hibaüzenet jelenik meg az alábbiak szerint.

További információkat találhat a hozzáférés korlátozásáról az alapvető HTTP-hitelesítéssel.

Érdemes lehet elolvasni a következő hasznos Nginx HTTP szerverrel kapcsolatos útmutatókat is.

  1. Hogyan lehet jelszóval védeni a webes könyvtárakat az Nginxben
  2. A végső útmutató az Nginx biztonságossá tételéhez, megerősítéséhez és teljesítményének javításához
  3. HTTPS beállítása a Let’s Encrypt SSL-tanúsítvánnyal az Nginx számára

Ebben az útmutatóban bemutattuk, hogyan lehet megvalósítani az alapvető HTTP-hitelesítést az Nginx HTTP webszerveren. Ha bármilyen kérdése van, használja az alábbi visszajelzési űrlapot.