زمانی که شما پروژه های آنلاین را مدیریت میکنید شما اغلب نیاز دارید که دسترسی به پروژه را به منظور محافظت از دنیای بیرون محدود کنید. ممکن است دلایل متفاوتی داشته باشد به طور مثال شما می خواهید که از دسترسی crawler های موتور های جستجو به سایت تان در زمانی که هنوز در حال develop است، جلوگیری کنید.
در این مقاله قصد داریم نحوه ی password protected web directory (محافظت دایرکتوری های وب از طریق پسورد) در وب سرور آپاچی را آموزش دهیم. راههای زیادی برای این منظور موجود است اما ما تنها به بررسی دو مورد که رایجتر هستند خواهیم پرداخت.
همچنین توصیه میشود مطالعه بفرمایید :
نحوه پسورد گذاشتن روی دایرکتوری خاص در وب سرور Nginx
اولین روش تنظیم password protect به صورت مستقیم در فایل تنظیمات آپاچی می باشد در حالی که در روش دوم از فایل htaccess. استفاده میشود.
تجهیزات
به منظور تنظیم password protect برای دایرکتوری های وب شما به موارد زیر نیاز دارید :
تنظیم Apache Password Protect Directory :
1 - در این پست ما میخواهیم روی دایرکتوری اصلی root وب /var/www/html پسورد بگذاریم.برای این کار ابتدا فایل کانفیگ apache را باز میکنیم :
2 - دایرکتوری Document روت آپاچی را برای /var/www/html پیدا میکنیم و موارد زیر را به آن اضافه میکنیم :
روی Apache 2.2 Version :
روی Apache 2.4 Version :
3 - فایل را دخیره و سرویس Apache را با استفاده از دستور زیر ریستارت میکنیم :
4 - اکنون از دستور htpasswd برای ایجاد username و password برای دایرکتوری موردنظرمان استفاده خواهیم کرد. این دستور برای مدیریت فایلهای user برای authentication ابتدایی استفاده می شود.
ساختار کلی دستور به شکل زیر می باشد :
گزینه ی c- برای مشخص کردن فایلی که encrypted password در آن قرار میگیرد استفاده می شود. همچنین username مشخص کننده ی یوزر مورد نظر برای Authentication است.
5 - فایل پسورد باید خارج از دایرکتوری قابل دسترس وب آپاچی قرار گیرد تا بخوبی امن شود. برای این منظور ما دایرکتوری جدید ایجاد میکنیم :
6 - بعد از آن username و password ی که قرار است در این دایرکتوری ذخیره شوند را ایجاد می کنیم :
به محض اینکه دستور بالا را اجرا کردیم از شما خواسته میشود تا پسوردیبرای یوزر جدید linuxzone را دوبار وارد کنید :
بعد از آن باید مطمین شوید که آپاچی قادر به خواندن فایل webpass می باشد. برای این منظور باید ownership (مالکیت) فایل موردنظر را با دستور زیر تغییر دهید :
7 - اکنون user و passwrd ما آماده هستند و ما باید به آپاچی بگوییم که به هنگام دسترسی به دایرکتوری موردنظر پسورد بخواهد. برای این منظور فایل htaccess. را در مسیر /var/www/html ایجاد می کنیم :
و کد زیر را به آن اضافه میکنیم :
8 - سپس فایل را ذخیره می کنیم و تست می گیریم. بروزر خود را باز کنید و IP Address یا domain name تان را در آن وارد کنید. بطور مثال :
در این مرحله باید از شما username و password بخواهد :
یوزر وپسورد موردنظر را وارد کنید تا به page خود دسترسی پیدا کنید.
نکات اضافه :
اگر شما از هاست اشتراکی استفاده میکنید به احتمال زیاد به فایل کانفیگ apache دسترسی نخواهید داشت. به هر حال اکثر شرکت های هاستینگ گزینه ی “AllowOverride All” را به صورت پیش فرض فعال کرده اند. در نتیجه شما فقط نیاز به ایجاد یوزر و پسورد دارید و سپس انتخاب دایرکتوری که شما میخواهید پسورد برایش بگذارید که در حد زیادی کار شما را آسان می کند.
همچنین توصیه میشود مطالعه بفرمایید :
نحوه بالا بردن سرعت وب سرور آپاچی و امنیت بخشیدن به آن با استفاده از فایل htaccess
آموزش دستورات htaccess برای ریدایرکت/انتقال یک دامنه قدیمی به جدید
امیدوارم این پست برای شما مفید واقع شود و شما را به هدفتان برساند.
با آرزوی موفقیت
محمد هابیلی
در این مقاله قصد داریم نحوه ی password protected web directory (محافظت دایرکتوری های وب از طریق پسورد) در وب سرور آپاچی را آموزش دهیم. راههای زیادی برای این منظور موجود است اما ما تنها به بررسی دو مورد که رایجتر هستند خواهیم پرداخت.
همچنین توصیه میشود مطالعه بفرمایید :
نحوه پسورد گذاشتن روی دایرکتوری خاص در وب سرور Nginx
اولین روش تنظیم password protect به صورت مستقیم در فایل تنظیمات آپاچی می باشد در حالی که در روش دوم از فایل htaccess. استفاده میشود.
تجهیزات
به منظور تنظیم password protect برای دایرکتوری های وب شما به موارد زیر نیاز دارید :
- یک آپاچی سرور در حال کار
- AllowOverride AuthConfig باید در فایل کانفیگ اپاچی فعال (enable) باشد.
تنظیم Apache Password Protect Directory :
1 - در این پست ما میخواهیم روی دایرکتوری اصلی root وب /var/www/html پسورد بگذاریم.برای این کار ابتدا فایل کانفیگ apache را باز میکنیم :
کد PHP:
---------------- 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 - دایرکتوری Document روت آپاچی را برای /var/www/html پیدا میکنیم و موارد زیر را به آن اضافه میکنیم :
روی Apache 2.2 Version :
کد PHP:
<Directory /var/www/html>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
allow,deny
Allow from all
</Directory>
روی Apache 2.4 Version :
کد PHP:
<Directory /var/www/html>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
3 - فایل را دخیره و سرویس Apache را با استفاده از دستور زیر ریستارت میکنیم :
کد PHP:
--------------- 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]
ساختار کلی دستور به شکل زیر می باشد :
کد PHP:
# htpasswd -c filename username
5 - فایل پسورد باید خارج از دایرکتوری قابل دسترس وب آپاچی قرار گیرد تا بخوبی امن شود. برای این منظور ما دایرکتوری جدید ایجاد میکنیم :
کد PHP:
# mkdir /home/linux-zone
کد PHP:
# htpasswd -c /home/linuxzone/webpass linux-zone
بعد از آن باید مطمین شوید که آپاچی قادر به خواندن فایل webpass می باشد. برای این منظور باید ownership (مالکیت) فایل موردنظر را با دستور زیر تغییر دهید :
کد PHP:
---------------- On RedHat/CentOS based systems ----------------
# chown apache: /home/linuxzone/webpass
# chmod 640 /home/linuxzone/webpass
کد PHP:
---------------- On Debian/Ubuntu based systems ----------------
# chown www-data /home/linuxzone/webpass
# chmod 640 /home/linuxzone/webpass
کد PHP:
# vi /var/www/html/.htaccess
کد PHP:
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint
8 - سپس فایل را ذخیره می کنیم و تست می گیریم. بروزر خود را باز کنید و IP Address یا domain name تان را در آن وارد کنید. بطور مثال :
کد PHP:
http://ip-address
یوزر وپسورد موردنظر را وارد کنید تا به page خود دسترسی پیدا کنید.
نکات اضافه :
اگر شما از هاست اشتراکی استفاده میکنید به احتمال زیاد به فایل کانفیگ apache دسترسی نخواهید داشت. به هر حال اکثر شرکت های هاستینگ گزینه ی “AllowOverride All” را به صورت پیش فرض فعال کرده اند. در نتیجه شما فقط نیاز به ایجاد یوزر و پسورد دارید و سپس انتخاب دایرکتوری که شما میخواهید پسورد برایش بگذارید که در حد زیادی کار شما را آسان می کند.
همچنین توصیه میشود مطالعه بفرمایید :
نحوه بالا بردن سرعت وب سرور آپاچی و امنیت بخشیدن به آن با استفاده از فایل htaccess
آموزش دستورات htaccess برای ریدایرکت/انتقال یک دامنه قدیمی به جدید
امیدوارم این پست برای شما مفید واقع شود و شما را به هدفتان برساند.
با آرزوی موفقیت
محمد هابیلی