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

วิธีป้องกันรหัสผ่านไดเรกทอรีเว็บใน Apache โดยใช้ไฟล์. htaccess


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

ในบทช่วยสอนนี้ ฉันจะแสดงให้คุณเห็นวิธีการป้องกันด้วยรหัสผ่านไดเรกทอรีของเว็บไซต์ต่างๆ ในเว็บเซิร์ฟเวอร์ Apache คุณสามารถบรรลุเป้าหมายนี้ได้หลายวิธี แต่เราจะตรวจสอบ 2 วิธีที่ใช้บ่อยที่สุด

วิธีแรกกำหนดค่าการป้องกันด้วยรหัสผ่านโดยตรงในไฟล์การกำหนดค่าของ Apache ในขณะที่วิธีที่สองใช้ไฟล์ .htaccess

ความต้องการ

ในการตั้งค่าการป้องกันรหัสผ่านสำหรับไดเร็กทอรีเว็บของคุณ คุณจะต้องมี:

  • เว็บเซิร์ฟเวอร์ Apache ที่ใช้งานได้
  • ต้องเปิดใช้งานคำสั่ง AllowOverride AuthConfig ในไฟล์การกำหนดค่า Apache

ตั้งค่าไดเรกทอรีป้องกันด้วยรหัสผ่าน Apache

1. สำหรับบทช่วยสอนนี้ เราจะปกป้องไดเร็กทอรีหลักของเว็บ /var/www/html เพื่อปกป้องไดเร็กทอรีนั้น ให้เปิดการกำหนดค่าของ Apache:

---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf

---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf

2. ค้นหารูทไดเรกทอรีเอกสาร Apache สำหรับ /var/www/html และเพิ่มสิ่งต่อไปนี้ตามที่แนะนำ:

บนเวอร์ชันอาปาเช่ 2.2

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All
Order allow,deny
Allow from all 
</Directory>

บนเวอร์ชันอาปาเช่ 2.4

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>

3. บันทึกไฟล์และรีสตาร์ท Apache โดยใช้คำสั่งต่อไปนี้:

--------------- On Systemd -------------------
systemctl restart httpd         [On RedHat based systems]
systemctl restart apache2       [On Debian based systems]


--------------- On SysV init -----------------
service httpd restart           [On RedHat based systems]
service apache2 restart         [On Debian based systems]

4. ตอนนี้เราจะใช้คำสั่ง htpasswd เพื่อสร้างชื่อผู้ใช้และรหัสผ่านสำหรับไดเร็กทอรีที่ได้รับการป้องกันของเรา คำสั่งนี้ใช้เพื่อจัดการไฟล์ผู้ใช้สำหรับการตรวจสอบสิทธิ์ขั้นพื้นฐาน

ไวยากรณ์ทั่วไปของคำสั่งคือ:

htpasswd -c filename username

ตัวเลือก -c ระบุไฟล์ที่จะเก็บรหัสผ่านที่เข้ารหัสไว้ และ ชื่อผู้ใช้ ระบุผู้ใช้สำหรับการตรวจสอบสิทธิ์

5. ไฟล์รหัสผ่านของเราต้องอยู่นอกไดเร็กทอรีที่เข้าถึงได้ของเว็บของ Apache จึงมีการป้องกันอย่างดี เพื่อจุดประสงค์นั้น เราจะสร้างไดเร็กทอรีใหม่:

mkdir /home/tecmint

6. หลังจากนั้น เราจะสร้างชื่อผู้ใช้และรหัสผ่านของเราซึ่งจะถูกจัดเก็บไว้ในไดเร็กทอรีนั้น:

htpasswd -c /home/tecmint/webpass tecmint

เมื่อคุณดำเนินการคำสั่งนี้ คุณจะต้องป้อนรหัสผ่านสำหรับผู้ใช้ใหม่ของเรา "tecmint" สองครั้ง:

หลังจากนั้นเราจะต้องตรวจสอบให้แน่ใจว่า Apache สามารถอ่านไฟล์ “webpass” ได้ เพื่อจุดประสงค์นั้น คุณจะต้องเปลี่ยนความเป็นเจ้าของไฟล์นั้นด้วยคำสั่งต่อไปนี้:

---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass

7. ณ จุดนี้ผู้ใช้และรหัสผ่านใหม่ของเราพร้อมแล้ว ตอนนี้เราต้องบอก Apache ให้ขอรหัสผ่านเมื่อเข้าถึงไดเร็กทอรีเป้าหมายของเรา เพื่อจุดประสงค์ดังกล่าว ให้สร้างไฟล์ชื่อ .htaccess ใน /var/www/html:

vi /var/www/html/.htaccess

เพิ่มรหัสต่อไปนี้ลงไป:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8. ตอนนี้ให้บันทึกไฟล์และทดสอบการตั้งค่าของคุณ เปิดเบราว์เซอร์ของคุณและป้อนที่อยู่ IP หรือชื่อโดเมนของคุณในเว็บเบราว์เซอร์ ตัวอย่างเช่น:

http://ip-address

คุณควรได้รับแจ้งให้ระบุชื่อผู้ใช้และรหัสผ่าน:

ป้อนชื่อผู้ใช้และรหัสผ่านที่คุณตั้งไว้เพื่อไปที่เพจของคุณ

หมายเหตุเพิ่มเติม

หากคุณใช้โฮสติ้งที่ใช้ร่วมกัน คุณอาจไม่สามารถเข้าถึงไฟล์การกำหนดค่า Apache ได้ อย่างไรก็ตาม บริษัทโฮสติ้งส่วนใหญ่ได้เปิดใช้งานตัวเลือก “AllowOverride All” เป็นค่าเริ่มต้น ซึ่งหมายความว่าคุณจะต้องสร้างชื่อผู้ใช้และรหัสผ่านเท่านั้น จากนั้นเลือกไดเรกทอรีที่คุณต้องการปกป้อง สิ่งนี้ทำให้งานของคุณง่ายขึ้นอย่างมาก

บทสรุป

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