ค้นหาเว็บไซต์

วิธีกำหนดค่าการรับรองความถูกต้อง HTTP พื้นฐานใน Nginx


การตรวจสอบสิทธิ์ HTTP พื้นฐานเป็นกลไกด้านความปลอดภัยเพื่อจำกัดการเข้าถึงเว็บไซต์/แอปพลิเคชันของคุณหรือบางส่วนโดยการตั้งค่าการตรวจสอบสิทธิ์ชื่อผู้ใช้/รหัสผ่านแบบง่าย สามารถใช้เป็นหลักในการปกป้องเซิร์ฟเวอร์ HTTP ทั้งหมด บล็อกเซิร์ฟเวอร์แต่ละรายการ (โฮสต์เสมือนใน Apache) หรือบล็อกตำแหน่ง

อ่านเพิ่มเติม: วิธีการตั้งค่าโฮสต์เสมือนตามชื่อและตาม IP (บล็อกเซิร์ฟเวอร์) ด้วย NGINX

ตามชื่อเลย มันไม่ใช่วิธีการที่ปลอดภัยที่จะพึ่งพา คุณควรใช้ร่วมกับมาตรการรักษาความปลอดภัยอื่น ๆ ที่เชื่อถือได้มากกว่า ตัวอย่างเช่น หากเว็บแอปพลิเคชันของคุณทำงานบน HTTP ข้อมูลรับรองผู้ใช้จะถูกส่งเป็นข้อความธรรมดา ดังนั้นคุณควรพิจารณาเปิดใช้งาน HTTPS

วัตถุประสงค์ของคู่มือนี้คือเพื่อช่วยคุณเพิ่มชั้นการรักษาความปลอดภัยเล็กๆ น้อยๆ แต่มีประโยชน์ เพื่อปกป้องเนื้อหาส่วนตัว/สิทธิพิเศษบนเว็บแอปพลิเคชันของคุณ (เช่น แต่ไม่จำกัดเพียงฝั่งผู้ดูแลระบบ) คุณยังสามารถใช้เพื่อป้องกันการเข้าถึงเว็บไซต์หรือแอปพลิเคชันที่ยังอยู่ในขั้นตอนการพัฒนาได้อีกด้วย

ความต้องการ

  1. ติดตั้ง LEMP Stack ใน CentOS/RHEL 7
  2. ติดตั้ง LEMP Stack ใน Ubuntu/Debian

สร้างไฟล์ผู้ใช้การรับรองความถูกต้อง HTTP

คุณควรเริ่มต้นด้วยการสร้างไฟล์ที่จะจัดเก็บคู่ ชื่อผู้ใช้:รหัสผ่าน เราจะใช้ยูทิลิตี htpasswd จาก Apache HTTP Server เพื่อสร้างไฟล์นี้

ขั้นแรกให้ตรวจสอบว่ามีการติดตั้ง apache2-utils หรือ httpd-tools ซึ่งเป็นแพ็คเกจที่ให้ยูทิลิตี้ htpasswd ในระบบของคุณ หรือไม่เช่นนั้น ให้เรียกใช้คำสั่งที่เหมาะสมสำหรับ การกระจายของคุณเพื่อติดตั้ง:

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

จากนั้น รันคำสั่ง htpasswd ด้านล่างเพื่อสร้างไฟล์รหัสผ่านกับผู้ใช้คนแรก ตัวเลือก -c ใช้เพื่อระบุไฟล์ passwd เมื่อคุณกด [Enter] คุณจะถูกขอให้ป้อนรหัสผ่านผู้ใช้

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

เพิ่มผู้ใช้รายที่สอง และอย่าใช้ตัวเลือก -c ที่นี่

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

เมื่อคุณมีไฟล์รหัสผ่านพร้อมแล้ว ให้ดำเนินการกำหนดค่าส่วนต่างๆ ของเว็บเซิร์ฟเวอร์ที่คุณต้องการจำกัดการเข้าถึง หากต้องการดูเนื้อหาไฟล์รหัสผ่าน (ซึ่งรวมถึงชื่อผู้ใช้และรหัสผ่านที่เข้ารหัส) ให้ใช้คำสั่ง cat ด้านล่าง

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

กำหนดค่าการรับรองความถูกต้อง HTTP สำหรับ Nginx

ดังที่เราได้กล่าวไว้ก่อนหน้านี้ คุณสามารถจำกัดการเข้าถึงเว็บเซิร์ฟเวอร์ของคุณ เว็บไซต์เดียว (โดยใช้บล็อกเซิร์ฟเวอร์) หรือคำสั่งตำแหน่งได้ สามารถใช้คำสั่งที่เป็นประโยชน์สองประการเพื่อให้บรรลุเป้าหมายนี้ได้

  • auth_basic – เปิดการตรวจสอบความถูกต้องของชื่อผู้ใช้และรหัสผ่านโดยใช้โปรโตคอล “การตรวจสอบสิทธิ์ขั้นพื้นฐาน HTTP
  • auth_basic_user_file – ระบุไฟล์รหัสผ่าน

รหัสผ่านป้องกันโฮสต์เสมือน Nginx

หากต้องการใช้การตรวจสอบสิทธิ์ขั้นพื้นฐานสำหรับทั้งเว็บเซิร์ฟเวอร์ ซึ่งใช้กับบล็อกเซิร์ฟเวอร์ทั้งหมด ให้เปิดไฟล์ /etc/nginx/nginx.conf และเพิ่มบรรทัดด้านล่างในบริบท http:

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

รหัสผ่านป้องกันเว็บไซต์หรือโดเมน Nginx

หากต้องการเปิดใช้งานการตรวจสอบสิทธิ์ขั้นพื้นฐานสำหรับโดเมนหรือโดเมนย่อยโดยเฉพาะ ให้เปิดไฟล์การกำหนดค่าภายใต้ /etc/nginx/conf.d/ หรือ /etc/nginx/conf/sites-available (ขึ้นอยู่กับวิธีที่คุณติดตั้ง Nginx) จากนั้นเพิ่มการกำหนดค่าด้านล่างในบล็อกเซิร์ฟเวอร์หรือบริบท:

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

รหัสผ่านป้องกันเว็บไดเร็กทอรีใน Nginx

คุณยังสามารถเปิดใช้งานการรับรองความถูกต้องขั้นพื้นฐานภายในคำสั่งสถานที่ได้ ในตัวอย่างด้านล่าง ผู้ใช้ทุกคนที่พยายามเข้าถึงบล็อกตำแหน่ง /admin จะถูกขอให้ตรวจสอบสิทธิ์

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

หากคุณได้กำหนดค่าการรับรองความถูกต้อง HTTP พื้นฐาน ผู้ใช้ทุกคนที่พยายามเข้าถึงเว็บเซิร์ฟเวอร์ของคุณหรือโดเมนย่อยหรือส่วนใดส่วนหนึ่งของไซต์ (ขึ้นอยู่กับตำแหน่งที่คุณใช้งาน) จะถูกถามถึงชื่อผู้ใช้และรหัสผ่านตามที่แสดงในภาพหน้าจอด้านล่าง .

ในกรณีที่การตรวจสอบสิทธิ์ผู้ใช้ล้มเหลว ข้อผิดพลาด “401 Authorization Required ” จะแสดงดังที่แสดงด้านล่าง

คุณสามารถดูข้อมูลเพิ่มเติมได้ที่การจำกัดการเข้าถึงด้วยการตรวจสอบสิทธิ์ HTTP ขั้นพื้นฐาน

คุณอาจต้องการอ่านคำแนะนำที่เกี่ยวข้องกับเซิร์ฟเวอร์ Nginx HTTP ที่เป็นประโยชน์ต่อไปนี้

  1. วิธีป้องกันรหัสผ่านไดเรกทอรีเว็บใน Nginx
  2. สุดยอดแนวทางในการรักษาความปลอดภัย เสริมความแข็งแกร่ง และปรับปรุงประสิทธิภาพของ Nginx
  3. การตั้งค่า HTTPS ด้วย Let's Encrypt SSL Certificate สำหรับ Nginx

ในคู่มือนี้ เราได้แสดงวิธีใช้การรับรองความถูกต้อง HTTP พื้นฐานบนเว็บเซิร์ฟเวอร์ Nginx HTTP หากต้องการถามคำถามใด ๆ ให้ใช้แบบฟอร์มคำติชมด้านล่าง