Giunsa ang Pag-configure sa Basic HTTP Authentication sa Nginx


Ang sukaranan nga pag-ila sa HTTP usa ka mekanismo sa seguridad aron mapugngan ang pag-access sa imong website/aplikasyon o pipila ka bahin niini pinaagi sa pag-set up sa yano nga pag-authenticate sa username/password. Mahimong gamiton kini aron mapanalipdan ang tibuuk nga server sa HTTP, indibidwal nga mga bloke sa server (mga virtual nga host sa Apache) o mga bloke sa lokasyon.

Sama sa gisugyot sa ngalan, kini dili usa ka luwas nga paagi nga masaligan; kinahanglan nimo kining gamiton kauban sa uban pang mas kasaligan nga mga lakang sa seguridad. Pananglitan, kung ang imong web application nagdagan sa HTTP, nan ang mga kredensyal sa gumagamit gipasa sa yano nga teksto, mao nga kinahanglan nimong hunahunaon ang pagpagana sa HTTPS.

Ang katuyoan niini nga giya mao ang pagtabang kanimo sa pagdugang og gamay apan mapuslanon nga layer sa seguridad aron mapanalipdan ang pribado/pribilehiyo nga sulod sa imong mga aplikasyon sa web (sama sa, apan dili limitado sa mga bahin sa tagdumala). Mahimo usab nimo kini gamiton aron mapugngan ang pag-access sa usa ka website o aplikasyon nga naa pa sa yugto sa pag-uswag.

  1. I-install ang LEMP Stack sa CentOS/RHEL 7
  2. I-install ang LEMP Stack sa Ubuntu/Debian

Paghimo HTTP Authentication User File

Kinahanglan ka magsugod pinaagi sa paghimo og file nga magtipig username:password nga mga pares. Gamiton namo ang htpasswd utility gikan sa Apache HTTP Server, aron mahimo kining file.

Una susiha nga ang apache2-utils o httpd-tools, ang mga pakete nga naghatag og htpasswd utility gi-install sa imong sistema, kung dili ipadagan ang angay nga mando para sa imong pag-apod-apod aron ma-install kini:

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

Sunod, padagana ang htpasswd nga sugo sa ubos aron mahimo ang password file sa unang user. Ang -c nga opsyon gigamit sa pagtino sa passwd file, sa higayon nga imong naigo [Enter], hangyoon ka sa pagsulod sa user password.

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

Pagdugang ug ikaduhang user, ug ayaw gamita ang -c nga opsyon dinhi.

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

Karon nga andam ka na sa password file, ipadayon ang pag-configure sa mga bahin sa imong web server nga gusto nimong pugngan ang pag-access. Aron tan-awon ang sulod sa password file (nga naglakip sa mga username ug encrypted nga mga password), gamita ang cat command sa ubos.

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

I-configure ang HTTP Authentication para sa Nginx

Sama sa among gihisgutan sa sayo pa, mahimo nimong limitahan ang pag-access sa imong webserver, usa ka web site (gamit ang block sa server niini) o usa ka direktiba sa lokasyon. Duha ka mapuslanon nga direktiba ang magamit aron makab-ot kini.

  • auth_basic – i-on ang validation sa user name ug password gamit ang protocol nga \HTTP Basic Authentication.
  • auth_basic_user_file – nagtino sa password file.

Aron ipatuman ang batakang pag-authenticate alang sa tibuok web server, nga magamit sa tanang block sa server, ablihi ang /etc/nginx/nginx.conf file ug idugang ang mga linya sa ubos sa konteksto sa http:

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

Aron mahimo ang batakang pag-authenticate alang sa usa ka partikular nga domain o sub-domain, ablihi ang configuration file niini ubos sa /etc/nginx/conf.d/ o /etc/nginx/conf/sites-available (depende kung giunsa nimo pag-install ang Nginx), unya idugang ang configuration sa ubos sa server block o konteksto:

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

Mahimo usab nimo nga ma-enable ang batakang pag-authenticate sulod sa usa ka direktiba sa lokasyon. Sa panig-ingnan sa ubos, ang tanan nga tiggamit nga naningkamot sa pag-access sa /admin block sa lokasyon hangyoon sa pag-authenticate.

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

Kung na-configure nimo ang sukaranan nga pag-authenticate sa HTTP, ang tanan nga tiggamit nga mosulay sa pag-access sa imong webserver o usa ka sub-domain o piho nga bahin sa usa ka site (depende kung diin nimo kini gipatuman), hangyoon alang sa usa ka username ug password sama sa gipakita sa screenshot sa ubos .

Sa kaso sa usa ka napakyas nga user authentication, usa ka \401 Authorization Required nga sayop ang ipakita sama sa gipakita sa ubos.

Makapangita ka og dugang nga impormasyon sa pagpugong sa Access gamit ang Basic HTTP Authentication.

Mahimo usab nimo nga basahon kining mosunod nga mapuslanon nga mga giya nga may kalabutan sa server sa Nginx HTTP.

  1. Sa Unsang Paagi Panalipdan ang mga Direktoryo sa Web sa Nginx
  2. Ang Kinatibuk-ang Giya sa Pagsiguro, Pagpatig-a ug Pagpauswag sa Performance sa Nginx
  3. Pag-set up sa HTTPS gamit ang Let's Encrypt SSL Certificate Para sa Nginx

Sa kini nga giya, gipakita namon kung giunsa ipatuman ang sukaranan nga pag-authenticate sa HTTP sa Nginx HTTP web server. Para makapangutana ug bisan unsang pangutana, gamita ang feedback form sa ubos.