วิธีป้องกันรหัสผ่านไดเรกทอรีเว็บใน Nginx
ผู้จัดการโครงการเว็บมักจำเป็นต้องปกป้องงานของตนไม่ทางใดก็ทางหนึ่ง คนส่วนใหญ่มักจะถามถึงวิธีป้องกันเว็บไซต์ด้วยรหัสผ่านในขณะที่ยังอยู่ระหว่างการพัฒนา
ในบทช่วยสอนนี้ เราจะแสดงให้คุณเห็นเทคนิคง่ายๆ แต่มีประสิทธิภาพในการป้องกันไดเรกทอรีเว็บด้วยรหัสผ่านเมื่อเรียกใช้ Nginx เป็นเว็บเซิร์ฟเวอร์
ในกรณีที่คุณใช้เว็บเซิร์ฟเวอร์ Apache คุณสามารถตรวจสอบคำแนะนำสำหรับรหัสผ่านเพื่อป้องกันไดเร็กทอรีเว็บ:
- รหัสผ่านป้องกันไดเรกทอรีเว็บใน Apache
ความต้องการ
เพื่อทำตามขั้นตอนในบทช่วยสอนนี้ คุณจะต้องมี:
- ติดตั้งเว็บเซิร์ฟเวอร์ Nginx แล้ว
- การเข้าถึงรูทไปยังเซิร์ฟเวอร์
ขั้นตอนที่ 1: สร้างผู้ใช้และรหัสผ่าน
1. เพื่อป้องกันไดเรกทอรีเว็บของเราด้วยรหัสผ่าน เราจะต้องสร้างไฟล์ที่จะมี ชื่อผู้ใช้ และ รหัสผ่าน ที่เข้ารหัสของเรา
เมื่อใช้ Apache คุณสามารถใช้ยูทิลิตี “htpasswd” ได้ หากคุณมียูทิลิตี้นั้นติดตั้งอยู่ในระบบของคุณ คุณสามารถใช้คำสั่งนี้เพื่อสร้างไฟล์รหัสผ่าน:
htpasswd -c /path/to/file/.htpasswd username
เมื่อรันคำสั่งนี้ คุณจะถูกขอให้ตั้งรหัสผ่านสำหรับผู้ใช้ข้างต้น และหลังจากนั้นไฟล์ .htpasswd จะถูกสร้างขึ้นในไดเร็กทอรีที่ระบุ
2. หากคุณไม่ได้ติดตั้งเครื่องมือดังกล่าว คุณสามารถสร้างไฟล์ .htpasswd ด้วยตนเอง ไฟล์ควรมีไวยากรณ์ต่อไปนี้:
username:encrypted-password:comment
ชื่อผู้ใช้ที่คุณจะใช้ขึ้นอยู่กับคุณ เลือกสิ่งที่คุณต้องการ
ส่วนที่สำคัญกว่าคือวิธีที่คุณจะสร้างรหัสผ่านสำหรับผู้ใช้รายนั้น
ขั้นตอนที่ 2: สร้างรหัสผ่านที่เข้ารหัส
3. หากต้องการสร้างรหัสผ่าน ให้ใช้ฟังก์ชัน “crypt” ที่ผสานรวมของ Perl
นี่คือตัวอย่างของคำสั่งนั้น:
perl -le 'print crypt("your-password", "salt-hash")'
ตัวอย่างชีวิตจริง:
perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'
ตอนนี้เปิดไฟล์แล้วใส่ชื่อผู้ใช้ของคุณและสตริงที่สร้างขึ้นโดยคั่นด้วยเครื่องหมายอัฒภาค
นี่คือวิธีการ:
vi /home/tecmint/.htpasswd
ใส่ชื่อผู้ใช้และรหัสผ่านของคุณ ในกรณีของฉันดูเหมือนว่านี้:
tecmint:1xV2Rdw7Q6MK.
บันทึกไฟล์โดยกด “Esc” ตามด้วย “:wq”
ขั้นตอนที่ 3: อัปเดตการกำหนดค่า Nginx
4. ตอนนี้ให้เปิดและแก้ไขไฟล์การกำหนดค่า Nginx ที่เชื่อมโยงกับไซต์ที่คุณกำลังทำงานอยู่ ในกรณีของเรา เราจะใช้ไฟล์เริ่มต้นที่:
vi /etc/nginx/conf.d/default.conf [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf [For CentOS based systems]
vi /etc/nginx/sites-enabled/default [For Debian based systems]
ในตัวอย่างของเรา เราจะใช้รหัสผ่านป้องกันรูทไดเรกทอรีสำหรับ nginx ซึ่งก็คือ: /usr/share/nginx/html
5. ตอนนี้เพิ่มส่วนสองบรรทัดต่อไปนี้ใต้เส้นทางที่คุณต้องการป้องกัน
auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;
ตอนนี้บันทึกไฟล์และรีสตาร์ท Nginx ด้วย:
systemctl restart nginx
OR
service nginx restart
6. ตอนนี้ให้คัดลอก/วางที่อยู่ IP นั้นในเบราว์เซอร์ของคุณและระบบจะถามรหัสผ่าน:
แค่นั้นแหละ! สารบบเว็บหลักของคุณได้รับการปกป้องแล้ว เมื่อคุณต้องการลบการป้องกันรหัสผ่านบนไซต์ เพียงลบสองบรรทัดที่คุณเพิ่งเพิ่มลงในไฟล์ .htpasswd หรือใช้คำสั่งต่อไปนี้เพื่อลบผู้ใช้ที่เพิ่มออกจากไฟล์รหัสผ่าน
htpasswd -D /path/to/file/.htpasswd username