Com configurar l'autenticació HTTP bàsica a Nginx


L'autenticació HTTP bàsica és un mecanisme de seguretat per restringir l'accés al vostre lloc web/aplicació o algunes parts d'aquest mitjançant la configuració de l'autenticació simple de nom d'usuari/contrasenya. Es pot utilitzar essencialment per protegir tot el servidor HTTP, blocs de servidors individuals (amfitrions virtuals a Apache) o blocs d'ubicació.

Com el seu nom indica, no és un mètode segur en què confiar; hauríeu d'utilitzar-lo juntament amb altres mesures de seguretat més fiables. Per exemple, si la vostra aplicació web s'executa amb HTTP, les credencials de l'usuari es transmeten en text sense format, per la qual cosa hauríeu de considerar habilitar HTTPS.

L'objectiu d'aquesta guia és ajudar-vos a afegir una petita però útil capa de seguretat per protegir el contingut privat/privilegiat de les vostres aplicacions web (com ara, entre d'altres, els costats de l'administrador). També podeu utilitzar-lo per impedir l'accés a un lloc web o aplicació que encara es troba en fase de desenvolupament.

  1. Instal·leu LEMP Stack a CentOS/RHEL 7
  2. Instal·leu LEMP Stack a Ubuntu/Debian

Creeu un fitxer d'usuari d'autenticació HTTP

Hauríeu de començar creant un fitxer que emmagatzemi parells nom d'usuari:contrasenya. Utilitzarem la utilitat htpasswd d'Apache HTTP Server per crear aquest fitxer.

Primer comproveu que apache2-utils o httpd-tools, els paquets que proporcionen la utilitat htpasswd estan instal·lats al vostre sistema, en cas contrari executeu l'ordre adequat per a la vostra distribució per instal·lar-lo:

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

A continuació, executeu l'ordre htpasswd a continuació per crear el fitxer de contrasenyes amb el primer usuari. L'opció -c s'utilitza per especificar el fitxer passwd, un cop premeu [Enter], se us demanarà que introduïu la contrasenya de l'usuari.

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

Afegiu un segon usuari i no feu servir l'opció -c aquí.

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

Ara que teniu el fitxer de contrasenyes a punt, procediu a configurar les parts del vostre servidor web a les quals voleu restringir l'accés. Per veure el contingut del fitxer de contrasenyes (que inclou noms d'usuari i contrasenyes xifrades), utilitzeu l'ordre cat a continuació.

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

Configura l'autenticació HTTP per a Nginx

Com hem esmentat anteriorment, podeu restringir l'accés al vostre servidor web, un únic lloc web (utilitzant el seu bloc de servidor) o una directiva d'ubicació. Es poden utilitzar dues directrius útils per aconseguir-ho.

  • auth_basic: activa la validació del nom d'usuari i la contrasenya mitjançant el protocol \Autenticació bàsica HTTP.
  • auth_basic_user_file: especifica el fitxer de contrasenyes.

Per implementar l'autenticació bàsica per a tot el servidor web, que s'aplica a tots els blocs del servidor, obriu el fitxer /etc/nginx/nginx.conf i afegiu les línies següents al context http:

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

Per habilitar l'autenticació bàsica per a un domini o subdomini concret, obriu el seu fitxer de configuració a /etc/nginx/conf.d/ o /etc/nginx/conf/sites-available (segons com hàgiu instal·lat Nginx) i, a continuació, afegiu el configuració següent al bloc o context del servidor:

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

També podeu habilitar l'autenticació bàsica dins d'una directiva d'ubicació. A l'exemple següent, es demanarà a tots els usuaris que intentin accedir al bloc d'ubicació /admin que s'autentiquin.

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

Si heu configurat l'autenticació HTTP bàsica, a tots els usuaris que intentin accedir al vostre servidor web o a un subdomini o a una part específica d'un lloc (segons on l'hagueu implementat), se li demanarà un nom d'usuari i una contrasenya tal com es mostra a la captura de pantalla següent. .

En cas d'autenticació fallida de l'usuari, es mostrarà un error 401 Authorization Required tal com es mostra a continuació.

Podeu trobar més informació a restringir l'accés amb autenticació HTTP bàsica.

També us agradaria llegir aquestes guies útils relacionades amb el servidor Nginx HTTP.

  1. Com protegir amb contrasenya els directoris web a Nginx
  2. La guia definitiva per assegurar, endurir i millorar el rendiment de Nginx
  3. Configurar HTTPS amb el certificat SSL de Let's Encrypt per a Nginx

En aquesta guia, vam mostrar com implementar l'autenticació HTTP bàsica al servidor web HTTP Nginx. Per fer qualsevol pregunta, utilitzeu el formulari de comentaris que trobareu a continuació.