Vyhledávání na webu

Jak nakonfigurovat základní ověřování HTTP v Nginx


Základní HTTP autentizace je bezpečnostní mechanismus, který omezuje přístup k vaší webové stránce/aplikaci nebo k některým jejím částem nastavením jednoduchého ověření uživatelského jména/hesla. Lze jej použít v podstatě k ochraně celého HTTP serveru, jednotlivých bloků serveru (virtuálních hostitelů v Apache) nebo bloků umístění.

Přečtěte si také: Jak nastavit virtuální hostitele založené na názvech a IP (bloky serveru) pomocí NGINX

Jak název napovídá, není to bezpečná metoda, na kterou by se dalo spoléhat; měli byste jej používat ve spojení s dalšími spolehlivějšími bezpečnostními opatřeními. Pokud například vaše webová aplikace běží na HTTP, pak se uživatelské údaje přenášejí v prostém textu, takže byste měli zvážit povolení HTTPS.

Účelem této příručky je pomoci vám přidat malou, ale užitečnou vrstvu zabezpečení k ochraně soukromého/privilegovaného obsahu ve vašich webových aplikacích (jako jsou, ale nikoli pouze administrátorské strany). Můžete jej také použít k zamezení přístupu k webové stránce nebo aplikaci, která je stále ve fázi vývoje.

Požadavky

  1. Nainstalujte LEMP Stack v CentOS/RHEL 7
  2. Nainstalujte LEMP Stack v Ubuntu/Debianu

Vytvořte soubor uživatele pro ověřování HTTP

Měli byste začít vytvořením souboru, který bude ukládat páry uživatelské jméno:heslo. K vytvoření tohoto souboru použijeme nástroj htpasswd ze serveru Apache HTTP Server.

Nejprve zkontrolujte, zda jsou ve vašem systému nainstalovány balíčky apache2-utils nebo httpd-tools, které poskytují nástroj htpasswd, jinak spusťte příslušný příkaz pro vaši distribuci k instalaci:

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

Dále spusťte příkaz htpasswd níže a vytvořte soubor s hesly s prvním uživatelem. Možnost -c se používá k zadání souboru passwd, jakmile stisknete [Enter], budete požádáni o zadání uživatelského hesla.

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

Přidejte druhého uživatele a nepoužívejte zde volbu -c.

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

Nyní, když máte připravený soubor s hesly, pokračujte v konfiguraci částí vašeho webového serveru, ke kterým chcete omezit přístup. Chcete-li zobrazit obsah souboru s hesly (který zahrnuje uživatelská jména a šifrovaná hesla), použijte níže uvedený příkaz cat.

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

Nakonfigurujte ověřování HTTP pro Nginx

Jak jsme zmínili dříve, můžete omezit přístup k vašemu webovému serveru, jedné webové stránce (pomocí jejího bloku serveru) nebo direktivě umístění. K tomu lze použít dvě užitečné směrnice.

  • auth_basic – zapne ověření uživatelského jména a hesla pomocí protokolu „HTTP Basic Authentication “.
  • auth_basic_user_file – určuje soubor s hesly.

Virtuální hostitelé Nginx chránit heslem

Chcete-li implementovat základní ověřování pro celý webový server, které se vztahuje na všechny bloky serveru, otevřete soubor /etc/nginx/nginx.conf a přidejte do kontextu http následující řádky:

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

Ochrana webu nebo domény Nginx heslem

Chcete-li povolit základní ověřování pro konkrétní doménu nebo subdoménu, otevřete její konfigurační soubor pod /etc/nginx/conf.d/ nebo /etc/nginx/conf/sites-available (v závislosti na tom, jak jste Nginx nainstalovali), poté přidejte konfiguraci níže do bloku serveru nebo kontextu:

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

Webový adresář chráněný heslem v Nginx

Můžete také povolit základní ověřování v rámci direktivy umístění. V níže uvedeném příkladu budou všichni uživatelé pokoušející se o přístup k bloku umístění /admin požádáni o ověření.

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

Pokud jste nakonfigurovali základní ověřování HTTP, všichni uživatelé, kteří se pokusí o přístup k vašemu webovému serveru nebo subdoméně nebo konkrétní části webu (v závislosti na tom, kde jste je implementovali), budou požádáni o uživatelské jméno a heslo, jak je znázorněno na obrázku níže. .

V případě neúspěšného ověření uživatele se zobrazí chyba „401 Vyžaduje autorizaci“, jak je uvedeno níže.

Další informace naleznete v tématu omezení přístupu pomocí základního ověřování HTTP.

Možná byste si také rádi přečetli tyto užitečné příručky související se serverem Nginx HTTP.

  1. Jak chránit heslem webové adresáře v Nginx
  2. Dokonalý průvodce zabezpečením, zpevněním a zlepšením výkonu Nginx
  3. Nastavení HTTPS pomocí Let's Encrypt SSL certifikátu pro Nginx

V této příručce jsme ukázali, jak implementovat základní ověřování HTTP na webovém serveru Nginx HTTP. Chcete-li se zeptat na jakékoli otázky, použijte formulář pro zpětnou vazbu níže.