در حال بارگزاری ...

نحوه احراز هویت پسورد با Apache در اوبونتو 14.04

php
توسط مریم مهربان
آخرین به روز رسانی شنبه 16 آذر 1398

عموما صاحبان وب سایت، تمایل دارند که دسترسی بخش‌هایی از سایت خود را محدود کنند. در این مقاله از لیداوب، نحوه پسورد گذاشتن روی منابع را در وب سرور آپاچی در اوبونتو 14.04 بیان می‌کنیم. 

عموما صاحبان وب سایت، تمایل دارند که دسترسی بخش‌هایی از سایت خود را محدود کنند. در این مقاله از لیداوب، نحوه پسورد گذاشتن روی منابع را در وب سرور آپاچی در اوبونتو 14.04 بیان می‌کنیم. 


اغلب برنامه‌های کاربردی مبتنی بر وب، روش‌های احراز هویت و کنترل دسترسی خاص خود را دارند، اما اگر این روش‌ها ناکافی یا غیرقابل دسترس باشد، خود وب سرور می‌توانند دسترسی را محدود کنند.

نحوه احراز هویت پسورد با Apache در اوبونتو 14.04

در آغاز، نیاز به یک محیط سرور روی اوبونتو 14.04 دارید. همچنین، برای انجام کارهای مدیریتی به کاربری غیر از کاربر ریشه با سطح دسترسی sudo نیاز دارید.

نصب بسته Apache Utilities

 مطالعه بیشتر:

به منظور ایجاد فایلی که پسوردهای موردنیاز برای دسترسی به محتوای محدود شده را نگهداری می‌کند از امکانی تحت عنوان htpasswd استفاده خواهد شد. این امکان در بسته apache2-utils در مخزن اوبونتو وجود دارد. پس ابتدا باید آن را نصب کنید. به این منظور، ابتدا مخزن بسته‌های اوبونتو را با دستور زیر بروز رسانی کنید:

 

sudo apt-get update

سپس، با دستور زیر، بسته موردنظر و وب سرور آپاچی را نصب کنید. در صورتی که هر یک از این بسته‌ها روی سیستم نصب نشده باشد، با اجرای این دستور نصب خواهد شد:  

sudo apt-get install apache2 apache2-utils

ایجاد فایل پسورد

اکنون که به دستور htpasswd دسترسی داریم، می‌توانیم از آن برای ایجاد یک فایل پسورد استفاده کنیم که برای وب سرور آپاچی نیز قابل خواندن است. به این منظور، یک فایل پنهان به نام .htpasswd در دایرکتوری پیکربندی /etc/apache2 ایجاد خواهیم کرد.

برای ایجاد فایل از دستور htpasswd به همراه گزینه –c استفاده می‌کنیم. همچنین لازم است در انتهای دستور، یک نام کاربری مشخص کنیم:

sudo htpasswd -c /etc/apache2/.htpasswd sammy

پس از آن، از شما درخواست می‌شود که یک رمز عبور وارد کنید و سپس برای تایید، آن را مجددا وارد کنید. این نام کاربری و رمز عبور، اطلاعات یکی از کاربرانی است که به منبع محدود شده که آن را در ادامه تعیین می‌کنید، دسترسی خواهد داشت.

اگر قصد دارید، این دسترسی را برای کاربران دیگر هم ایجاد کنید از دستور زیر استفاده کنید (دیگر نیازی به استفاده از گزینه –c نیست):

sudo htpasswd /etc/apache2/.htpasswd another_user

اکنون اگر فایل را باز کنید، باید نام‌های کاربری و رمز عبور رمزگذاری شده برای هر رکورد را در آن مشاهده کنید:

cat /etc/apache2/.htpasswd

Output
sammy:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

پیکربندی احراز هویت با پسورد در آپاچی

اکنون که یک فایل شامل نام کاربری و پسورد در اختیار داریم و آپاچی می‌تواند محتویات با این فرمت را بخواند، لازم است آپاچی را به گونه‌ای پیکربندی کنیم که پیش از بارگذاری محتویات محافظت شده، این فایل را بررسی کند. این کار را می‌توان به دو روش متفاوت انجام داد:

  • روش اول: ویرایش پیکربندی آپاچی و اضافه کردن محافظت با پسورد به فایل میزبان مجازی است. این روش عموما بازده بهتری دارد، چون دیگر نیازی به خواندن فایل‌های پیکربندی توزیع شده نیست. بنابراین، توصیه می‌کنیم که در صورت امکان از این روش استفاده کنید.
  • روش دوم: محدود کردن دسترسی با استفاده از فایل .htaccess است. آپاچی از این فایل برای تعیین فایل‌های پیکربندی موجود در دایرکتوری content استفاده می‌کند. عیب این روش، این است که آپاچی باید به ازای هر درخواست که شامل این دایرکتوری است، فایل‌های پیکربندی موجود در آن را بخواند و این مساله روی بازدهی سایت تاثیر می‌گذارد.

پیکربندی کنترل دسترسی در میزبان مجازی

فایل پیکربندی میزبان مجازی را که قصد دارید احراز هویت پسورد را روی آن پیاده سازی کنید، باز کنید. برای مثال، در اینجا ما از فایل 000-default.conf استفاده کردیم. این فایل پیکربندی‌های مربوط  به میزبان مجازی نصب شده به صورت پیش‌فرض از طریق بسته آپاچی روی اوبونتو را شامل می‌شود.

sudo nano /etc/apache2/sites-enabled/000-default.conf

محتویات این فایل باید به صورت زیر باشد:

etc/apache2/sites-enabled/000-default.conf/

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

احراز هویت برای هر دایرکتوری استفاده می‌شود. برای تنظیم احرازهویت، دایرکتوری موردنظر برای محدود کردن دسترسی را در بلاک‌هایی شبیه به <Directory ___> وارد کنید. در این مثال، ما دایرکتوری ریشه را محدود کردیم، اما شما می‌توانید هر دایرکتوری خاصی را وارد کنید:

etc/apache2/sites-enabled/000-default.conf/

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/html">
    </Directory>
</VirtualHost>

همچنین، لازم است در این بلاک، مشخص کنید که قصد دارید از احراز هویت Basic استفاده کنید. در بخش AuthName، یک نام وارد کنید. از این نام در پنجره‌ای که برای وارد کردن نام کاربری و پسورد به کاربر نمایش داده می‌شود، استفاده می‌شود. از دستور AuthUserFile نیز برای مشخص کردن مسیر فایل پسوردها استفاده کنید و در نهایت با دستور Require valid-user، مشخص می‌کنید که تنها افرادی که هویت آن‌ها براساس فایل پسوردها احراز شود، مجوز دسترسی به محتوای موجود در این دایرکتوری را دارند.

etc/apache2/sites-enabled/000-default.conf/

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/html">
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>
</VirtualHost>

تغییرات خود را ذخیره کنید و فایل را ببندید. سپس برای پیاده سازی سیاست پسورد خود، آپاچی را مجددا راه اندازی کنید:

sudo service apache2 restart

 پیکربندی کنترل دسترسی با فایل .htaccess

اگر مایل هستید به جای محافظت با پسورد، از .htaccess استفاده کنید، برای اینکه امکان ویرایش .htaccess را داشته باشید، باید ابتدا فایل پیکربندی اصلی آپاچی را ویرایش کنید:

sudo nano /etc/apache2/apache2.conf

بلاک <Directory> مربوط  به/var/www را پیدا کنید. با تغییر مقدار دستور "AllowOverride"   از "None"   به "All" در این بلاک، می‌توانید پردازش .htaccess را فعال کنید.

/etc/apache2/apache2.conf
. . .


    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted


. . .

سپس، تغییرات خود را ذخیره کنید و فایل را ببندید.

پس از آن، لازم است فایل .htaccess را به دایرکتوری که قصد دارید محدودیت روی آن اعمال شود، اضافه کنید. برای مثال، ما برای محدود کردن کل اسناد مربوط به وب سایت، این فایل را به دایرکتوری اصلی، یعنی /var/www/html اضافه کردیم. اما شما می‌توانید آن را به هر زیر دایرکتوری موردنظر خود اضافه کنید.

sudo nano /var/www/html/.htaccess

در این فایل، مشخص کنید که از احراز هویت Basic استفاده شود. برای دستور AuthName، یک نام انتخاب کنید که در زمان درخواست ورود اطلاعات ورود به کاربر نمایش داده می‌شود. از دستور AuthUserFile، آدرس فایل پسورد را وارد کنید. در آخر، عبارت Require valid-user را وارد کنید تا آپاچی قبل از نمایش محتوای درخواستی، بررسی کند که آیا کلاینت درخواست دهنده مجوز دسترسی به این منبع را دارد یا خیر.

/var/www/html/.htaccess
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

تغییرات را ذخیره کنید و فایل را ببندید. وب سرور را مجددا راه اندازی کنید و تغییرات شما، محدودیت دسترسی  به دایرکتوری ریشه با استفاده از فایل .htaccess  اعمال شود.

sudo service apache2 restart

  تایید احراز هویت با پسورد

برای اطمینان از اینکه محتوا محافظت شده است، تلاش کنید در مرورگر به محتوای محدود شده دسترسی پیدا کنید و نام کاربری و پسورد تنظیم شده برای آن را در پنجره‌ای که به شما نمایش داده می‌شود، وارد کنید.

فرم احرازهویت

اگر اطلاعات ورود را به درستی وارد کنید، محتوای در خواستی برای شما نمایش داده می‌شود. در غیر این صورت یا در صورتی که روی دکمه "Cancle" کلیک کنید، صفحه خطای "Unauthorized" نمایش داده می‌شود.

خطای عدم مجوز دسترسیاکنون شما همه آنچه را که برای پیاده سازی احراز هویت با پسورد  توسط وب سرور لازم است، می‌دانید. فقط به خاطر داشته باشید که محافظت از منابع با استفاده از پسورد، زمانی امن است که ارتباطات شما تحت پروتکل HTTPS باشد، در غیر این صورت، اطلاعات ورود کاربران به صورت متن آشکار در شبکه ارسال می‌شود.

مطالعه بیشتر در لیداوب:

امیدوارم این آموزش نیز برای شما مفید بوده باشد. منتظر آموزش‌های دیگر ما در زمینه‌های مختلف php و طراحی سایت در لیداوب باشید.

دیدگاه ها

دیدگاه ها : 0


متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

رایگان

اشتراک گذاری در
ثبت امتیاز
1 (1 رای)

   لطفا صبر کنید ...