วิธีกำหนดค่าการรับรองความถูกต้อง HTTP พื้นฐานใน Nginx
การตรวจสอบสิทธิ์ HTTP พื้นฐานเป็นกลไกด้านความปลอดภัยเพื่อจำกัดการเข้าถึงเว็บไซต์/แอปพลิเคชันของคุณหรือบางส่วนโดยการตั้งค่าการตรวจสอบสิทธิ์ชื่อผู้ใช้/รหัสผ่านแบบง่าย สามารถใช้เป็นหลักในการปกป้องเซิร์ฟเวอร์ HTTP ทั้งหมด บล็อกเซิร์ฟเวอร์แต่ละรายการ (โฮสต์เสมือนใน Apache) หรือบล็อกตำแหน่ง
อ่านเพิ่มเติม: วิธีการตั้งค่าโฮสต์เสมือนตามชื่อและตาม IP (บล็อกเซิร์ฟเวอร์) ด้วย NGINX
ตามชื่อเลย มันไม่ใช่วิธีการที่ปลอดภัยที่จะพึ่งพา คุณควรใช้ร่วมกับมาตรการรักษาความปลอดภัยอื่น ๆ ที่เชื่อถือได้มากกว่า ตัวอย่างเช่น หากเว็บแอปพลิเคชันของคุณทำงานบน HTTP ข้อมูลรับรองผู้ใช้จะถูกส่งเป็นข้อความธรรมดา ดังนั้นคุณควรพิจารณาเปิดใช้งาน HTTPS
วัตถุประสงค์ของคู่มือนี้คือเพื่อช่วยคุณเพิ่มชั้นการรักษาความปลอดภัยเล็กๆ น้อยๆ แต่มีประโยชน์ เพื่อปกป้องเนื้อหาส่วนตัว/สิทธิพิเศษบนเว็บแอปพลิเคชันของคุณ (เช่น แต่ไม่จำกัดเพียงฝั่งผู้ดูแลระบบ) คุณยังสามารถใช้เพื่อป้องกันการเข้าถึงเว็บไซต์หรือแอปพลิเคชันที่ยังอยู่ในขั้นตอนการพัฒนาได้อีกด้วย
ความต้องการ
- ติดตั้ง LEMP Stack ใน CentOS/RHEL 7
- ติดตั้ง 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 ที่เป็นประโยชน์ต่อไปนี้
- วิธีป้องกันรหัสผ่านไดเรกทอรีเว็บใน Nginx
- สุดยอดแนวทางในการรักษาความปลอดภัย เสริมความแข็งแกร่ง และปรับปรุงประสิทธิภาพของ Nginx
- การตั้งค่า HTTPS ด้วย Let's Encrypt SSL Certificate สำหรับ Nginx
ในคู่มือนี้ เราได้แสดงวิธีใช้การรับรองความถูกต้อง HTTP พื้นฐานบนเว็บเซิร์ฟเวอร์ Nginx HTTP หากต้องการถามคำถามใด ๆ ให้ใช้แบบฟอร์มคำติชมด้านล่าง