نصب و پیکربندی سرویس دهنده وب آپاچی
تمامی سرویس دهنده های وب (Web Servers )، جهت استاندارد و یکسان بودن در نحوه ارسال، دریافت و پردازش داده ها، از یک پروتکل ساده موسوم به Hypertext Transfer Protocol یا HTTP استفاده می کنند. این پروتکل نرم افزارهای سرویس گیرنده وب را که به مرورگرهای وب (Web Browser ) موسوم هستند، قادر می سازد تا بدون اینکه بدانند با چه سرویس دهنده وبی در حال ارتباط هستند، به تبادل داده بپردازند. نصب سرویس دهنده آپاچی # apt-get install apache روش دیگر نصب سرویس دهنده وب آپاچی دریافت و کامپایل آن بطور کامل از کد منبع می باشد. جدیدترین نسخه های Apache را می توانید از وب سایت پروژه آن در آدرس http://www.apache.org دریافت نمایید. البته شخصا این کار را به دلیل دشواری در بروز نگه داشتن سرویس دهنده از نظر امنیتی توصیه نمی کنم. # apt-get install apache-ssl باید در نظر داشته باشید که برای استفاده رسمی از قابلیت های SSL باید یک Certificate مربوط به SSL را در سایت هایی که اینگونه خدمات را ارائه می دهند، ثبت نمایید تا قابلیت SSL سایت شما در مرورگرهای وب معتبر شناخته شود. در غیر اینصورت، تنها می توانید از قابلیت های ساده رمزنگاری SSL بر روی سرویس دهنده خود استفاده نمایید. مانند رمزنگاری سیستم های مدیریتی مبتنی بر وب. فایل های پیکربندی آپاچی کنترل سرویس دهنده آپاچی # apachectl start : راه اندازی سرویس دهنده آپاچی در صورتی که در توزیع شما دستور apachectl وجود ندارد، می توانید از این دستور استفاده نمایید: # /etc/init.d/apache فایل پیکربندی httpd.conf ServerType standalone Port : شماره درگاهی که سرویس دهنده شما به آن گوش خواهد داد. پیش گزیده آن درگاه شماره ۸۰ می باشد. Port 80 HostnameLookups : در صورتی که این گزینه بر روی On تعریف شده باشد، در فایل های ثبت رخداد، بجای آدرس IP ، نام واقعی Host سرویس گیرنده ها درج خواهد شد. تنظیم آن بر روی On مفید است، مخصوصا هنگامی که بخواهید بدانید که بازدید کننده ای از چه سایتی است. HostnameLookups Off مالکیت (User/Group ) : این گزینه نقش بسیار مهمی بر روی امنیت سیستم شما خواهد داشت. سرویس وب بصورت ریشه اجرا شده و سپس سطح دسترسی خود را به یک کاربر و گروه خاص کاهش می دهد. این بخش تعیین کننده نام و گروهی است که در این مورد استفاده خواهد شد. در دبیان، هنگام نصب بسته آپاچی، کاربر و گروهی به نام www-data ایجاد و از آن به این منظور استفاده خواهد شد. دلیل استفاده از این کاربر و گروه جلوگیری از نفوذ به درون سیستم از طریق سرویس دهنده وب می باشد. حساب www-data دارای حقوق دسترسی بسیار پایینی است. User www-data ServerAdmin : این گزینه حاوی آدرس پست الکترونیک شخص اداره کننده سرویس دهنده است که باید یک آدرس پست الکترونیک معتبر باشد تا امکان گزارش اشکالات یا درخواست ها به آن فراهم شود. # tail -f /var/log/apache/error.log فایل های ثبت رخداد apache-ssl در مسیر /var/log/apache-ssl / قرار دارند. CacheNegotiatedDocs : این بخش حاوی چندین گزینه سیستمی است. گزینه نخست که می باشد، باعث خواهد شد تا سرویس دهنده Proxy صفحات سرویس دهنده را Cache نماید. Timeout : همیشه ممکن است ارتباطات در اینترنت به دلایلی مانند ترافیک، خرابی ها و... دچار تاخیر گردند. گزینه Timeout تعیین کننده مدت زمانی است که یک درخواست قادر است به سرویس دهنده وارد شده و از آن خارج شود. (ثانیه). سرویس دهنده قادر است درخواست هایی را که از زمان مجاز عبور کرده اند، متوقف نماید. Timeout 300 KeepAlive : هنگامی که این گزینه بر روی On تعریف شده باشد، سرویس دهنده قادر خواهد بود تا چندین تراکنش را بر روی یک Connection اجرا نماید. این گزینه به طرز فزاینده ای سرعت کار سرویس دهنده را افزایش خواهد داد، زیرا به ازای هر درخواست یک اتصال جداگانه ایجاد نخواهد شد. Server Pool : این بخش چگونگی اجرای دیمن آپاچی را تعیین می کند. گزینه های MinSpareServers و MaxSpareServers تعیین کننده تعداد پروسه های child سرویس دهنده آپاچی است. این گزینه برای بهبود Performance سرویس دهنده هنگام افزایش های ناگهانی بار بسیار مفید است. اعداد پیش گزیده ۵ و ۱۰ سرویس دهنده child می باشد. گزینه StartServers نیز تعیین کننده تعداد سرویس دهنده های child در هنگام آغاز به کار آپاچی می باشد. در صورتی که مقدار StartServers کمتر از MinSpareServers تعیین شود، سرویس دهنده با مقدار تعیین شده در MinSpareServers راه اندازی خواهد شد. MinSpareServers 5 MaxClients : حداکثر تعداد سرویس گیرنده هایی که می توانند به طور همزمان به سرویس دهنده متصل شوند را تعیین می کند. MaxClients 150 DocumentRoot : مسیر اصلی قرار گیری فایل ها و صفحات وب در سرویس دهنده آپاچی. DocumentRoot /var/www AddCharset : تعیین کننده کاراکتر ست های قابل پشتیبانی در آپاچی است که صفحات وب پردازش شده را تحت تاثیر قرار خواهد داد. باید AddCharset UTF-8 .utf8 برای پشتیبانی از utf8 فارسی در این بخش اضافه گردد: AddCharset UTF-8 .utf8 AddDefaultCharset : در صورتی که بر روی on تنظیم شده باشد، سرویس دهنده صفحات را بطور پیش گزیده با کاراکترست ISO-8859-1 پردازش خواهد نمود. برای پشتیبانی از utf8 باید بر روی off تنظیم شود. DirectoryIndex : فایل هایی که بصورت Index هر دایرکتوری شناخته خواهند شد، در این بخش تعریف می شوند. مانند index.html یا default.html . در برخی از نسخه های Apache در برخی از توزیع ها باید گزینه index.php را بطور دستی اضافه نمایید. DirectoryIndex index.html index.htm index.shtml index.cgi index.php UserDir : در صورتی که این گزینه فعال باشد، تمامی کاربران سیستم قادر خواهند بود تا صفحات وب مربوط به خود را بر روی سرویس دهنده داشته باشند که با آدرس http://localhost/~userid قابل دسترسی خواهد بود. localhost می تواند با آدرس IP یا نام دامنه تعویض گردد. کافی است تا هر کاربر یک پوشه public_html در دایرکتوری خانگی خود ایجاد نموده و صفحات وب مربوط به خود را در آنجا قرار دهد. برای استفاده از این قابلیت، ماژول UserDir باید در آپاچی فعال باشد: LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so Redirection and aliasing : این امکان شرایطی را فراهم می سازد تا بتوان فایل ها و صفحات وب را در جایی غیر از جایی که سرویس گیرنده به آن اشاره می نماید ذخیره کرد. گزینه Redirect امکان هدایت یک آدرس URI خاص را به یک آدرس URL فراهم می سازد. مثلا ممکن است بر روی سرویس دهنده خود یک آدرس قدیمی داشته باشید که به آدرسی دیگری تغییر کرده باشد. با استفاده از این قابلیت قادر خواهید بود تا کاربرانی را که هنوز به آدرس قدیمی مراجعه می نمایند، بطور خودکار به آدرس جدید هدایت نمایید: Redirect /data/ http://www.technotux.com/docs / Alias به فایل هایی که خارج از DocumentRoot سرویس دهنده قرار دارند، اشاره می نماید. به این معنی که در صورتی که نیاز داشته باشید تا فایل های را که خارج از DocumentRoot سرویس دهنده قرار دارند از داخل سرویس دهنده آپاچی قابل دسترسی نمایید، از این کلمه کلیدی استفاده می نمایید: Alias /doc/ /usr/share/doc / گزینه ScriptAlias همانند Alias کار می کند با این تفاوت که تنظیم کننده موقعیت اصلی اسکریپت های وب می باشد. مانند اسکریپت های cgi : ScriptAlias /cgi-bin/ /usr/lib/cgi-bin / AddType : این گزینه برای اضافه کردن نوع فایل خاصی به فایل های قابل شناسایی توسط سرویس دهنده می باشد. برای مثال در زیر تنظیم مربوط به فایل های php را مشاهده می نمایید: AddType application/x-httpd-php .php ErrorDocument : این گزینه جهت سفارشی سازی صفحات نمایش پیغام های خطا بکار می رود. مانند نمایش یک صفحه HTML خاص و یا Redirect به آدرس وب خاص. ErrorDocument 404 /missing.html کنترل دسترسی ها در آپاچی <directory></directory>var/www/rest> با استفاده از tag های Limit قادر خواهید بود تا فرایند های خاصی را بر روی دایرکتوری خاصی محدود نمایید. از کلمه کلیدی order جهت تعیین ترتیب اولویت گزینه ها استفاده می شود. کلمات کلیدی Allow و Deny نیز جهت آزاد کردن یا محدود کردن فرایند ها استفاده می شود. AccessFileName .htaccess سپس در فایل پیکربندی آپاچی باید کلمه کلیدی AllowOverride AuthConfig را همانگونه که در مثال بالا دیدید، برای دایرکتوری مورد نظرتان اضافه نمایید و در صورتی که این دایرکتوری در آن معرفی نشده است، باید آنرا مطابق مثال بالا در فایل پیکربندی آپاچی اضافه کنید. در زیر محتویات یک فایل htaccess . برای مثال نشان داده شده است: AuthUserFile /var/www/rest/.htpasswd کلمه کلیدی 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 و فایل htdigest . را نیز ایجاد نمایید: # htdigest -c .htdigest auth alan البته توجه داشته باید تبادل digest در برخی از مرورگرها پشتیبانی نمی شود، بنابراین برای حداکثر سازگاری بهتر است از SSL به همراه htaccess استفاده نمایید. dev-group: alan armen برای اینکه احراز هویت با استفاده از فایل گروه صورت گیرد، می توان فایل htaccess . مثال بالا را به صورت زیر تغییر داد: AuthUserFile /var/www/rest/.htpasswd هنگامی که از احراز هویت با استفاده از فایل گروه استفاده می کنید، آپاچی در حقیقت احراز هویت را در دو مرحله انجام می دهد. نخست بررسی می کند که آیا کاربر مورد نظر در گروه وجود دارد یا نه و دوم اینکه کلمه عبور ارسال شده صحیح است یا خیر. هر کدام از این دو مرحله که با شکست مواجه شود، دسترسی کاربرد به منبع مورد نظر مسدود خواهد شد. نکته ای که باید به آن توجه داشته باشید این است که فایل حاوی گروه ها را در دایرکتوری که قرار است از آن حفاظت کند و یا در کل مسیرDocumentRoot آپاچی قرار ندهید، زیرا کاربران قادر خواهند بود آنرا دانلود نمایند. Virtual Hosting در آپاچی NameVirtualHost 212.68.80.137 در صورتی که مایل هستید جهت هر آدرس IP یک دامنه جداگانه اختصاص دهید، نیازی به استفاده از گزینه NameVirtualHost نیست و در خط مربوط به VirtualHost نیز باید نام دامنه را بجای آدرس IP وارد نمایید. ErrorLog logs/host.some_domain.com-error.log فایل پیکربندی modules.conf # apache-modconf توجه داشته باشید که این دستور و سایر دستورات مدیریتی آپاچی تنها توسط کاربر ریشه قابل اجرا می باشند. ![]() مرتبط با موضوع : 5 راه برای افزایش امنیت در وب سرور آپاچی - قسمت اول [سه شنبه، 11 مرداد ماه ، 1390] Apache یک انتخاب [يكشنبه، 12 ارديبهشت ماه ، 1389] |
آخرین مقالات
پربیننده ترین مقالات
مقالات تصادفی
امتیاز دهی به مطلب
تعداد آراء: 2 ![]() انتخاب ها
|
