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

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


ผู้จัดการโครงการเว็บมักจำเป็นต้องปกป้องงานของตนไม่ทางใดก็ทางหนึ่ง คนส่วนใหญ่มักจะถามถึงวิธีป้องกันเว็บไซต์ด้วยรหัสผ่านในขณะที่ยังอยู่ระหว่างการพัฒนา

ในบทช่วยสอนนี้ เราจะแสดงให้คุณเห็นเทคนิคง่ายๆ แต่มีประสิทธิภาพในการป้องกันไดเรกทอรีเว็บด้วยรหัสผ่านเมื่อเรียกใช้ Nginx เป็นเว็บเซิร์ฟเวอร์

ในกรณีที่คุณใช้เว็บเซิร์ฟเวอร์ Apache คุณสามารถตรวจสอบคำแนะนำสำหรับรหัสผ่านเพื่อป้องกันไดเร็กทอรีเว็บ:

  1. รหัสผ่านป้องกันไดเรกทอรีเว็บใน 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