کنترل دسترسیها در آپاچی
سرویسدهنده آپاچی قادر به کنترل نحوه دسترسی به فایلها و دایرکتوریها از طریق درخواستهای ارسال شده به سرویسدهنده میباشد. Directiveهایی که در تنظیم میشوند، بر روی همان دایرکتوری تحت پوشش خود عمل مینمایند. کلمه کلیدی Options تعیین کننده ویژگیهایی است که در آن کاربر هنگام دسترسی به دایرکتوری مورد نظر قادر به استفاده از آنهاست. همچنین میتوانید تعیین کنید که دایرکتوری مورد نظر قادر به استفاده از فایلهای htaccess. باشد یا خیر. این امر توسط کلمه کلیدی AllowOverride صورت میگیرد.
<Directory /var/www/rest>
AllowOverride AuthConfig
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
با استفاده از tagهای Limit قادر خواهید بود تا فرایندهای خاصی را بر روی دایرکتوری خاصی محدود نمایید. از کلمه کلیدی order جهت تعیین ترتیب اولویت گزینهها استفاده میشود. کلمات کلیدی Allow و Deny نیز جهت آزاد کردن یا محدود کردن فرایندها استفاده میشود.
برخی اوقات این امر اهمیت دارد تا دسترسی به دایرکتوری خاصی را محدود نمایید. ممکن است مایل باشید تا برای دسترسی به بخش خاصی، از کاربر درخواست کلمه و رمز عبور شود. به این قابلیت سرویسدهنده آپاچی کنترل دسترسی با استفاده از htaccess اطلاق میگردد. به این منظور ابتدا باید گزینه AccessFileName را در فایل پیکربندی httpd.conf فعال نمایید و یک فایل با همان نام در دایرکتوری مورد نظر که مایل به حفاظت از آن هستیدایجاد نمایید. توضیح اینکه گزینه AccessFileName بطور پیشگزیده در دبیان فعال میباشد.
AccessFileName .htaccess
سپس در فایل پیکربندی آپاچی باید کلمه کلیدی AllowOverride AuthConfig را همانگونه که در مثال بالا دیدید، برای دایرکتوری مورد نظرتان اضافه نمایید و در صورتی که این دایرکتوری در آن معرفی نشده است، باید آنرا مطابق مثال بالا در فایل پیکربندی آپاچی اضافه کنید. در زیر محتویات یک فایل htaccess. برای مثال نشان داده شده است:
AuthUserFile /var/www/rest/.htpasswd
AuthGroupFile /dev/null
AuthName "Authentication Required"
AuthType Basic
Require valid-user
کلمه کلیدی AuthUserFile نشان دهنده محل فایل حاوی کلمه عبور کاربر میباشد. AuthGroupFile نشان دهنده محل فایل گروه کابرانی است که میتوانند به این محل دسترسی پیدا کنند. AuthName نشاندهنده نام یا عنوان احراز هویت است. AuthType نیز نشانگر نوع احراز هویت است که میتواند از نوع Basic، Digest یا انواع مرتبط با بانکهای اطلاعاتی باشد. بخش Require نیز نوع درخواست سیستم احراز هویت را تعیین میکند و میتواند حاوی user و نام یک یا چند کاربر، valid-user در صورتی که فایل کلمه عبور حاوی تعداد زیادی نام کاربری است و group و نام گروههایی که نیاز به اجازه دسترسی به آنها وجود دارد باشد. برای مثال در مورد کاربران:
Require user alan armen
جهت ایجاد یک فایل کلمات عبور باید از دستور htpasswd استفاده نمایید:
# htpasswd -c .htpasswd alan
این دستور یک فایل کلمه عبور به نام htpasswd. و یک کاربر به نام alan ایجاد نموده و از شما درخواست خواهد کرد تا کلمه عبور آنرا نیز تعریف نمایید. از نظر امنیتی بکارگیری احراز هویت نوع Basic جهت امور حساس چندان مناسب نیست، زیرا با اینکه کلمات عبور در فایلهای حاوی آن با رمزنگاری MD5 ذخیره میشوند، تبادل نام کاربری و کلمه عبور بین سرویسدهنده و سرویسگیرنده با استفاده از متن ساده انجام میگیرد و در صورت وجود sniffer میتواند خوانده شود. در این گونه موارد باید از نوع Digest استفاده شود. برای استفاده از این قابلیت باید ماژول mod_auth_digest در سرویسدهنده فعال شود. به این منظور میتوانید از دستور زیر استفاده کنید:
# apache-modconf apache enable mod_auth_digest
سپس فایل htaccess. را مانند مثال زیر ویرایش نمایید:
AuthType Digest
AuthName "Private"
AuthDigestFile /var/www/rest/.htdigest
Require valid-user
و فایل htdigest. را نیز ایجاد نمایید:
# htdigest -c .htdigest auth alan
البته توجه داشته باید تبادل digest در برخی از مرورگرها پشتیبانی نمیشود، بنابراین برای حداکثر سازگاری بهتر است از SSL به همراه htaccess استفاده نمایید.
گروهها در فایلها htaccess هنگامی اهمیت پیدا میکنند که شما تعداد زیادی کاربر داشته باشید که هر یک باید به محلهای خاصی بر روی سرویسدهنده دسترسی داشته باشند. به این صورت میتوانید یک فایل مرکزی htpasswd ایجاد کرده و با گروهبندی کاربران، دسترسیهای آنها را به محلهای مناسب امکانپذیر نمایید. با استفاده از کلمات کلیدی AuthGroupFile که نشاندهنده فایل حاوی گروهها و نامهای کاربری است و Require group استفاده نمایید.
فایل گروه یک فایل متنی است که با نام گروه و یک کالن شروع شده و کاربران عضو گروه به دنبال هم در آن قرار میگیرند:
dev-group: alan armen
sup-group: nick jake
برای اینکه احراز هویت با استفاده از فایل گروه صورت گیرد، میتوان فایل htaccess. مثال بالا را به صورت زیر تغییر داد:
AuthUserFile /var/www/rest/.htpasswd
AuthGroupFile /var/groups
AuthName "Authentication Required"
AuthType Basic
Require group dev-group
هنگامی که از احراز هویت با استفاده از فایل گروه استفاده میکنید، آپاچی در حقیقت احراز هویت را در دو مرحله انجام میدهد. نخست بررسی میکند که آیا کاربر مورد نظر در گروه وجود دارد یا نه و دوم اینکه کلمه عبور ارسال شده صحیح است یا خیر. هر کدام از این دو مرحله که با شکست مواجه شود، دسترسی کاربرد به منبع مورد نظر مسدود خواهد شد. نکتهای که باید به آن توجه داشته باشید این است که فایل حاوی گروهها را در دایرکتوری که قرار است از آن حفاظت کند و یا در کل مسیرDocumentRoot آپاچی قرار ندهید، زیرا کاربران قادر خواهند بود آنرا دانلود نمایند.
Virtual Hosting در آپاچی
ویژگیهای Virtual Hosting آپاچی به منظور بکارگیری در سرویسدهندههای فضای اینترنتی استفاده میشود. به عنوان یک سرویسدهنده حانگی یا اداری کوچک، احتمالا شما نیازی نخواهید داشت تا از این قابلیت سرویسدهنده آپاچی استفاده نمایید. هنگامی که اینترنت را میبینید، هر سرویسدهنده وب عهدهدار ارائه سرویس جهت دامنههای متعددی است. این امکان را قابلیتی در Apache به عنوان Virtual Hosting فراهم میسازد. جهت فعال کردن این قابلیت شما باید از گزینه NameVirtualHost به همراه آدرس IP و یا درگاهی که مایل هستید Virtual Hosting روی آن فعال شود، استفاده نمایید. مثال زیر یک Virtual Hosting را نمایش میدهد:
NameVirtualHost 212.68.80.137
VirtualHost 212.68.80.137>
ServerName www.technotux.com
ServerAlias technotux.com
ServerAdmin postmaster@technotux.com
DocumentRoot /home/technotux/public_html
</VirtualHost>
در صورتی که مایل هستید جهت هر آدرس IP یک دامنه جداگانه اختصاص دهید، نیازی به استفاده از گزینه NameVirtualHost نیست و در خط مربوط به VirtualHost نیز باید نام دامنه را بجای آدرس IP وارد نمایید.
قابلیت Virtual Hosting آپاچی این امکان را نیز فراهم میسازد تا بتوانید فایلهای ثبت رخداد سفارشی و خاص هر سایت نیز ایجاد نمایید:
ErrorLog logs/host.some_domain.com-error.log
CustomLog logs/host.some_domain.com-access.log common
فایل پیکربندی modules.conf
قابلیتهای مختلف سرویسدهنده آپاچی و پشتیبانی از زبانها و اسکریپتهای مختلف در آن از طریق قطعاتی بنام ماژول صورت میگیرد. فایل modules.conf جهت اضافه کردن و ویرایش ماژولهای فعال در سرویسدهنده میباشد. دستوری به نام apache-modconf وجود دارد که با استفاده از آن قادر هستید تا ماژولها را در سرویسدهنده دبیان خود مدیریت نمایید. البته بسیاری از بستههای نرمافزاری مانند php4 هنگام نصب این فایل را برای شما تنظیم میکنند:
# apache-modconf
Error: /usr/sbin/apache-modconf has been called with invalid parameters
Usage: /usr/sbin/apache-modconf apache|apache-perl|apache-ssl [enable <module_name>]
/usr/sbin/apache-modconf apache|apache-perl|apache-ssl [disable <module_name>] [quiet]
/usr/sbin/apache-modconf apache|apache-perl|apache-ssl [query <module_name]
توجه داشته باشید که این دستور و سایر دستورات مدیریتی آپاچی تنها توسط کاربر ریشه قابل اجرا میباشند.
سلام بهروز
یا به قول میثم کولچکوف
راحت شدی
حالا تنها تنها میری الغدیر
ای نامرد
خوش باشی به منم سر بزن
alisoft