مدیران پروژه های web اغلب نیاز به محافظت کردن از کار خود به شیوه های متفاوت را دارند. اغلب افراد درباره چگونگی محافظت از طریق پسورد در وب سایت شان را زمانی که هنوز در حال develope میباشد سوال میپرسند. در این مقاله قصد داریم تکنیکی ساده اما موثر درباره password protected web directory ( محافظت دایرکتوری های وب از طریق گذاشتن پسورد ) به هنگامی که nginx به عنوان وب سرور در حال کار است را به شما آموزش خواهیم داد.
اگر وب سرور آپاچی استفاده میکنید میتوانید لینک زیر را مطالعه بفرمایید که در مورد محافظت از دایرکتوری وب روی آپاچی سرور میباشد.
آموزش پسورد گذاشتن روی دایرکتوری وب ( فولدر ها و پوشه ها ) در آپاچی (Apache) با استفاده از فایل htaccess.
تجهیزات :
برای تکمیل مراحل موجود در این مقاله شما نیاز به موارد زیر دارید :
مرحله اول : ایجاد یوزر و پسورد
1 - برای محافظت از طریق پسورد روی دایرکتوری وب ما باید فایلی که شامل username و password اینکریپت (encrypt) شده باشد را ایجاد کنیم.
هنگامی که از آپاچی استفاده میکنیم میتوانیم از ابزار htpasswd استفاده کنیم. اگر شما این ابزار را روی سیستم تان نصب دارید میتوانید از این دستور برای ایجاد فایل پسورد استفاده کنید :
زمانی که دستور بالا را اجرا میکنیم از ما خواسته میشود که یک پسورد برای یوزر بالا تعریف کنیم و بعد از آن فایل .htpasswd در دایرکتوری مورد نظر ایجاد خواهد شد :
2 - اگر شما ابزار htpasswd را روی سیستم تان نصب ندارید میتوانید فایل .htpasswd را به صورت دستی ایجاد کنید، که این فایل باید ساختار زیر را داشته باشد :
username که شما استفاده خواهید کرد اختیاری بوده و میتوانید هر آنچه میخواهید انتخاب کنید.
بخش بسیار مهم طریقه ایجاد پسورد برای user میباشد.
مرحله 2 : ایجاد پسورد encrypt شده
3 - برای ایجاد پسورد از Function به نام “crypt” از زبان perl استفاده میکنیم.
مثال زیر نمونه ای از دستور میباشد :
یک نمونه مثال واقعی :
اکنون یک فایل باز کنید و username همچنین پسورد genarate شده را درون فایل قرار دهید و آنها را با یک semicolon از هم جدا کنید.
همانطور که میبینید :
و username و password را در آن قرار دهید. در اینجا با توجه به مثال من شبیه به زیر میباشد :
و در پایان با فشردن کلید escp و بعد از :wq فایل را ذخیره میکنیم :
مرحله 3 : آپدیت کردن تنظیمات Nginx
4 - اکنون فایل تنظیمات ngigx که با سایت که شما روی آن کار میکنید مرتبط است را باز و ویرایش کنید. در اینجا ما فایل defult را استفاده خواهیم کرد :
در این مثال ما میخواهیم دایرکتوری root را برای Nginx که در مسیر /usr/share/nginx/html قرار دارد password protect کنیم. (روی دایرکتوری پسورد بگذاریم).
5 - اکنون 2 خط زیر را به همراه مسیری که میخواهید روی آن پسورد بگذارید را اضافه میکنیم :
حالا فایل را ذخیره و Nginx را با استفاده از دستور زیر restart میکنیم :
6 - در اینجا ip address را در مرورگرتان وارد کرده سپس باید از شما پسورد خواسته شود :
اکنون میبینید که دایرکتور وب اصلی شما به درستی امن شده و از شما پسورد میخواهد. زمانی که بخواهید پسورد را از روی سایت حذف کنید فقط کافیست به سادگی 2 خطی که به فایل .htpasswd اضافه کردید را حذف کنید و یا از دستور زیر برای حذف یوزر اضافه شده از طریق یک فایل پسورد اجرا کنید :
موفق باشید
محمد هابیلی
اگر وب سرور آپاچی استفاده میکنید میتوانید لینک زیر را مطالعه بفرمایید که در مورد محافظت از دایرکتوری وب روی آپاچی سرور میباشد.
آموزش پسورد گذاشتن روی دایرکتوری وب ( فولدر ها و پوشه ها ) در آپاچی (Apache) با استفاده از فایل htaccess.
تجهیزات :
برای تکمیل مراحل موجود در این مقاله شما نیاز به موارد زیر دارید :
- وب سرور Nginx نصب شده
- دسترسی root به سرور
مرحله اول : ایجاد یوزر و پسورد
1 - برای محافظت از طریق پسورد روی دایرکتوری وب ما باید فایلی که شامل username و password اینکریپت (encrypt) شده باشد را ایجاد کنیم.
هنگامی که از آپاچی استفاده میکنیم میتوانیم از ابزار htpasswd استفاده کنیم. اگر شما این ابزار را روی سیستم تان نصب دارید میتوانید از این دستور برای ایجاد فایل پسورد استفاده کنید :
کد PHP:
# htpasswd -c /path/to/file/.htpasswd username
2 - اگر شما ابزار htpasswd را روی سیستم تان نصب ندارید میتوانید فایل .htpasswd را به صورت دستی ایجاد کنید، که این فایل باید ساختار زیر را داشته باشد :
کد PHP:
username:encrypted-password:comment
بخش بسیار مهم طریقه ایجاد پسورد برای user میباشد.
مرحله 2 : ایجاد پسورد encrypt شده
3 - برای ایجاد پسورد از Function به نام “crypt” از زبان perl استفاده میکنیم.
مثال زیر نمونه ای از دستور میباشد :
کد PHP:
# perl -le 'print crypt("your-password", "salt-hash")'
کد PHP:
# perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'
اکنون یک فایل باز کنید و username همچنین پسورد genarate شده را درون فایل قرار دهید و آنها را با یک semicolon از هم جدا کنید.
همانطور که میبینید :
کد PHP:
# vi /home/linux-zone/.htpasswd
کد PHP:
linux-zone:1xV2Rdw7Q6MK.
مرحله 3 : آپدیت کردن تنظیمات Nginx
4 - اکنون فایل تنظیمات ngigx که با سایت که شما روی آن کار میکنید مرتبط است را باز و ویرایش کنید. در اینجا ما فایل defult را استفاده خواهیم کرد :
کد PHP:
# 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]
5 - اکنون 2 خط زیر را به همراه مسیری که میخواهید روی آن پسورد بگذارید را اضافه میکنیم :
کد PHP:
auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;
حالا فایل را ذخیره و Nginx را با استفاده از دستور زیر restart میکنیم :
کد PHP:
# systemctl restart nginx
OR
# service nginx restart
6 - در اینجا ip address را در مرورگرتان وارد کرده سپس باید از شما پسورد خواسته شود :
اکنون میبینید که دایرکتور وب اصلی شما به درستی امن شده و از شما پسورد میخواهد. زمانی که بخواهید پسورد را از روی سایت حذف کنید فقط کافیست به سادگی 2 خطی که به فایل .htpasswd اضافه کردید را حذف کنید و یا از دستور زیر برای حذف یوزر اضافه شده از طریق یک فایل پسورد اجرا کنید :
کد PHP:
# htpasswd -D /path/to/file/.htpasswd username
موفق باشید
محمد هابیلی
کامنت