کنترل
دسترسیها در آپاچی
سرویسدهنده
آپاچی قادر به کنترل نحوه دسترسی به
فایلها و دایرکتوریها از طریق
درخواستهای ارسال شده به سرویسدهنده
میباشد.
Directiveهایی
که در تنظیم میشوند، بر روی همان دایرکتوری
تحت پوشش خود عمل مینمایند.
کلمه
کلیدی Options
تعیین
کننده ویژگیهایی است که در آن کاربر
هنگام دسترسی به دایرکتوری مورد نظر قادر
به استفاده از آنهاست.
همچنین
میتوانید تعیین کنید که دایرکتوری مورد
نظر قادر به استفاده از فایلهای htaccess.
باشد
یا خیر.
این
امر توسط کلمه کلیدی AllowOverride
صورت
میگیرد.
<directory></directory>var/www/rest>
AllowOverride AuthConfig
Options MultiViews
Indexes SymLinksIfOwnerMatch IncludesNoExec
<limit get="get" post="post" options="options" propfind="propfind">
Order allow,deny
Allow from
all
</limit>
<limit put="put" delete="delete" patch="patch" proppatch="proppatch" mkcol="mkcol" copy="copy" move="move" lock="lock" unlock="unlock">
Order deny,allow
Deny from
all
</limit>
با
استفاده از 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
در
صورتی که مایل هستید جهت هر آدرس 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
]
/usr/sbin/apache-modconf
apache|apache-perl|apache-ssl [disable ]
[quiet]
/usr/sbin/apache-modconf apache|apache-perl|apache-ssl
[query FONT>
توجه
داشته باشید که این دستور و سایر دستورات
مدیریتی آپاچی تنها توسط کاربر ریشه قابل
اجرا میباشند.