: :
مانده تا پایان تخفیف
فقط تا آخر امروز
فقط امروز
محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

کاملترین آموزش IIS از معماری و تکنیک ها تا ابزارها + گام به گام

در این مقاله آموزشی شما با وب سرور IIS و نحوه استفاده از آن آشنا خواهید شد. در این مطلب به بررسی وب سرور IIS، معماری و نحوه استفاده از آن خواهیم پرداخت.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
سرفصل های این مطلب
  1. معماری ، ابزارها و تکنیک ها در IIS
    1. معرفی ساختار Kernel Mode Listener
    2. بررسی ساختار ماژولار IIS 7 و IIS 7.5 و IIS 10
    3. نتیجه
  2. نصب IIS و معرفی قابلیت ها و امکانات
    1. آموزش نصب IIS بصورت گام به گام
    2. کاربرد Common HTTP Features  در IIS چیست؟
    3. تفاوت سایت Dynamic و Static در IIS چیست؟
    4. کاربرد Default Document در IIS چیست؟
    5. کاربرد  Custom Error در IIS چیست؟
    6. قابلیت Redirect کردن آدرس وب در وب سرور IIS
    7. کاربرد Application Development  در IIS چیست؟
    8. کاربرد Health and Diagnostics در IIS چیست؟
    9. تنظیمات Security در IIS چیست؟
    10. Performance در IIS چیست؟
    11. Management Tools در IIS چیست؟
    12. File Transfer Protocol (FTP) Publishing Service Features در IIS چیست؟
    13. نتیجه
  3. Bindings ، Logging ، MIME Types و ...
    1. آموزش ایجاد Binding یا چسباندن در وب سرور IIS
    2. آموزش راه اندازی Virtual Directoriy در IIS
    3. آموزش فعال کردن لاگ برداری در IIS | تنظیمات Logging
    4. آموزش تنظیمات MIME Types در IIS
    5. نتیجه
  4. Application Pool ، Worker Process و Recyc
    1. Classic Mode در IIS چیست؟
    2. Integrated Mode در IIS چیست؟
    3. نتیجه
  5. ISAPI Extention ، ISAPI Filter و CGI
    1. Extension در  IIS چیست؟
    2. ISAPI چیست؟
    3.  ISAPI یا ISAPI Applications چیست؟
    4. ISAPI Extension چیست ؟
    5. ISAPI Filter ها چیست؟
    6. ساختار کارکرد ISAPI Filter ها و ISAPI Extension ها چگونه است ؟
    7. منظور از CGI و Fast CGI در Extension های IIS چیست ؟
    8. استفاده از Extension ها در IIS
    9. نتیجه
  6. آموزش راه اندازی FTP سرور در IIS و تنظیماتش
    1. آموزش راه اندازی FTP سرور در ویندوز سرور
  7. آموزش تنظیمات امنیتی و کاربردی در FTP سرور
    1. آموزش تنظیمات احراز هویت در FTP در IIS
    2. آموزش فعال سازی Anonymous FTP Authentication در IIS
    3. آموزش فعال سازی Basic FTP Authentication در IIS
    4. آموزش تنظیمات Authorization در FTP در IIS
    5. آموزش تنظیمات User Isolation در FTP در IIS
    6. آموزش تنظیمات پیام دلخواه ورود به FTP سایت
    7. آموزش تنظیمات FTP Directory Browsing در IIS
    8. آموزش تنظیمات FTP Firewall Support در IIS
    9. آموزش تنظیمات FTP IPv4 Address and Domain Restriction در IIS
    10. آموزش تنظیمات FTP SSL Settings در IIS
  8. خلاصه

معماری ، ابزارها و تکنیک ها در IIS

در اولین قسمت از این سری مطالب شما را ابتدا با معماری کلی وب سرور IIS آشنا می کنیم و روش هایی که این سرور به درخواست ها پاسخ می دهد و شیوه پردازش درخواست ها را بررسی خواهیم کرد .در ادامه به معرفی ابزارهای مختلف مدیریتی این سرور خواهیم پرداخت و کمی هم در خصوص تفاوت های نسخه 7 و 7.5 وب سرور IIS با نسخه قبلی که IIS 6.0 صبحت خواهیم کرد . هدف اصلی این سری مقالات آشنایی شما دوستان با ساختار IIS 7 و IIS 7.5 است و امیدوار هستیم در انتهای این سری مقالات به این هدف برسیم.

معرفی ساختار Kernel Mode Listener

بصورت کلی ساختار سیستم عامل ها به دو لایه تقسیم می شود ، لایه هسته یا Kernel Mode و لایه کاربر یا User Mode ، لایه کرنل یا Kernel Mode نزدیکترین لایه به سیستم عامل است و سریعترین محل برای اجرای نرم افزارها و دستورات محسوب می شود اما هر نرم افزاری که در این لایه اجرا شود به منابع سیستمی حساسی بصورت مستقیم دسترسی خواهد داشت و همین امر موجب می شود که در صورت بروز هرگونه مشکلی در این لایه برای هر نرم افزاری که در آن کار می کند کل سیستم عامل دچار مشکل می شود و معمولا در چنین مراحلی است که شما خطاهای صفحه آبی یا Blue Screen را مشاهده می کنید .

در این لایه نرم افزارهایی مثل درایورهای سیستم نصب و کار می کنند تا بتوانند در سریعترین زمان ممکن اجرا شوند . همانطور که دیدید استفاده از این لایه برای نرم افزارهای کاربردی در دو بعد قابل بررسی بود ، بعد اول سرعت اجرا و بعد دوم خطاهای احتمالی است . این لایه را در ذهن داشته باشید تا لایه بعدی را معرفی کنیم ، در لایه کاربر یا User Mode نرم افزارها با سرعت کمترو البته در محیط محدود شده و محافظت شده ای از سیستم عامل اجرا می شوند .

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


Http Listener در IIS چیست ؟

برای مثال همانطور که اشاره شد درایورهای سیستم عامل در لایه کرنل فعالیت می کنند و در صورت بروز مشکل کل سیستم دچار مشکل شده و بعضا خطاهای صفحه آبی یا همان Blue Screen صادر می شوند ، اما نرم افزارهایی مثل آفیس ورد یا Excel در لایه کاربری فعالیت می کنند و در صورت بروز هرگونه مشکل در این لایه صرفا باعث بروز خطا در همان نرم افزار خواهد شد و سیستم عامل تحت تاثیر این مشکل قرار نخواهد گرفت ، قطعا در ویندوز یا چنین خطاهایی مواجه شده اید که سیستم به حالت Not Responding قرار میگیرد و نمی تواند آن نرم افزار خاص را اجرا کند در صورتیکه کارهای دیگر سیستم به درستی انجام می شود.

خوب در بحث وب سرور تصور کنید که یکی از وب سایت هایی که در IIS وجود دارد و در لایه کرنل فعالیت می کند به مشکل بخورد ، چه اتفاقی ممکن اسات بیافتد ؟ بله تمامی وب سایت های دیگر هم دچار مشکل خواهند شد و به خاطر وجود یک باگ ضعیف در کدهای یک نرم افزار کل سیستم دچار مشکل می شود . برای حل این مشکل در وب سرور IIS و بصورت خاص از نسخه 6 آن که در ویندوز سرور 2003 معرفی شد ساختار به نام Http Listener به سیستم عامل اضافه شد . در این حالت هیچگونه درخواستی و عملیات پردازشی در لایه کرنل سیستم عامل انجام نمی شود .

در این حالت سرور ابتدا درخواست ها را در لایه کرنل و توسط سرویسی به نام Http Listener دریافت کرده و آنها را تحلیل میکند ، منظور از تحلیل این است که وب سرور IIS توانایی میزبانی بیش از چندین وب سایت را دارد و بر همین اساس درخواست هایی که از طریق وب دریافت می کند متفاوت می باشد و بایستی درخواست مورد نظر دقیقا به وب سایت مورد نظر ارجاع داده شود ، در صورت درخواست پردازش خاص یا ساده تر بگوییم وب سایت خاص ، این سرویس که در لایه کرنل فعال است درخواست ها را بصورت تفکیک شده بر اساس هر درخواست به لایه کاربر یا User Mode برای اجرا ارسال می کند و در اینجاست که بر اساس هر درخواست یک پردازش یا Process در CPU ایجاد می شود.


وظیفه Http Listener و فایل HTTP.SYS  در IIS

حال اگر برای هر یک از این درخواست ها مشکلی پیش بیاید براحتی همان درخواست را می توانید بدون ایجاد مشکل برای سایر درخواست ها از صف پردازش خارج کنید و وب سرور شما به مشکل نخواهد خورد . با این روش ضمن اینکه امنیت سیستم عامل بالا می رود امکان تفیکیک و اولویت بندی پردازش ها نیز ایجاد خواهد شد. با توجه به اینکه در این قسمت بصورت ویژه به مبحث وب سرور اشاره می کنیم توجه کنید که پس از اینکه Http Listener درخواست را به لایه User Mode انتقال داد به ازای هر درخواست یک پردازش به نام wp.exe که مخفف Worker Process است ایجاد خواهد کرد.

شما براحتی می توانید از طریق Task Manager این پردازش های ایجاد شده توسط Http Listener را مشاهده کنید . جالب اینجاست بدانید که Http Listener به دلیل اینکه می تواند وجود یا عدم وجود صفحات درخواستی و یا نوع درخواست هایی وارد می شود را برررسی کند می تواند در همان لایه کرنل تعیین کند که درخواست وارده درست یا معتبر است یا حمله به وب سرور است و در عین حال در همان لایه این درخواست های غیرمعتبر را حذف و رد می کند. توجه کنید که Http Listener به هیچ عنوان عمل پردازشی در لایه Kernel Mode انجام نمی دهد .

بررسی ساختار ماژولار IIS 7 و IIS 7.5 و IIS 10

امروزه امنیت در وب سرورها یکی از مهمترین قسمت های زندگی هر ITMAN شده است . اگر با وب سرورهای قدیمی تر مایکروسافت کار کرده باشید حتما به خاطر دارید که در هنگام نصب این وب سرور شما می توانستید تا حدودی تعیین کنید که چه امکاناتی به همراه وب سرور بر روی آن نصب شود .

هرچه به عقب تر برگردیم این ساختار تعیین امکانات نصب برای وب سرورها کمتر می شد تا جاییکه وقتی شما می خواستید یک وب سرور را نصب کنید به ناچار مجبور بودید که کلیه امکانات را به یکباره نصب کنید و قادر به تفکیک امکانات نصب نبودید . اما چه اهمیتی دارد که شما بتوانید برای وب سرور تعیین کنید که چه امکانات یا Feature هایی داشته باشد یا نداشته باشد ؟

در دنیای امنیت اطلاعات و همچنین برنامه نویسی که حتما شما تا حدودی با این مسئله آشنایی دارید ، هر قطعه کد به تنهایی می تواند دارای یک سری باگهای امنیتی باشد که در صورت اجرا می توانند باعث بروز مشکلاتی برای وب سرور شوند و بعضا باعث بروز مشکلات امنیتی بر روی آن شوند.

اگر کمی در خصوص سیستم های مدیریت امنیت اطلاعات بدانید متوجه این موضوع می شوید که در جاهایی که یک سازمان دارای یک ریسک است که آن ریسک برای آن سازمان اصلا در حد ضربه زدن و بروز مشکل اساسی در سازمان نیست ، این ریسک منتفی یا نادیده گرفته می شود .

خوب همین بحث را در خصوص وب سرور IIS نیز داریم ، اگر قرار نیست ما بر روی سرور خود قابلیت Browse کردن دایرکتوری های سرور را بدهیم بنابراین اصلا این امکان وب سرور را نصب نمی کنیم و ریسک سوء استفاده از آن را به صفر می رسانیم .

در نسخه 7 و 7.6 از وب سرور IIS بر خلاف نسخه های قبلی تمامی موارد و امکانانی که مد نظر یک کاربر است در قالب یک ماژول یا Feature ارائه شده است ، شما می توانید براحتی تعیین کنید که به چه امکاناتی نیاز دارید و صرفا همانها را نصب کنید و بدین ترتیب از بروز مشکلات و تهدیدات ناشی از نصب بیهوده امکانات وب سرور که متاسفانه بر حسب عادت اکثر دوستان در ایران در هنگام نصب سرور همه امکانات آن را نصب می کنند ، جلوگیری خواهید کرد.

برای اینکه درک بهتری از موضوع ماژول های داشته باشید من وارد کنسول گرافیکی IIS در ویندوز سرور 2008 شده ام تا کمی بصورت تصویری با این ماژول ها آشنا شوید ، دقت کنید هنوز ما وارد بحث آموزش این کنسول نشده این و صرفا این قسمت جنبه نمایشی دارد ، در مراحل بعدی از مقالات به صورت جزء به جزء از نصب و انجام تنظیمات تک تک این موارد گذر خواهیم کرد . تصویر زیر ماژول هایی که شما در هنگام نصب IIS بصورت تمام و کمال بر روی سرور موجود می باشند را مشاهده می کنید :


کاربرد ماژول های مختلف در IIS


کاربرد ماژول های مختلف در IIS

اگر با IIS 6.0 کار کرده باشید قطعا به محض باز کردن کنسول IIS 7 متعجب خواهید شد ، این کنسول جدید کاملا با کنسول های قبلی وب سرور IIS متفاوت است و تقریبا می توان گفت متحول شده است . به تصاویر بالا دقت کنید ، تمامی موارد و امکاناتی که برای یک وب سرور مورد نیاز هستند بصورت مجزا در این سرور قرار گرفته اند و این یعنی در صورت عدم نیاز به هر کدام از این سرویس های آنها را غیر فعال می کنیم و در نهایت به امنیت بیشتر و کارایی بیشتر سرویس وب می انجامد .

اما امکان جالب دیگری که در این سرویس IIS 7 اضافه شده است این است که شما در هنگام نصب امکانات و Feature ها می توانید تعیین کنید که کنسولی ویژه مدیریت وب سرور های IIS 6.0 نیز به سرور اضافه شود و بدین وسیله می توانید سرورهای IIS 6.0 دیگر را از طریق همین کنسول مدیریت کنید ، در زیر تصویر مربوط به این کنسول را می توانید مشاهده کنید :


کنسول مدیریتی IIS نسخه 6 در نسخه 7 و 7.5

در این قسمت قصد آموزش استفاده از این ماژول ها را نداریم بلکه صرفا جهت آشنایی با محیط کاری IIS چند نکته را اشاره کردیم ، استفاده از این ابزارها را می توانید در قسمت های بعدی مقالات بصورت ریز شده مشاهده کنید ، اما بد نیست بدانید که با انتخاب هر وب سایتی که در IIS وجود دارد ماژول ها و امکانات ویژه همان وب سایت به شما نمایش داده می شود.

در تصویر زیر من بر روی صفحه پیشفرض وب سایت IIS کلیک کرده ام که همانطور که مشاهده می کنید ماژول های مرتبط در جلوی آن نمایش داده شده است ، از طرفی برای انجام تنظیمات این ماژول ها سه راه وجود دارد ، اول کلیک کردن بر روی هر کدام از ماژول ها پس از نمایش ، راست کلیک کردن بر روی هر وب سایت و مشاهده مشخصات و در آخر کاملترین مورد استفاده از منوی Action در قسمت سمت راست و بالای کنسول سرور IIS است که می توانید این موارد به تفکیک در قسمت زیر مشاهده کنید.


نمایش ماژول های هر وب سایت در IIS


  • با کلیک کردن بر روی هر وب سایت ماژول های خاص آن در پنل وسط نمایش داده می شوند


کاربرد ماژول های مختلف در IIS


  • با راست کلیک کردن بر روی هر وب سایت می توانید تنظیمات اولیه آن را انجام دهید


کاربرد پنل Action  در کنسول مدیریتی IIS


  • با استفاده از پنل Action در قسمت چپ کنسول IIS می توانید تنظیمات پیشرفته وب سایت را انجام دهید


کنسول گرافیکی که به آن اشاره شد یکی از راه های مدیریت وب سرور IIS 7 می باشد . راه دیگر مدیریت وب سرور استفاده از قابلیت هاو اسکریپت های نوشته شده به وسیله خط فرمان PowerShell است . اگر بخواهیم از ابتدا این مسئله را بررسی کنیم بایستی کمی به عقب بر گردیم ، این مسئله بدیهی است که هر مدیر شبکه ای بخواهد برخی از کارهایی که به وی سپرده می شود را بصورت خودکار انجام دهد .

در گذشته برای انجام اینکار از زبان برنامه نویسی VBScript استفاده می شد ، اما با گذشت زمان مایکروسافت استفاده از این زبان را تا حدود زیادی منسوخ کرد و زبان جدیدی یا بهتر بگوییم Shell جدیدی به نام Powershell را ارائه کرد و به مرور این زبان را جایگزین زبان VBSCript در بحث مدیریت سرورها و سرویس ها کرد. PowerShell یک مجموعه اسکریپت از پیش طراحی شده در قالب Template دارد که با استفاده از این اسکریپت های نوشته شده ، شما می توانید بسیاری از فعالیت ها و کارهای روزمره سرویس های خود اعم از IIS را مدیریت کنید .

همانطور که اشاره شد در این قسمت صرفا به معرفی این قابلیت مدیریتی می پردازیم و در صورت امکان در ادامه این سری مقالات بصورت مفصل در خصوص استفاده از PowerShell در مدیریت IIS خواهیم پرداخت ، اما بد نیست تا اینجا که رسیده ایم کمی هم با ظاهر و کارکرد این خط فرمان قدرتمند آشنا شویم ، در ادامه می توانید مراحل ابتدایی استفاده از Powershell برای مدیریت IIS را مشاهده کنید . برای ورود به محیط Powershell کافیست آیکن آبی رنگ کتار دکمه Start را کلیک کنید.


Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

 PS C:\Users\Administrator> cd $pshome    ورود به پوشه خانگی پاورشل
 PS C:\Windows\System32\WindowsPowerShell\v1.0> cd modules    ورود به قسمت ماژول های موجود
 PS C:\Windows\System32\WindowsPowerShell\v1.0\modules> dir   گرفتن لیست ماژول های موجود
Directory: C:\Windows\System32\WindowsPowerShell\v1.0\modules

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        11/20/2010   9:45 PM            ADRMS
d---s        11/20/2010   9:45 PM            AppLocker
d----        11/20/2010   9:45 PM            BestPractices
d---s        11/20/2010   9:45 PM            BitsTransfer
d----         7/13/2009  10:37 PM            PSDiagnostics
d----        11/20/2010   9:45 PM            ServerManager
d----        11/20/2010   9:45 PM            TroubleshootingPack
d----          2/4/2013  11:59 PM            WebAdministration


PS C:\Windows\System32\WindowsPowerShell\v1.0\modules> import-module webadministration   وارد کردن اسکریپت ها
PS C:\Windows\System32\WindowsPowerShell\v1.0\modules> get-psdrive   نمایش درایوهای پاورشل موجود

Name           Used (GB)     Free (GB) Provider      Root                         CurrentLocation
----           ---------     --------- --------      ----                                               
A                                      FileSystem    A:Alias                                  Alias
C        7.71         32.19 FileSystem    C:\               ...dowsPowerShell\v1.0\modules
cert                                   Certificate   D                   2.76               FileSystem    D:Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
IIS                                    WebAdminis... \\ITPRO
Variable                               Variable
WSMan                                  WSMan


PS C:\Windows\System32\WindowsPowerShell\v1.0\modules> cd IIS: ورود به درایو مربوط به وب سرور
PS IIS:\> dir   مشاهده پوشه های موجود در وب سرور

Name
----
AppPools
Sites
SslBindings


PS IIS:\> cd sites   ورود به پوشه سایت های موجود
PS IIS:\sites> dir    مشاهده سایت های موجود

Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    %SystemDrive%\inetpub\wwwroot  http *:80:


PS IIS:\sites> cd '.\Default Web Site'   ورود به تنظیمات وب سایت پیشفرض
PS IIS:\Sites\Default Web Site> dir     مشاهده پوشه های وب سایت پیشفرض

    Directory: WebAdministration::\\ITPRO\Sites\Default Web Site


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----          2/5/2013  12:02 AM            aspnet_client
-a---          2/4/2013  11:59 PM        689 iisstart.htm
-a---          2/4/2013  11:59 PM     184946 welcome.png

نتیجه

خوب در این قسمت به معرفی ساختار Kernel Mode و همچنین Http Listener پرداختیم و بعد از آن با انواع کنسول های مدیریتی گرافیکی و خط فرمانی که همان PowerShell است تا حدودی آشنا شدیم و متوجه شدیم که IIS نسخه 7 دارای چه تعداد امکانات و Feature های تفکیک شده است و دلیل این تفکیک و ریز شدن ماژول ها چه می باشد .

در اینجا شما مفهوم Work Process را متوجه شدید و قاعدتا اگر در مراحل بعدی قسمت با چنین واژه ای برخورد کنید متوجه می شوید که این مفهوم به چه کار می آید و در کجا کاربرد دارد ، در قسمت بعدی به بررسی امکانات و همچنین نصب IIS در ویندوز سرور 2008 با ذکر توضیحات در خصوص هر کدام از این امکانات خواهیم پرداخت .

نصب IIS و معرفی قابلیت ها و امکانات

امیدوارم که از خواندن قسمت قبلی در خصوص IIS استفاده لازم را برده باشید ، در این قسمت برای شما نقش یا همان Role مربوط به IIS را بیشتر تشریح می کنیم و از طرفی تمامی امکاناتی که در هنگام نصب IIS از ما سئوال می شود را معرفی خواهیم کرد . با توجه به اینکه در قسمت قبلی نیز اشاره کردیم IIS یک ساختار ماژولار دارد بنابراین ما بایستی بر حسب نیاز خودمان تشخیص دهیم که برای استفاده درست از این وب سرور به چه نوع و تعداد از این ماژول ها نیاز داریم و صرفا همان هایی که مورد نیازمان هستند را نصب کنیم .

این مورد را همیشه در ذهن داشته باشیم که برخلاف زندگی که در آن هر امکاناتی که ممکن باشد را می خواهیم داشته باشیم در خصوص وب سرورها در صورتیکه نیاز به یک ویژگی نداریم نبایستی آن را نصب و راه اندازی کنیم ، چه بسا در بسیاری از موارد همین نصب بی مورد ماژول ها و امکانات بلا استفاده باعث بروز مشکلات امنیتی بسیاری در سرور ما خوهد شد . در این قسمت همانطور که گفته شد ما Role و Feature های مختلف IIS را معرفی می کنیم و مزایای هر کدام را تا حد امکان بررسی می کنیم ، پس تا انتهای قسمت با ما باشید.

آموزش نصب IIS بصورت گام به گام

برای نصب وب سرور IIS روش های متعددی وجود دارد ، اما در ویندوز سرور 2008 ساده ترین و معمول ترین روش نصب وب سرور IIS استفاده از کنسول Server Manager است . اگر قصد نصب IIS در ویندوز سون را دارید می توانید به لینک قسمت ای که در ادامه ذکر شده است در خصوص نصب و راه اندازی وب سرور IIS در ویندوز کلاینت سون مراجعه کنید . اما بیشتر بحث ما در این خصوص در مورد نصب IIS در ویندوز سرور خواهد بود .

توجه کنید که شما در ویندوز سرور 2008 می توانید توسط کنسول Server Manager به سرورهای دیگر متصل شده و Role های مورد نظر خودتان را بر روی آنها مدیریت کنید. روش دیگری هم به غیر از استفاده از کنسول Server Manager وجود دارد که در ادامه مقالات به آن اشاره ای خواهیم کرد و آن استفاده از PowerShell و دستورات خط فرمانی و اسکریپت های موجود در آن می باشد .

در اینجا فرض را بر این می گذاریم که شما IIS را در ویندوز سرور 2008 و از طریق کنسول گرافیکی می خواهید نصب و راه اندازی کنید ، در خصوص نصب و راه اندازی IIS در ویندوز سرور 2008 و محیط Server Manager قبلا قسمت ای نوشته ام که در صورت تمایل می توانید به لینک های زیر مراجعه کنید.



خوب فرض رو بر این می گذاریم که شما می خواهید IIS را نصب کنید ، در اینجا به معرفی تک تک قسمت های موجود در هنگام نصب IIS و توضیحات مربوط به آنها خواهیم پرداخت ، صفحه ای که در زیر مشاهده می کنید صفحه ای است که در هنگام ورود به کنسول Server Manager و انتخاب گزینه Add Role و در نهایت انتخاب گزینه Web Server به شما نمایش داده می شود ، می باشد . ما توضیحات خود را بر اساس تک تک موارد از بالا به پایین ارائه خواهیم کرد . دقت کنید که با انتخاب گزینه و چک خوردن آن ، امکان ذکر شده نصب شده با برداشتن تیک امکان مورد نظر حذف خواهد شد .

کنسول نصب Role وب سرور در ویندوز سرور 2008


  • تصویر مربوط به کنسول نصب امکانات IIS در ویندوز سرور 2008


بعد از اینکه وارد کنسول مربوط به نصب IIS شدید بصورت کلی چهار قسمت را می توانید مشاهده کنید .قسمت اول Web Server است که به خودی خود کاری انجام نمی دهد و صرفا برای این می باشد که شما بتوانید از زیر مجموعه های آن امکانات مختص خدمات وب IIS را انتخاب کنید ، در واقع مهمترین قسمت Web Server همان زیر مجموعه های آن می باشد که در ادامه توضیح داده شده اند .

قسمت دوم Management Tools است که همانطور که از نامش پیداست ابزارهای مدیریتی سرور IIS از جمله کنسول مدیریتی ، Command های مورد نیاز و اسکریپت های مدیریت وب سرور IIS را در اختیار ما قرار می دهد . قسمت سوم FTP Server است ، شما با استفاده از نصب این سرور قابلیت انتقال فایل بین کلاینت و سرور از طریق پروتکل FTP را خواهید داشت ، این سرویس این قابلیت را به سیستم ها می دهد که با استفاده از کلاینت ها یا Browser هایی که FTP را پشتیبانی می کنند فایل ها را منتقل کنید . قسمت چهارم IIS Hostable Web Core است که در ادامه بصورت کامل این مورد را تشریح خواهیم کرد .


چهار قسمت اصلی در نصب IIS


تصویر مربوط به چهار قسمت اصلی وب سرور IIS در ویندوز سرور 2008

کاربرد Common HTTP Features  در IIS چیست؟

  • Static Content : Static Content همانطور که از نامش پیداست این قابلیت را به وب سرور می دهد که بتواند صفحات و قالبهای ایستا یا همان استاتیک را که در آنها صرفا یک یا چند صفحه اطلاعاتی با قالب HTML یا فایل های عکس وجود دارند را بتواند در وب منتشر کند . با استفاده از این قابلیت شما می توانید صفحات Static خود را برای استفاده کاربران تحت وب توسط Web Browser را منتشر کنید . منظور از صفحات ایستا یا استاتیک صفحه ای است که دارای کد اجرایی نباشد.


مقایسه صفحات Static و Dynamic در وب


تفاوت سایت Dynamic و Static در IIS چیست؟

  • Default Document : اگر دقت کرده باشید شما به هنگام وارد کردن آدرس یک وب سایت در مرورگر خود معمولا یک فایل خاص را برای نمایش انتخاب نمی کنید ، مثلا شما آدرس وب سایت توسینسو را به شکل www.tosinso.com وارد می کنید و نه به شکل www.tosinso.com/index.aspx ، این قابلیت به عنوان Default Document در وب سرور شناخته می شود و بدین معناست که شما وقتی آدرس URL وب سایت مورد نظرتان را وارد می کنید در صورتیکه نام فایلی که بایستی بصورت پیشفرض باز شود را ندانید و یا وارد نکنید ، خود وب سرور بصورت خودکار آدرس تعیین شده را به یک فایل اصلی وب سایت متصل می کند که معمولا با نام index یا شاخص شناخته می شوند . اینکار باعث سادگی استفاده از وب سایت برای کاربران می شود .


تعیین صفحه پیشفرص در وب سرور یا Defautlt Document

کاربرد Default Document در IIS چیست؟

  • Directory Browsing : محتویات یک وب سایت در وب سرور در قالب همین ساختار پوشه و فایلی است که شما بصورت معمول در سیستم خود استفاده می کنید ، قابلیت Directory Browsing به کاربران شما این قابلیت را می دهد که بتوانند محتویات پوشه های موجود در وب سرور را مشاهده کنند . این قابلیت به شما این امکان را می دهد که کاربران در صورتیکه در آدرس URL وب سایت آدرس فایل خاصی را وارد نکنند لیستی از کلیه پوشه ها و فایل های موجود بر روی وب سرور به آنها نمایش داده خواهد شد.

یکی دیگر از مواردی که باعث نمایش پوشه ها و فایل ها بصورت لیستی در وب سایت می شود ، عدم وجود فایل پیشفرض یا Default Document است . در صورتیکه نیازی به استفاده از این قابلیت ندارید و نمی خواهید فایل های موجود در وب سرور شما به این صورت نمایش داده شوند این قابلیت را در همین ابتدا نصب نکنید .


مشاهده پوشه های وب سایت یا Directory Browsing


تصویر یک وب سایت که می توان محتویات آن را بصورت پوشه به پوشه مشاهده کرد
  • HTTP Error : اگر دقت کرده باشید زمانیکه وب سرور یا نرم افزار تحت وب ما دچار مشکل می شود کاربر در مرورگر خود یک پیام خطا می بیند ، این پیام های خطایی که صادر می شود بر حسب نوع خطای بوجود آمده متفاوت هستند ، شما با استفاده از قابلیت HTTP Error می توانید این پیام های صادره از جانب وب سرور را بصورت دلخواه تعیین کنید . با اینکار نه تنها می توانید از نظر سطح امنیتی تا حدودی وب سرور خود را امن کنید بلکه می توانید به کاربر تجربه بهتری در استفاده و مشاهده وب سایت خود ارائه کنید . فرض کنید که به جای اینکه هربار کاربر یک خطا در مرورگر خود مشاهده کند ، یک صفحه با ایمیل مدیر وب سایت را مشاهده می کند که به وی اعلام می کند در صورت بروز و یا مشاهده مشکل در وب سایت با این آدرس تماس بگیرد ، این می تواند در روند بهبود وب سایت بسیار موثر باشد.


قابلیت تعیین پیام های خطای دلخواه یا Custom Error در IIS


کاربرد  Custom Error در IIS چیست؟

HTTP Redirection : این قابلیت به شما این اجازه را می دهد که بتوانید درخواست های کاربران را به یک مسیر مشخص هدایت کنید هر چند که کاربر آن را وارد نکرده باشد . فرض کنید که شما یک وب سایت به نام www.tosinso.com دارید و از جهتی می خواهید کلیه درخواست هایی که به وب سرور داده می شود با هر آدرسی به این آدرس URL هدایت شود ، با امکان HTTP Redirection شما می توانید به کاربر بگویید که مثلا اگر URL وارد شده به شکل www.devahndler.com بود آنرا به www.tosinso.com منتقل کند.این قابلیت در بسیاری از موارد کاربرد دارد که از آن جمله می توان به تغییر نام وب سایت ، مشکلات ناشی از Spell کردن و سخت بودن نام وب سایت و همچنین اجبار کلاینت ها برای استفاده از آدرس HTTPS به جای HTTP استفاده کرد.

قابلیت Redirect   کردن آدرس وب در وب سرور IIS

قابلیت Redirect کردن آدرس وب در وب سرور IIS

WebDAV Publishing : در ساده ترین تعریفی که می توان از پروتکل WebDAV و امکانات آن داشت ، می توان گفت که WebDAV روشی برای انتقال فایل ها از کامپیوتر محلی به سرویس میزبان وب یا همان Web Hosting Provider می باشد . در واقع با استفاده از WebDAV وب سرور شما در نقش یک فایل سرور هم می تواند عمل کند و یک هارد درایو آنلاین محسوب می شود . این هارد درایو آنلاین امکان ویرایش و انتشار صفحات را براحتی در اختیار شما قرار می دهد . البته دقت کنید که هر وب سروری توانایی ارائه خدمات WebDAV را ندارد و استفاده و عدم استفاده از آن وابسته به سرویس دهنده شما می باشد .در نسخه های قبلی IIS سرور ، پروتکل WebDAV دارای مشکلات امنیتی بسیاری بود که در نسخه های جدید این مشکلات تا حدود زیادی برطرف شده اند .در حال حاضر IIS 7 و IIS 8 از جدیدترین نسخه پروتکل WebDAV استفاده می کند.

وب سروی با قابلیت WebDAV Publishing


تصویر یک وب سایت با قابلیت WebDAV

کاربرد Application Development  در IIS چیست؟

  • ASP.NET : ASP.NET یک محیط برنامه نویسی شیء گرا سمت سرور یا Server Side Object-Oriented برای ایجاد وب سایت ها و نرم افزارهای کاربردی تحت وب است که از کد های مدیریت شده یا Managed Code استفاده می کند . توجه کنید که بر خلاف تصوراتی که می شود زبان برنامه نویسی ASP.NET نسخه جدید زبان برنامه نویسی ASP نیست بلکه این زبان بصورت کلی و زیرساختاری مجددا طراحی و معماری شده است و باعث به وجود آمدن یک زیرساخت مناسب برای ایجاد برنامه های کاربردی تحت وب بر اساس تکنولوژی .Net Framework می باشد. با انتخاب این گزینه از وب سرور IIS شما امکان سرویس دهی نرم افزارهای تحت وب برنامه نویسی شده با زبان ASP.NET را خواهید داشت .
  • NET Extensibility : با استفاده از این قابلیت وب سرور ، شما به عنوان یک برنامه نویس می توانید کدهای خود را برای فعالیتهای وب سرور اعم از مدیریت درخواست ها ، تنظیمات و رابط کاربری را در تغییر دهید . برنامه نویس ها می توانند با استفاده از این قابلیت بعلاوه مدل ASP.NET و همچنین استفاده از API های .NET می توانند امکاناتی به وب سرور اضافه کنند که به خوبی و قدرت API هایی باشد که با زبان برنامه نویسی C++ نوشته شده اند . اگر قصد برنامه نویسی و توسعه وب سرور را دارید می توانید این قسمت را برای نصب انتخاب کنید.
  • ASP : ASP مخفف کلمه Active Server Pages است و یک محیط اسکریپت نویسی سمت سرور یا Server Side Scripting Environment برای ساختن وب سایت ها و برنامه های کاربردی تحت وب محسوب می شود . ASP با استفاده از قابلیت های IIS که امکان پشتیبانی از VBScript و Jscript را میدهد کارایی بسیار بهتری نسبت به اسکریپت های CGI ارائه می دهد . البته همانطور که اشاره شد ASP یک زبان برنامه نویسی قدیمی محسوب می شود و شما صرفا این امکان را برای نرم افزارها و وب سایت هایی نصب می کنید که با زبان ASP قدیمی نوشته شده اند ، برای برنامه نویس های جدید استفاده از زبان برنامه نویسی ASP.NET پیشنهاد می شود .
  • CGI : CGI مخفف کلمه Common Gateway Interface است و نحوه رد شدن اطلاعات از وب سرور به یک نرم افزار خارجی را مشخص می کند . برای مثال شما یک فرم دارید که تحت وب است و اطلاعات را از کاربران دریافت می کند و این اطلاعات را به یک اسکریپت CGI برای ایمیل شدن به جای دیگری ارسال می کند . به دلیل اینکه CGI یک استاندارد محسوب می شود ، اسکریپت های CGI می توانند به زبان های برنامه نویسی مختلفی نوشته شوند . مشکل اصلی اسکریپت های CGI بار کاری زیادی است که کارایی سیستم را پایین می آورد . توجه کنید که CGI یک زبان برنامه نویسی نیست ، در حال حاضر به دلیل استفاده از FAst CGI از CGI کمتر استفاده می شود.
  • ISAPI Extensions : واژه ISAPI مخفف کلمه Internet Server Application Programming Interface می باشد .با نصب این ماژول در وب سرور شما به سرور این امکان را می دهید که بتواند سرویس های ISAPI Extension را بر روی خود ارائه دهد . Extension های ISAPI زمانی اجرا می شوند که فراخوانی شوند ، اینکار دقیقا مشابه همان اتفاقی است که برای یک فایل HTML استاتیک یا یک فایل ASP داینامیک می افتد . با توجه به اینکه نرم افزارهای کاربردی ISAPI یک کد کامپایل شده می باشند از فایل های ASP یا فایل هایی که Component های COM+ را فراخوانی می کنند سریعتر اجرا و پردازش می شوند .
  • ISAPI Filters : با نصب ماژول ISAPI Filters شما به وب سرور امکان سرویس دهی به نرم افزارهای کاربردی تحت وبی که از تکنولوژی ISAPI Filter استفاده کرده اند را می دهید . ISAPI Filters فایل هایی هستند که می توانند توسعه داده شوند و یا تغییراتی در آنها انجام شود که فعالیت و قابلیت های IIS را افزایش دهند. یک ISAPI Filter تمامی درخواست هایی که برای وب سرور ارسال می شد را مرور می کند تا زمانیکه تشخیص دهد یک درخواست نیاز به پردازش دارد .
  • Server Side Includes : Server Side Includes یا SSI در واقع یک زبان اسکریپت نویسی است که برای تولید صفحات HTML بصورت داینامیک مورد استفاده قرار می گیرد. قبل از اینکه صفحه برای کلاینت ارسال شود ، اسکریپت بر روی سرور اجرا می شود و در واقع در این حالت یک فایل در درون یک فایل دیگر قرار میگیرد. برای مثال شما ممکن است یک منوی HTML درست کنید و با استفاده از SSI کاری کنید که این منو در تمامی صفحات وب سایت نمایش داده شود .

کاربرد Health and Diagnostics در IIS چیست؟

  • HTTP Logging : HTTP Logging این امکان را به وب سرور می دهد که فعالیت های وب سایت بر روی سرور را لاگ برداری کند. زمانیکه یک فعالیت قابل Log برداری ( مثلا یک انتقال اطلاعات بر روی HTTP ) انجام می شود ، IIS ماژول مربوط به لاگ برداری را فراخوانی کرده و بر حسب نوع فعالیت انجام شده این ماژول لاگ مورد نظر را بر روی فایل سیستم ذخیره می کند .این لاگ ها علاوه بر لاگ هایی است که از سیستم عامل گرفته می شود .
  • Logging Tools : Logging Tools یا ابزارهای لاگ بردادی زیر ساختاری را فراهم می کنند که لاگ های وب سرور و بسیاری از فعالیت های مربوط به لاگ برداری از وب سایت ها و فعالیت های آنها بصورت خودکار انجام شود.
  • Request Monitor : Request Monitor زیر ساختاری را فراهم می کند تا به وسیله جمع آوری اطلاعات در خصوص درخواست های HTTP موجود در Worker Process های IIS ، سلامتی نرم افزارهای کاربری تحت وب مانیتور و پایش شوند . مدیران وب سرور و همچنین برنامه نویس های وب می توانند با مشاهده این Request Monitor و Worker Process های موجود در آن تشخیص دهند که کدامیک از درخواست های HTTP در حال اجرا کند شده است و یا به سیستم پاسخگو نمی باشد .
  • Tracing : قابلیت Tracing یا دنبال کردن برای شما زیرساختاری را فراهم می کند که بتوانید نرم افزارهای کاربردی تحت وب خود را تست و رفع اشکال کنید .با استفاده از failed request tracing یا دنبال کردن درخواست های خراب شده شما می توانید مشکلاتی مانند کارایی پایین سرور و همچنین مشکلات ناشی از عدم احراز هویت درست در سرور یا نرم افزار کابردی را تشخیص و رفع اشکال کنید. این قابلیت رویدادهای مربوط به trace هر درخواست را ابتدا در خود بافر کرده و صرفا درخواست هایی را به دیسک ارسال می کند که به حالت خطاهای تنظیمات کاربری یا user-configured error درآمده اند .
  • Custom Logging : Custom Logging این امکان را به شما می دهد که بتوانید فعالیت های وب سرور را در قالبی متفاوت از آنچه که خود وب سرور IIS در قالب فایل لاگ برداری می کند ، قالب بندی و ایجاد کنید . شما می توانید با استفاده از Custom Logging ماژول لاگ برداری خاص خود را ایجاد کنید . ماژول های Custom Logging به وسیله رجیستر کردن یک COM Component جدید که ILogPlugin یا ILogPluginEx را پیاده سازی می کنند به IIS اضافه می شوند.
  • ODBC Logging : ODBC Logging زیرساختاری برای شما فراهم می کند که شما بتوانید فعالیت های وب سرور را به داخل یک پایگاه داده ODBC-Compliant وارد کنید .با استفاده از یک پایگاه داده برای لاگ برداری شما می توانید براحتی داده های موجود در این پایگاه داده را در قالب فرم و شکل های مشخص در یک صفحه HTML نمایش دهید . معمولا کسانی که می خواهند بر اساس یک رویداد یا اتفاق خاص بر روی لاگ ها جستجو انجام دهند و آنها را پایش کنند از این قابلیت استفاده می کنند .
روشهای احراز هویت در IIS

تنظیمات Security در IIS چیست؟

  • Basic Authentication : ساختار احراز هویت Basic Authentication بهترین گزینه و هماهنگ ترین گزینه برای استفاده در مرورگرها می باشد. این ساختار احراز هویت برای شبکه های داخلی بسیار مناسب می باشد اما معمولا در شبکه های عمومی و اینترنتی کمتر مورد استفاده قرار می گیرد . مهمترین و برحسته ترین مشکل این ساختار احراز هویت این است که رمزهای عبور به صورت بسیار نامناسبی رمزنگاری می شوند و به همین دلیل در هنگام انتقال در شبکه براحتی این رمزها قابل رمزگشایی و کشف هستند . اگر در شبکه ای که از این نوع ساختار احراز هویت استفاده می کنند نرم افزارهای شنود استفاده شود براحتی می توان رمزها را بدست آورده و رمزگشایی کرد ، بهترین روش استفاده از این نوع ساختار رمزنگاری ، استفاده همزمان آن با پروتکل SSL می باشد.
  • Windows Authentication : Windows Authentication یا ساختار احراز هویت داخلی ویندوز را می توان به عنوان کم هزینه ترین روش احراز هویت در شبکه ها و وب سایت های داخلی معرفی کرد. این ساختار احراز هویت به مدیر شبکه این امکان را می دهد که از زیرساختار شبکه مبتنی بر دامین یا همان Active Directory برای احراز هویت کاربران استفاده کند. اگر کاربران شما در پشت یک فایروال یا پراکسی سرور قرار دارند به هیچ عنوان از این ساختار برای احراز هویت کاربران برای وب سایت استفاده نکنید.
  • Digest Authentication : ساختار احراز هویت Digest Authentication رمز عبور کاربران را در قالب یک فایل Hash شده برای احراز هویت به Domain Controller ارسال می کند . اگر می خواهید ساختار احراز هویت قویتری نسبت به Basic Authentication داشته باشید ترجیحا از Digest Authentication استفاده کنید ، مخصوصا زمانیکه کاربران شما که قصد برقراری ارتباط با وب سایت را دارند در پشت یک فایروال یا پراکسی سرور قرار دارند حتم از این ساختار استفاده کنید .
  • Client Certificate Mapping Authentication : این ساختار احراز هویت از تکنیک استفاده از گواهینامه دیجیتال یا همان Digital Certificate برای احراز هویت کاربران استفاده می کند .گواهینامه امنیتی کاربر یا همان Client Certificate در واقع یک شناسه دیجیتال است که از یک منبع قابل اعتماد دریافت شده است . IIS به دو شکل از طریق Certificate عملیات احراز هویت را با استفاده از client certificate mapping انجام می دهد . این نوع از عملیات و ساختار احراز هویت از اکتیودایرکتوری برای دریافت و ارائه certificate بصورت یک به یک برای وب سرور ها استفاده می کند .
  • IIS Client Certificate Mapping Authentication : IIS Client Certificate Mapping Authentication از Client Certificate برای احراز هویت کاربران استفاده می کند .گواهینامه امنینی کاربر یا همان Client Certificate یک شناسه دیجیتال از یک منبع قابل اعتماد است . این سیستم احراز هویت از قابلیت های Certificate Mapping وب سرور IIS بصورت یک به یک و همه به یک استفاده می کند و کارایی بهتری نسبت به مورد قبلی که Client Certificate Mapping Authentication است برخوردار است .
  • URL Authorization : URL Authorization به شما این اجازه را می دهد که بتوانید قوانینی برای محدود سازی دسترسی به محتویات وب را ایجاد کنید . شما می توانید این قوانین یا Rule ها را به گروه ها ، کاربران یا HTTP Header های سرور متصل کنید. با استفاده از تنظیمات URL Authorization شما می توانید کاربرانی را که عضو گروه های تعیین شده شما نمی باشند را از دسترسی به محتویات و برقراری ارتباط با صفحات وب منع کنید .
  • Request Filtering : قابلیت Request Filtering یا فیلترینگ درخواست ها این امکان را به مدیر سیستم می دهد که تمامی درخواست های ورودی به سرور را بر اساس قوانینی که مدیر سیستم تعیین کرده است فیلتر کرده و صرفا درخواست های مجاز را به سمت سرور هدایت کند . بسیار از حملاتی که به وب سرور ها انجام می شود ساختار های کاری مشابه و شناخته شده ای دارند ، برای مثلا درخواست کاربر مهاجم به شکل یک آدرس URL بسیار طولانی یا درخواست یک عمل غیر معمول از سرور انجام می شود . با استفاده از این قابلیت شما می توانید تاثیر حملاتی از این نوع را در سرور کاهش دهید.
  • IP and Domain Restrictions : قابلیت محدود کردن آدرس های IP و نام های Domain یا IP and Domain Restrictions به شما این امکان را می دهد که بتوانید دسترسی به محتویات وب سایت و وب سرور را با توجه به آدرس های IP یا اسامی دامین محدود کنید ، برای مثال شما می توانید تعیین کنید که آدرس IP به شماره 91.98.11.23 نتواند به منابع وب سایت دسترسی داشته باشد . این روش را می توان در کنار استفاده از گروه ها ، نقش ها و یا NTFS Permission ها برای کنترل دسترسی به محتویات وب سرور استفاده کرد ، این امکان امنیتی به خودی خود نیز می تواند از تاثیر گذاری حملاتی که از یک سری آدرس های مشخص به وب سرور انجام می شوند جلوگیری کند.

Performance در IIS چیست؟

  • Static Content Compression : قابلیت فشرده سازی محتوای ایستا یا Static Content Compression زیرساختاری را فراهم می کند که شما بتوانید محتویات صفحات HTML ساده و ایستای خود را فشرده سازی کنید. این باعث استفاده بهینه از پهنای باند موجود می شود. برخلاف پاسخ های داینامیک ، پاسخ ها یا Response های صفحات فشرده شده ایستا یا Static بدون گرفتن منابع و قرار دادن بار اضافی کاری بر روی CPU می توانند صفحات را Cache کنند .


  • Dynamic Content Compression : قابلیت فشرده سازی محتوای پویا یا Dynamic Content Compression زیرساختازی را فراهم می کند که شما بتوانید محتویات صفحات HTML داینامیک یا پویای خود را فشرده سازی کنید . فعال سازی Dynamic Compression همیشه به شما پهنای باند بیشتری را ارائه می دهد اما در عین حال اگر پردازش CPU شما بسیار بالا باشد اینکار باعث کند شدن Load یا سرویس دهی وب سایت شما خواهد شد .

Management Tools در IIS چیست؟

  • IIS Management Console : کنسول مدیریتی IIS یا IIS Management Console زیرساختاری برای مدیریت محیط وب سرور IIS بصورت گرافیکی را در اختیار شما قرار می دهد . شما می توانید با استفاده از این کنسول ضمن اینکه IIS ای که بصورت Local بر روی سیستم نصب شده است را مدیریت کنید ، می توانید وب سرورهای IIS ای که بصورت ریموت و بر روی سرور های دیگر قرار دارند را نیز مدیریت کنید .برای مدیریت سرویس های Simple Mail Transfer Protocol یا SMTP و همچنین File Transfer Protocol یا FTP شما بایستی کنسول مدیریتی IIS 6.0 را نیز نصب کنید .
  • IIS Management Scripts and Tools : اسکریپ ها و ابزارهای مدیریتی IIS یا IIS Management Scripts and Tools زیرساختاری برای مدیریت خودکار و همچنین ارائه قابلیت های برنامه نویسی با استفاده از دستورات خط فرمان و اسکریپت نویسی برای مدیریت وب سرور IIS فراهم می کند . شما می توانید با استفاده از این امکانات و ابزارها فعالیت ها و روند های کاری روزمره وب سرور IIS را بصورت خودکار در آورده و در عین حال دردسرهای کارهای روزمره ای که به وسیله کنسول گرافیکی مدیریتی IIS انجام می شود را تا حدود زیادی کاهش دهید . شما می توانید فعالیت ها را در قالب فایل های دسته ای یا دستورات Batch ذخیره و اجرا کنید .
  • Management Service : سرویس مدیریتی یا Management Service زیرساختاری برای انجام تنظیمات رابط کاربری یا UI وب سرور IIS ، IIS Manager برای انجام عملیات های مدیریتی از راه دور وب سرورها را در اختیار شما قرار می دهد .
  • IIS 6.0 Management Compatibility : هماهنگی با سیستم مدیریت وب سرور IIS 6.0 یا IIS 6.0 Management Compatibility امکان استفاده از نرم افزارهای کاربردی و اسکریپت هایی که ازAPI های مربوط به Admin Base Object ها یا ABO و همچنین Active Directory Service Interface یا ADSI را به شما می دهد . این قابلیت به شما امکان مدیریت وب سرور IIS 7 و IIS 8 با استفاده از اسکریپت های IIS 6.0 را می دهد .
  • IIS Metabase Compatibility : IIS Metabase Compatibility برای شما زیرساختاری را فراهم می کند تا بتوانید تنظیمات و query های مربوط به Metabase ها را به گونه ای انجام دهید که بتواند در آن نرم افزارهای کاربری و اسکریپت هایی که برای نسخه های پیشین و قدیمی IIS نوشته شده اند و با استفاده از API های ABO و ADSI کار می کنند را براحتی اجرا و پشتیبانی کنید .
  • IIS 6 WMI Compatibility : IIS 6.0 WMI Compatibility برای شما زیرساختاری را فراهم می کند که بتوانید با استفاده از قابلیت های اسکریپت های Windows Management Instrumentation یا WMI و همچنین استفاده از تکنیک های برنامه نویسی بتوانید وظایف مربوط به IIS 7 و بالاتر از آن را انجام دهید . شما در این حالت می توانید وب سایت های خود را با استفاده از سرویس ها و ابزارهایی مثل WMI CIM Studio ، WMI Event Registration ، WMI Event Viewer و WMI Object Brower که در WMI هستند مدیریت و نگهداری کنید.
  • IIS 6 Scripting Tools : ابزاهای اسکریپت نویسی IIS 6.0 امکان استفاده از ابزاها و اسکریپت هایی که در وب سرور IIS 6.0 استفاده می شدند را در IIS 7.0 و بالاتر را می دهد . این قابلیت در زمانیکه شما از API ها و اسکریپت های نوشته شده به وسیله Active Data Objects یا ADO ها و همچنین Active Directory Service Interface یا ADSI استفاده می کنید بسیار بسیار بیشتر کاربرد دارند . برای اینکه ابزارهای اسکریپت نویسی IIS 6.0 به درستی اجرا شوند شما به API ای به نام WAS Configuration نیاز خواهید داشت .
  • IIS 6 Management Console : کنسول مدیریتی IIS 6.0 یا IIS 6.0 Management Console زیرساختاری برای مدیریت از راه دور سرورهایی که از وب سرور IIS 6.0 استفاده می کنند را در اختیار شما قرار می دهد .
سرویس انتقال فایل در وب یا File Transfer Protocol

File Transfer Protocol (FTP) Publishing Service Features در IIS چیست؟

  • FTP Server : سرور FTP برای شما زیرساختاری را فراهم می کند که بتوانید به وسیله ایجاد کردن سایت های FTP امکان آپلود و دانلود فایل را به کاربران خود با استفاده از پروتکل FTP و همچنین نرم افزارهای کلاینت این پروتکل را بدهید. FTP از پروتکل TCP/IP برای توزیع فایل ها مشابه روشی که HTTP برای توزیع وب سایت ها استفاده می کند ، بهره می گیرد . بهترین گزینه ای که می تواند در استفاده از FTP مطرح باشد ، ایجاد امکانی برای کاربران برای آپلود و دانلود فایل می باشد و به نوعی یک فایل سرو آنلاین محسوب می شود.
  • FTP Management Console : کنسول مدیریتی FTP یا FTP Management Console امکان مدیریت سایت های FTP را از طریق کنسول گرافیکی یا GUI فراهم می کند . IIS 7 و بالاتر از IIS Manager در IIS 6.0 برای مدیریت و نگهداری FTP Server استفاده می کند . شما می توانید با استفاده از کنسول مدیریتی FTP ، سرور Local یا سرور Remote ای که سرویس FTP را ارائه می دهد را مدیریت کنید .

نتیجه

خوب در این قسمت تا حد امکان قابلیت ها و امکاناتی که وب سرور IIS در اختیار ما قرار می دهد را برای شما معرفی کردیم ، در صورت بروز هرگونه ابهام در این خصوص حتما در ادامه مطرح کنید تا در خصوص ابهام به وجود آمده توضیحات تکمیلی را ارائه کنیم. اما در قسمت بعدی در خصوص انجام تنظیمات مقدماتی ، اتصال ها یا Binding ، پوشه های مجازی یا Virtual Directories ، عملیات Logging ، انواع MIME و در نهایت در خصوص Site Config و Master Config و فایل های Webconfig صحبت خواهیم کرد. امیدوارم که مورد توجه شما قرار گرفته باشد.

Bindings ، Logging ، MIME Types و ...

در قسمت قبلی به معرفی نقش ها و امکاناتی که وب سرور IIS در اختیار ما قرار می دهد پرداختیم ، این اولین قسمت ای است که در آن شروع به کار و در واقع مدیریت مقدماتی وب سرور IIS بصورت عملی را بررسی و آموزش خواهیم داد . همانطور که در عنوان مطلب مشاهده می کنید در این قسمت شما با مفاهیمی مثل Binding یا اتصال ها ، Logging یا لاگ برداری ، Virtual Directories یا پوشه های مجازی و همچنین MIME Types که بهتر است به فارسی ترجمه نشود آشنا خواهید شد .

یکی از مهمترین مسائل و مشکلاتی که در خصوص یادگیری مفاهیمی مثل Binding و Virtual Directory ها و ... وجود دارد ، درک واقعیت مسئله است که اصلا اینها چه هستند و چه می کنند ، اما متاسفانه اگر مطلبی هم در این زمینه در جایی نوشده شده در خصوص شیوه انجام تنظیمات مربوط به اینها بوده است و نه چیستی آنها ، در ابتدای قسمت و برای اینکه درک درستی از این مفاهیم داشته باشید ابتدا یک وب سایت استاتیک ساده در IIS ایجاد می کنیم و بر اساس همان وب سایت این موارد را با هم بررسی خواهیم کرد. در ابتدای هر تمرین ابتدا شما را با مفاهیم اصلی و چیسی این امکانات آشنا خواهیم کرد و سپس بصورت تصویری به شما آموزش انجام تنظیمات آنها را ارائه خواهیم کرد.

آموزش ایجاد Binding یا چسباندن در وب سرور IIS

معمولا برنامه نویس هایی که برنامه نویسی وب انجام می دهند در هنگام طراحی وب سایت های خود قبل از هر چیزی به این مسئله فکر می کنند که چه مقدار پردازش برای این نرم افزار لازم است و مسائل امنیتی مرتبط با این نرم افزار تحت وب چه هستند ، اما کمتر کسی پیش می آید که سئوالاتی مثل اینها را از خود سئوال کند :

آیا تمامی این نرم افزار تحت وب در قالب یک وب سایت بایستی سرویس دهی شوند ؟ یا بایستی به ازای ماژول های مختلف نرم افزار وب سایت های مختلفی ایجاد شود ؟ آیا نرم افزار من بر روی وب سایت پیشفرض IIS یا همان Default Web Site نصب و اجرا می شود ؟ یا یک وب سایت بصورت جداگانه ایجاد می کند ؟ آیا وب سایت من نیازی به استفاده از پروتکل امنیتی SSL دارد یا خیر ؟

معمولا برنامه نویس های عزیز ما به جای استفاده از طرح و ایده مستند شده و از پیش طراحی شده با این جمله سر و ته موضوع را به هم می رسانند : بعدا بهش فکر می کنیم !!! این جمله یعنی کار ما بصورت آزمون و خطا خواهد بود و نرم افزار در صورت نیاز به هر یک از موارد خواسته شده کون فیکون خواهد شد .

خوب شاید با خود بپرسید که این سئوالات چه ارتباطی به مسئله Binding در IIS دارند ؟ همیشه بایستی توجه کنید که شما نرم افزار تحت وب خود را برای استفاده کاربران سطح پایین ( Dummy Users ) طراحی می کنید و برای کاربرانی که قصد استفاده از این وب سایت را دارند بایستی سادگی استفاده و دسترسی به آن در اولویت قرار بگیرد .

فرض کنید که وب سایتی برای یک سازمان طراحی کرده اید که بایستی برای دسترسی بصورت https://tosinso.com/:7890 در مرورگر وارد شود . از نظر شما این آدرس ممکن است ساده به نظر برسد اما از نظر یک کاربر عادی این سخت ترین لحظه زندگی است !!! Binding برای وب سایت هایی که در IIS سرویس دهی می شوند به معنای متصل کردن یا چسباندن یک نام یا Host Header ، یک آدرس IP یا یک شماره پورت است به گونه ای که بتوانید به هر یک از وب سایت های موجود در وب سرور بصورت منحصر به فرد با یک آدرس یکتا دسترسی پیدا کنید.


هر وب سایت در وب سرور IIS بایستی دارای یک شناسه دسترسی یا به قول خودمان یک آدرس منحصر به فرد برای دسترسی توسط کاربران داشته باشد . این آدرس می تواند یک آدرس IP ، ترکیب آدرس IP و شماره پورت و یا نام یا Host Header باشد . به متصل کردن هر یک از این موارد به یک وب سایت ساخته شده در IIS به اصطلاح فنی Bindings گفته می شود . Bindings دارای قوانین مشخص و معینی است که بایستی در هنگام استفاده از آنها تبعیت کرد در غیر اینصورت دچار مشکل خواهد شد .

Bindings در IIS

برای درک بهتر از قابلیت Bindings در IIS از ابتدا ما یک وب سایت ایجاد می کنیم و تمامی موارد مربوط به آن را تشریح خواهیم کرد ، برای اینکار ابتدا وارد کنسول IIS Manager شده و بر روی قسمت Sites راست کلیک کرده و Add Web Site را انتخاب کنید. با تصویری مشابه آنچه در بالا مشاهده می کنید مواجه خواهید شد. در این قسمت در کارد Site Name اسم سایت مورد نظر خود را وارد کنید.

بصورت خودکار برای این وب سایت در کادر Application Pool یک Application Pool به نام همان وب سایت ایجاد خواهد شد ، شما می توانید در همینجا برای این وب سایت یک Application Pool دیگر را با استفاده از دکمه Select مشخص کنید اما فعلا به همین حالت پیشفرض قرار دهید ، در خصوص چیستی و ماهیت Application Pool ها بعدا بصورت کامل صحبت خواهد شد.


Bindings در IIS



Bindings در IIS

اما در قسمت Content Directory و در ادامه در کادر Physical Path یا مسیر فیزیکی شما محل قرارگیری فایل های وب سایت خود را بر روی سیستم خود یا سیستم تحت شبکه مشخص می کنید ، بله درست متوجه شدید شما ضمن اینکه می توانید این مسیر را بصورت محلی بر روی سیستم خود مشخص کنید ، می توانید آن را بصورت یک آدرس UNC به یک پوشه به اشتراک گذاشته شده تحت شبکه متصل کنید .

دقت کنید که دو دکمه Connect As و Test Settings در صورتی معنی پیدا می کنند که شما در قسمت Physical Path یک مسیر تحت شبکه را وارد کرده باشید ، گزینه Connect As نام و نام کاربری کاربری را از شما درخواست خواهد کرد که قرار است به پوشه اشتراک گذاری شده دسترسی پیدا کند ، توجه کنید که فرقی نمی کند که شما این پوشه را بر روی سیستم خود Mount کرده باشید ، در هر صورت این مشخصات بایستی وارد شود ، با استفاده از دکمه Test Settings می توانید از صحت برقراری ارتباط مطمئن شوید .


اما در قسمت Binding چهار قسمت وجود دارد که هر یک دارای قابلیت این می باشد که وب سایت مورد نظر را از نظر آدرس دهی مشخص و آدرس یکتایی به آن اختصاص دهد . قسمت Type نوع پروتکل ارتباطی را مشخص می کند که بصورت پیشفرض پروتکل دسترسی به وب Http بوده و پورت پیشفرض آن هم 80 می باشد . همانطور که می دانید تمامی مرورگرها بصورت پیشفرض این نوع پروتکل را پشتیبانی می کنند و در صورت وارد نکردن آدرس URL بصورت https://tosinso.com/ خود مرورگرها پیشفرض را بر این می گذارند که شما از پروتکل Http استفاده می کنید .

دیگر پروتکل قابل انتخاب در این قسمت https است که پورت پیشفرض 443 دارد و در صورت نیاز شما بایستی حتما آدرس دقیق URL را بصورت https://tosinso.com/ وارد کنید ، در غیر اینصورت مرورگر نمی تواند تشخیص دهد درخواست شما دقیقا بایستی بر روی چه پروتکلی ارسال شود و بنابراین همان http را در نظر می گیرد.


در قسمت IP Address شما می توانید به یک وب سایت یک آدرس IP اختصاصی بدهید ، توجه کنید که شما می توانید بر روی یک وب سرور N عدد آدرس IP داشته باشید و برای هر کدام از وب سایت های خود یک آدرس IP اختصاصی قرار دهید ، اگر تا به حال کار وب انجام داده باشید حتما در برخی از سرویس های هاستینگ مشاهده کرده اید که به شما اختصاص آدرس IP ثابت یا Static را به عنوان یک Option یا ویژگی ارائه می دهند ، آنها در واقع در ساده ترین حالت از همین روش برای اختصاص IP به وب سایت شما استفاده می کنند.

زمانیکه شما به جای استفاده از یک آدرس IP اختصاصی از حالت All Unassigned استفاده می کنید در واقع به وب سرور می گویید که هر درخواستی برای این سرور از طرف هر آدرس IP و به هریک از آدرس های IP مستقر بر روی سرور منتقل شد آنرا با توجه به شماره پورت ، Type و در نهایت Host Header موجود به سمت وب سایت مورد نظر هدایت کن و به آدرس IP مقصد کاری نداشته باشید.


در قسمت پورت شما می توانید برای دسترسی به وب سایت خود یک آدرس پورت خاص در نظر بگیرید ، این آدرس می تواند عددی بین 1 تا 65535 باشد ، توجه داشته باشید که پورت پیشفرض برای استفاده در پروتکل http پورت شماره 80 می باشد و مرورگرها این آدرس را برای ارسال درخواست به وب سرور بصورت پیشفرض در نظر میگریند 

اگر شما وب سایت خود را برای استفاده از یک پورت دیگر تنظیم می کنید بایستی به کاربران خود نیز اطلاع دهید که آدرس درخواستی خود را با توجه به شماره پورت تعیین شده در قالب سوکت وارد کنند ، سوکت یه معنای ترکیب کردن آدرس IP یا FQDN به همراه شماره پورت در جلوی آن است ، برای مثال آدرس https://tosinso.com/:7777 یک آدرس سوکت می باشد.
اما در قسمت Host Name شما می توانید یک نام برای وب سایت خود انتخاب کنید که مرسوم ترین روش برای استفاده در وب سرورهای اینترنتی است ، شما می توانید براحتی وب سایت های خود با شماره پورت 80 را با نامهای مختلف به وب سرور معرفی کنید ، برای مثال تا به حال همین مثال www.tosinso.com یک Host Name است که بایستی در قسمت Host Name وارد شود تا کاربران بتوانند با این اسم وب سایت را مشاهده کننند

در غیر اینصورت مشاهده وب سایت صرفا با آدرس IP و شماره پورت ممکن است ، دقت کنید که صرفا انجام تنظیمات برای سرور و در قسمت Host Name برای اینکار کافی نیست و شما بایستی برای استفاده درست و کامل از قابلیت Host Name تنظیماتی در سرور DNS خود نیز انجام دهید که در این مطلب نمی گنجد.

Bindings در IIS


خوب در نهایت شما براحتی با استفاده از گزینه Add و اضافه کردن Binding منحصر به فرد خود می توانید صفحه وب سایت خود را در معرض دید کاربران قرار دهید ، دقت کنید که مهمترین نکته در اضافه کردن Bindings این است که ترکیبی که ایجاد می شود نبایستی با ترکیب Binding یک وب سایت دیگر مشابه باشد

برای مثال اگر شما وب سایتی بصورت https://tosinso.com/ ایجاد کرده اید می توانید وب سایت دیگری به همین نام در وب سرور ایجاد کنید و در این حالت یا بایستی آدرس وب سایت یا شماره پورت آن را تغییر دهید تا آدرس ایجاد شده یکتا باشد ، البته به این موضوع هم توجه کنید که IIS به شما پیغامی می دهد که وب سایت مورد نظر وجود دارد ، IIS وب سایت جدید را ایجاد می کند اما آن را در حالت Stop قرار می دهد.

Bindings در IIS

آموزش راه اندازی Virtual Directoriy در IIS

Virtual Directory ها در واقع نام یک پوشه یا یک مسیر هستند که در IIS تعریف شده و به یک مسیر فیزیکی موجود بر روی سیستم سرور یا یک پوشه به اشترک گذاشته شده در شبکه اشاره می کند . بعد از اینکه یک Virtual Directory با یک اسم مشخص در وب سرور تعریف شد جزوی از URL وب سایت مورد نظر خواهد شد و کاربران قادر خواهند بود به راحتی با وارد کردن آدرس Virtual Directory مورد نظر در Browser خود محتویات این پوشه را مشاهده کنند.

همانطوری که فایل ها در کامپیوتر شما در قالب پوشه ها ترتیب و نظم پیدا می کنند و قابل دسترسی هستند به همان ترتیب با استفاده از Virtual Directory ها شما می توانید به محتویات یک پوشه بصورت آنلاین دسترسی پیدا کنید. شما میتوانید برای یک وب سایت چندین Virtual Directory مختلف تعریف کنید ، برای اینکه بتوانید چنین ساختاری را در IIS داشته باشید بر روی وب سایت خود راست کلیک کرده و گزینه Add Virtual Directory را انتخاب کنید ، سپس با تصویر زیر مواجه خواهید شد .


Virtual Directory در IIS

در قسمت Alias شما بایستی نامی را که کاربر بایستی در مرورگر خود وارد کند را مشخص کنید ، برای مثال اگر در تصویر بالا برای وب سایت itpro یک نام Alias به شکل itprofiles وارد شده است ، کاربر در هنگام دسترسی به این آدرس بایستی در مرورگر آدرس را به شکل www.tosinso.com/itprofiles وارد کند تا بتواند به محتویات Virtual Directory مورد نظر دسترسی پیدا کند .

در قسمت Physical Path شما مسیر مربوط به پوشه موجود بر روی سیستم خود یا پشه به اشتراک گذاشته شده در شبکه را وارد می کنید ، توجه کنید که نام پوشه در نهایت توسط Alias برای وب سرور تعیین می شود نه از طریق مسیر فیزیکی و نام فعلی پوشه موجود. گزینه های Connect As و Test Settings مشابه همان توضیحاتی است که در قسمت قبلی نیز به آن اشاره شد. برای دسترسی پیدا کردن به Virtual Directory ایجاد شده می توانید در مرورگر آدرس زیر را وارد کنید و تصویر زیر دیده خواهد شد :


Virtual Directory در IIS



آموزش فعال کردن لاگ برداری در IIS | تنظیمات Logging

معمولا برنامه نویس ها و یا کسانی که کار مدیریت وب سرور را انجام می دهند برای اینکه از صحت عملکرد نرم افزار خود و یا اشکالات بوجود آمده یا در شرف وقوع مطلع شوند از قابلیتی به نام Logging در IIS استفاده می کنند . شما می توانید در این قسمت از وب سرور تعیین کنید که می خواهید از چه فرآیند هایی لاگ برداری شود و یا این لاگ ها چه مدت در وب سرور نگهداری شود و بسیاری دیگر از تنظیمات مربوط به Logging را می توانید انجام دهید .

شما می توانید لاگ برداری را در دو سطح سایت و سرور انجام دهید ، هر جا در هر قسمت از قابلیت Log برداری به قسمتی برخوردید که به حالت Grayed Out یا غیر فعال در آمده بود شک نکنید که این حالت به دلیل حضور شما در لایه پایینتر از مجموعه سایت است .

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


Logging در IIS

در قسمت One Log File Per می توانید تعیین کنید که سرور به ازای هر Site یا هر Server یک فایل لاگ ایجاد کند ، دقت کنید همانطور که اشاره کردیم در صورتیکه قسمتی از این گزینه ها را نمی توانید تغییر بدهید به دلیل این است که شما تنظیمات را بایستی در سطح بالاتر که سرور است انجام دهید . در قسمت Format شما می توانید قالبی که IIS تحت آن بایستی گزارش های خود را آماده کند را مشخص کنید .

برای مثال نمونه پیشفرض به نام W3C می باشد که قالب استاندارد پیشفرض برای IIS محسوب می شود ، شما می توانید با انتخاب قالب مورد نظر و در ادامه انتخاب Select Fields به IIS بگویید که از چه چیزهایی برای شما لاگ برداری کند ، با توجه به گستردگی موارد فیلد های لاگر برداری که چندان هم در اینجا کاربردی برای ما ندارند من صرفا برای شما لینکی قرار می دهم که تک تک این فیلد ها را توضیح داده باشد ، در پایین صفحه ای که بعد از انتخا دکمه Select Fields مشاهده خواهید کرد را می بینید .


Logging در IIS


در قسمت directory مسیری که فایل های لاگ در آن نگهداری و ایجاد می شوند را می توانید مشاهده و تغییر دهید و در ادامه Encoding را می توانید مشاهده کنید که برای اینکه بتوانید در قالب استانداردهای بین المللی در نرم افزارهای گوناگون از این فایل ها استفاده کنید در قالب UTF-8 قرار گرفته است .

اما قسمت Log File Rollover قسمتی است که برای IIS تعیین می کند که چه مقدار فضا به این لاگ فایل ها اختصاص بدهد و از جهتی چه مدت این لاگ ها را در خود نگهداری کند. تنظیمات این قسمت به وضوح مشخص می باشد .فقط یک نکته را در نظر داشته باشید ، معمولا برنامه نویس ها در برنامه های خود باگ دارند و همین باگ ممکن است باعث لاگ برداری زیاد وب سرور IIS از اتفاقات بوقوع پیوسته در وب سرور می شود 

به خاطر داشته باشید اگر به لاگ برداری نیاز ندارید آن را غیر فعال کنید به خدا آخرش هم به این لاگ ها نگاه نمی کنید پس لاگ نگیرید ، من نرم افزار تحت وب ای را در یکی از سازمان های دولتی پیاده سازی کردم که پایگاه داده نرم افزار حدود 1 گیگا بایت ظرفیت داشت اما لاگ های IIS به دلیل وجود باگ در این نرم افزار در حدود 40 گیگا بایت بود !!!!

آموزش تنظیمات MIME Types در IIS

آیا تا به حال به این موضوع فکر کرده این که IIS از کجا متوجه می شود که بایستی یک فایل را در هنگام درخواست بصورت آنلاین به شما نمایش دهد یا در قالب یک فایل دانلودی در اختیار کاربران قرار دهد ؟ IIS با استفاده از قابلیتی به نام MIME Types اینکار را انجام می دهد ، در واقع MIME Types به IIS می گوید که با هر پسوند یا Extension ای که بر روی وب سرور IIS قرار می گیرد چگونه برخورد کند.

وقتی کاربری به سرور یک درخواست ارسال می کند سرور درخواست آنرا بررسی و تحلیل می کند و بر اساس پسوند فایل درخواستی کاربر ( مثلا یک فایل zip ) آن فایل را برای دانلود در اختیار کاربران قرار می دهد ، همانطور که در تصویر پایین مشاهده می کنید IIS به پسوند هایی که در قالب application به سرور معرفی شده اند

به عنوان یک فایل برای دانلود نگاه می کند نه محتوایی برای نمایش ، شما با حذف و یا اضافه کردن پسوند های مختلف به این قسمت می توانید فایل های خاص خود را با پسوند های مشخص خود به IIS در جهت ارائه به کاربر در قالب فایل دانلودی معرفی کنید . در صورتیکه IIS نداند با هر یک از پسوند های موجود در MIME چه کند سعی می کند محتوای آن را در قالب وب نمایش دهد .


MIME Types در IIS چیست


در تصویر بالا شما با استفاده از گزینه Add در سمت راست و بالای تصویر می توانید پسوند های مورد نظر خود برای دانلود یا عدم دانلود را مشخص کنید ، در اینجا هر یک از پسوند هایی که با MIME Type از نوع application مشخص شده اند به عنوان یک فایل دانلودی برای IIS محسوب می شوند . برای درک بهتر موضوع پسوند csv را یکبار از این قسمت حذف کنید و سپس در مرورگر خود در خواست فایلی با همان پسوند را بدهید ، سرور به جای اینکه فایل را برای دانلود در اختیار شما قرار دهد ، آن را بصورت آنلاین به شما نمایش خواهد داد.

نتیجه

در این قسمت شما با قابلیت های وب سرور و مدیریت مقدماتی Binding ها و انواع مختلف آنها ، روش ها و انواع Log برداری از وب سرور ، ایجاد پوشه های مجازی یا Virtual Directory ها در وب سرور و همچنین تعیین پسوند فایل های دانلود یا MIME Type ها آشنا شدید ، البته حتما برای درک بهتر این مطالب بایستی بصورت عملی با این امکانات در محیط واقعی درگیر شوید ، در ادامه مقالات و شماره چهارم این سری قسمت شما را application pool ها ، Worker Process ها ، Recycling و تنظیمات مربوط به این امکانات وب سرور آشنا خواهیم کرد ، امیدوارم که این قسمت مورد توجه شما قرار گرفته باشد .

Application Pool ، Worker Process و Recyc

در این قسمت شما را با مبحث Application Pool ها و Worker Process ها آشنا می کنیم ، این قسمت چگونگی برخورد وب سرور IIS در مقابل درخواست های وب یا Web Request هایی که از طرف کلاینت ها دریافت می شود را بررسی می کند . در اینجا با یک سری از مسائل امنیتی مربوط به Application Pool ها و Worker Process ها آشنا خواهیم شد

و همچنین کمی در خصوص شیوه دسترسی وب سرور IIS به منابع خارجی یا External Resources نیز صحبت خواهیم کرد و در خصوص پایداری و سلامت ( Stability and Health ) مربوط به Application Pool ها صحبت می کنیم .اما در ابتدا بایستی شما را با مفهوم Application Pool آشنا کنیم 

سپس به این مسئله خواهیم پرداخت که ارتباط بین Application Pool ها و Worker Process ها از چه طریق انجام می شود و یک ایده جالب به نام Recycling را نیز به شما معرفی خواهیم کرد ، در واقع Recycling به این فرضیه می پردازد که بسیاری از برنامه نویس ها وب ، کدهای خوبی تولید نمی کنند و همین امر باعث بالا رفتن و دچار مشکل شدن سرور خواهد شد ، شما می توانید برای وب سرور IIS تعیین کنید که با اینگونه نرم افزارهای تحت وب مشکل دار چگونه برخورد کند.

در قسمت اول از این سری مقالات اشاره کردیم که زمانیکه IIS درخواستی را از کلاینت برای وب دریافت می کند ابتدا این درخواست در Kernel Mode توسط Http Listener دریافت می شود و بر حسب نوع درخواست Http Listener درخواست را به وب سایت مورد نظر منتقل کرده و در همین لحظه یک فایل اجرایی بر روی CPU ایجاد می شود که فرآیند دسترسی به منابع وب سایت و پردازش های لازم آن را انجام می دهد 

به این فایل اجرایی همانطور که اشاره شد یک Worker Process گفته می شود . تمامی این پردازش ها یا Process ها در قالب یک Application Pool مدیریت و نگهداری می شوند و در کلامی دیگر Application Pool ها حاوی Worker Process هایی هستند که توسط وب سرور ایجاد می شود ، هر Application Pool می تواند در خود یک یا بیش از یک عدد Worker Process داشته باشد.

اما برای درک بهتر واژه Application Pool چند نکته را در نظر داشته باشید . مفهوم Application Pool از وب سرور IIS نسخه 6.0 مطرح شد، Application Pool ها برای تفکیک کردن Worker Process هایی بکار می روند که از تنظیمات و منابع مشترکی برای ارائه سرویس وب استفاده می کنند . با استفاده از یک Application Pool شما می توانید یک نرم افزار کاربردی تحت وب یا یک وب سایت را در قالب یک مجموعه ایزوله شده برای بدست آوردن امنیت ، دسترسی پذیری و قابلیت اطمینان بهتر اجرا کنید.

به گونه ای که اگر وب سایت های مختلفی در یک وب سرور وجود دارد با به مشکل خوردن یک وب سایت ، وب سایت های دیگر دچار مشکل نخواهند شد زیرا از Application Pool های مختلفی استفاده می کنند. منظور از منابع در اینجا RAM و CPU سرور می باشد 

شما به تنهایی می توانید یک وب سایت را با استفاده از Application Pool مربوط به آن Restart کنید بدون اینکه بخواهید کل وب سرور IIS را Restart کنید. توجه کنید که هر Application Pool می تواند بیش از یک Worker Process را در خود جای دهد که در خصوص این موضوع در ادامه توضیحاتی خواهیم داد. اما وظایف کلی Application Pool ها را می توانید به موارد زیر تقسیم بندی کنید :


  • مجزا کردن یا ایزوله کردن نرم افزارهای کاربردی تحت وب یا Web Application های مختلف
  • ایجاد Worker Process های منحصر به فرد برای هر یک از Web Application های مختلف
  • قابل اعتماد تر کردن Web Application ها در هنگام بروز مشکلات
  • بالا بردن کارایی ، امنیت و دسترسی پذیری سرور


مفهوم Worker Process  و Application Pool  در IIS

به تصویر زیر که از Task Manager وب سرور بعد از ایجاد یک Worker Process گرفته شده است توجه کنید . همانطور که مشاهده می کنید بعد از ارسال درخواست وب به وب سرور این Process با نام w3wp.exe در CPU اجرا می شود ، جالب اینجاست که در جلوی همین Worker Process نام Application Pool ای که با استفاده از آن اجرا شده است نیز ذکر شده است که در اینجا ما از Application Pool پیشفرض وب سرور IIS استفاده کرده ایم . در ادامه شما را با جزئیات Application Pool ها آشنا خواهیم کرد.

مفهوم Worker Process و Application Pool  در IIS


برای دستیابی به Application Pool های موجود بر روی وب سرور کافیست به محض ورود به کنسول مدیریتی IIS بر روی گزینه Application Pools کلیک کرده تا تمامی Application Pool های موجود بر روی سرور را مطابق شکل زیر مشاهده کنید .

مفهوم Worker Process و Application Pool در IIS


در تصویر فوق شما سه عدد Application Pool مشاهده می کنید که یکی از آنها به نام DefaultAppPool در حالت Stopped قرار دارد. توجه کنید که در صورتیکه هر یک از Application Pool های موجود در این قسمت در حالت Stopped قرار گرفته باشند ، کلیه وب سایت هایی که از این Application Pool استفاده می کنند خارج از سرویس می شوند و نمی توانند فعالیت کنند و در صورتیکه شما این وب سایت را باز کنید خطای 503 Service Unavailable را دریافت خواهید کرد 

دلیل کاملا منطقی برای این موضوع وجود دارد ، هیچ فایل اجرایی برای اجرا تولید نشده است و پردازشی هم ایجاد نمی شود . برای اطمینان از این موضوع به تصویر بالا دقت کنید ، DefaultAppPool به وب سایت پیشفرض IIS که Default Web Site می باشد مرتبط شده است و Stopped است ، و ما در اینجا این وب سایت را Browse می کنیم و نتیجه تصویر پایین است .

بروز خطای 503 Service Unavailable به دلیل غیرفعال بودن Application Pool


فکر می کنم تا حدودی با مفهوم و کارکرد Application Pool ها آشنایی پیدا کردید ، در اینجا می خواهیم سه قسمت مهم از این Application Pool ها را به شما معرفی کنیم ، قسمت اول Basic Settings و قسمت بعدی Advanced Settings و در نهایت به معرفی Recycling خواهیم رفت ، برای اینکه بتوانید به این موارد دسترسی داشته باشید هم می توانید از طریق قسمت پنل سمت راست Application Pool ها و هم با راست کلیک کردن بر روی Application Pool مورد نظر خود به این قسمت ها دسترسی پیدا کنیم ، ابتدا به بررسی قسمت Basic Settings می پردازیم .

تنظیمات Basic Settings در Application Pool های IIS


در اینجا ما Basic Settings مربوط به DefaultAppPool را باز کرده ایم ، در قسمت .NET Framework Version شما می توانید تعیین کنید که وب سایت شما از چه نسخه ای از .NET Framework استفاده کند ، در صورتیکه وب سایت شما استاتیک است و کد اجرایی در آن وجود ندارد شما می توانید از این قسمت گزینه No Managed Code را انتخاب کنید.

در قسمت Managed Pipeline mode شما شما دو گزینه دارید که به نام Classic Mode و Integrated Mode مشخص می باشند ، در اینجا شما به IIS می گویید که با کد اجرایی که در وب سایت وجود دارد به چه شکل برخورد کند ، برای درک بهتر موضوع هر دوی این گزینه ها را با هم بررسی می کنیم :

Classic Mode در IIS چیست؟

این مد اجرایی مربوط به IIS نسخه 6 و قبل تر از آن بود که در آنجا IIS برای اجرای کدها صرفا از ISAPI Extensions و ISAPI Filters بصورت مستقیم استفاده می کرد . در واقع اگر شما نرم افزاری را با استفاده از فناوری ASP.NET نوشته بودید در اینجا IIS با کدهای ASP.NET صرفا به عنوان یک Extension از ISAPI به نام aspnetisapi.dll و یک ISAPI Filter به نام aspnetfilter.dll برخورد می کرد.

در اینحالت در واقع IIS به کدهای ASP.NET به عنوان یک Plug-in برای ISAPI نگاه می کند و با احتیاط و در اصطلاح در حالت جعبه سیاه یا Black Box با این کد برخورد می کند ، در نتیجه در اینجا کدهای ASP.NET تفاوت چندانی با کدهای PHP و زبان های مشابه برای IIS ندارند ، این مد معمولا برای برنامه های قدیمی استفاده می شود که ترجیحا هیچوقت از آن استفاده نکنید. پیشنهاد می کنم در صورتیکه نرم افزار تحت وبی دارید که قدیمی است و نیاز به این حالت دارد در یک ماشین مجازی ویندوز سرور 2000 را نصب کنید و بر روی آن سرویس را ارائه دهید و امنیت IIS اصلی خود را با اینکار به خطر نیندازید.

Integrated Mode در IIS چیست؟

بر خلاق حالت Classic حالت Integrated که در وب سرور IIS نسخه 7 معرفی شد بسیار بسیار با ASP.NET هماهنگ و مخلوط شده است . در این حالت ASP.NET می تواند تمامی درخواست ها را مشاهده و آنها را تغییر و دستکاری کند. در حالت Integrated Mode دیگر ASP.NET به عنوان یک Plug-in خارجی در IIS نیست

بلکه جزئی از خود وب سرور IIS محسوب می شود. در این حالت ماژول های HttpModules مربوط به ASP.NET تقریبا قدرتی شبیه یا معادل ISAPI Filter ها و همچنین HttpHandlers های ASP.NET قدرتی معادل قدرت ISAPI Extension ها را پیدا کرده اند. توجه کنید که در این حالت ASP.NET جزوی از IIS محسوب می شود .

در ادامه بر روی گزینه Advanced Settings کلیک کرده و تصویری مشابه آنچه در پایین مشاهده می کنید را خواهید دید ، در اینجا ما بیشتر بصورت کلی موارد موجود را توضیح خواهیم داد و بعضا مواردی که اهمین چندانی در این مسئله ندارند را توضیح نخواهیم داد ، قسمت Advanced Settings به 6 قسمت اصلی General ، CPU ، Process Model ، Process Orphaning ، Rapid-Fail Protection و Recycling طبقه بندی می شود که در ادامه با مهمترین تنظیماتی که در هر یک از این قسمت ها می توانید مشاهده کنید آشنا خواهید شد.

Advanced Settings در تنظیمات Application Pool در IIS



  • تنظیمات General : بیشتر موارد این قسمت اعم از .NET Framework Version و همچنین Managed Pipeline Mode را در قسمت Basic Settings توضیح داده ایم ، در خصوص Enable 32 Bit Applications می توان گفت که این قابلیت اگر در حالت True قرار داشته باشد به وب سرور این امکان را می دهد که در صورتیکه بر روی یک سیستم عامل و سرور 64 بیتی قرار داشته باشد ، Worker Process هایی که بر روی Application Pool ها قرار دارند بصورت WOW64 فعالیت کنند ، این کلمه مخفف Windows On Windows 64 می باشد و در این حالت کلیه Worker Process هایی که در Application Pool ها قرار می گیرند در قالب ساختار پردازشی 32 بیتی پردازش می شوند .
  • در خصوص Queue Length یا اندازه صف ، ابتدا بایستی متوجه شوید که هر یک از Worker Process ها در لحظه فقط می توانند یک Process را مدیریت و سرویس دهی کنند و بعد از اینکه این Process یا درخواست تمام شد به سراغ در خواست بعدی می روند و این عمل به همین شکل ادامه دارد ، شما با انجام دادن این تنظیم به Http Listener می گویید که در صورتیکه بیش از 1000 عدد درخواست به درون Kernel وارد شد دیگر آنها را در صف پردازش قرار نده و به جای آن به آنها پیام خطای 503 Service Unavailable بده ، این تنظیم می تواند تا حدود زیادی وب سرور را از شر حملات DDOS حفظ کند.


Advanced Settings در تنظیمات Application Pool در IIS



  • تنظیمات CPU : در این قسمت شما به یک Worker Process می گویید که چگونه از منابع CPU استفاده کند. در قسمت Limit شما می توانید حداکثر درصد استفاده یک Worker Process از منابع CPU را مشخص کنید ، در صورت انتخاب این مورد شما بایستی درصد را در 10 ضرب کنید و محاسبه کنید ، برای مثال اگر در این قسمت عدد 250 را قرار دهید یک Worker Process می تواند تا 25 درصد از منابع CPU را به خود اختصاص دهد . در ادامه و در قسمت Limit Action شما به سرور می گویید که در صورتیکه یک Worker Process از منابع تخصیص یافته به آن تجاوز کرد و درخواست منابع بیشتری کرد با این Worker Process چه برخوردی انجام دهید ، NoAction کاری انجام نمی دهد اما با انتخاب گزینه KillW3wp این Process توسط سرور Kill یا به زبان خودمانی از بین می رود. در قسمت Limit Interval شما به سرور می گویید که در صورتیکه یک Worker Process مربوط به این Application Pool مدت زمانی مثلا در اینجا 5 دقیقه نتوانست خود را به حالت عملیاتی و فعال در بیاورد آن را از بین ببرد تا منابع برای استفاده سایر پردازش های سیستم باز شود. در خصوص Processor Affinity و Processor Affinity Mask فقط یک نکته میگم ، اینها در خصوص شیوه استفاده یک Worker Process از تعداد CPU های موجود بر روی سرور و الگوی استفاده از این CPU ها هستند ، ترجیحا هیچوقت این پیشفرض ها را دستکاری نکنید ، قرار نیست هر چیزی را که می توانیم دستکاری کنیم ، دستکاری کنیم ، من تا به حال موردی را مشاهده نکرده ام که بخواهیم از چنین موردی استفاده کنیم .


Advanced SEttings در Application Pool های IIS



  • تنظیمات Process Model : در قسمت Identity در این قسمت شما به یک Worker Process می گویید که با چه سطح دسترسی با سرور ارتباط برقرار کرده و منابع سیستم را در اختیار بگیرد ، همانطور که می دانید هر نرم افزار یا سرویسی که اجرا می شود برای اینکه بتواند فعالیت های خود را انجام دهد بایستی در قالب دسترسی یک کاربر به سیستم دسترسی پیدا کند که در اینجا ApplicationPoolIdentity بصورت پیشفرص به عنوان کاربر سرویس این Application Pool در نظر گرفته شده است ، با استفاده از دکمه سه نقطه روبروی این قسمت می توانید کاربر دیگری را برای اینکار تعیین کنید . در قسمت Idle_Timeout شما می توانید به سرور بگویید که در صورتیکه یک Worker Process به مدت 20 دقیقه بصورت پیشفرض بدون کار بر روی سرور قرار داشت این Process را برای باز شدن منابع برای سایر پردازش های سیستم از بین ببرد . برخی از نرم افزارهای کاربردی تحت وب برای اینکه بتوانند به درستی فعالیت کنند بخشی از فایل های خود را بایستی در قسمت Temp کاربری که برای سرویس آنها تعیین شده است Load کنند ، بصورت پیشفرض ویندوز برای کاربران سرویس پروفایل کاربری را ایجاد نمی کند ، با انتخاب و قرار دادن گزینه Load User Profile شما به سرور IIS می گویید که پروفایل کاربر سرویس را ایجاد و Load کند. قسمت Ping Enabled به وب سرور می گوید که در وهله های زمانی معین Worker Process مورد نظر را از نظر کارکرد تست کند و در صورتیکه این WP پاسخی به درخواست نداد این WP را از بین ببرد . سایر موارد نیز مرتبط با مهلت زمانی است که سرور برای شروع یا پایان کار به یک WP اختصاص می دهد.


Advanced SEttings در Application Pool های IIS



  • تنظیمات Process Orphaning : این قسمت برای انجام تحلیل برای برنامه نویس های وب است ، در این حالت سرور به جای اینکه یک WP که پاسخگو نیست را ابتدا تشخیص داده و سپس به جای اینکه آن را از بین ببرد آن را در حالت تعلیق قرار می دهد ، بدین معنا که دیگر به این WP درخواستی ارسال نمی شود و در اینجاست که برنامه نویس می تواند مشکلات احتمالی این WP را تشخیص و تحلیل کند .


Advanced Settings در Application Pool های IIS



  • تنظیمات Rapid-Fail Protection : در قسمت Service Unavailable Response Type به شما گفته می شود که در صورتیکه Application Pool شما به حالت Stopped در آمده باشد چه اتفاقی بیافتند ، اگر در ادامه این قسمت را در حالت HttpLevel قرار دهید ، سرور به شما خطای 503 Service Unavailable می دهد ، و اگر در حالت TCPLevel قرار دهید سرور این امکان را دارد که درخواست را به یک سرور Load Balance جایگزین منتقل کند که معمولا زمانی کاربرد دارد که شما دارای چندین سرور بصورت Redundant هستید . در قسمت Enabled شما به Application Pool می گویید که در صورتی بروز چند خطا در Worker Process ها خود را به حالت Stopped در بیاورد ، در ادامه شما Failure Interval و Maximum Failure را دارید که محدوده زمانی تعداد خطاهای Worker Process ها و حداکثر تعداد خطاها در این محدوده زمانی را مشخص می کند . سایر موارد نیز بیشتر در مباحث Load Balancing در IIS کاربرد دارند.


Advanced Settings در Application Pool های IIS



  • تنظیمات Recycling : مایکروسافت بعد از ارائه محصول وب سرور IIS نسخه 6.0 به این نتیجه رسید که بیشتر برنامه نویس های وب از جمله برنامه نویس های زبانهای ASP.NET ، PHP ، ASP و غیره معمولا کدهای چندان خوبی تولید نمی کنند و همین امر ممکن است باعث گرفته شدن منابع زیادی از سیستم شود ، به مرور همین موضوع باعث کاهش کارایی سیستم و سرور و در برخی اوقات حتی می تواند باعث Crash کردن سرور هم بشود . با توجه به اینکه شما نمی توانید به برنامه نویس ها اجبار کنید که چگونه کدنویسی کنند بنابراین کار چندانی از دست شما بر نمی آید . اما برخی اوقات همین کدهای مشکل ساز در وب سرور اجرا می شوند و Worker Process هایی را ایجاد می کنند ، بعد از بروز مشکل این Worker Process ها همچنان در سرور باقی می مانند و باعث گرفته شدن منابع سرور از سایر وب سایت ها و سرویس ها می شوند . با استفاده از قابلیت Recycling شما می توانید به وب سرور بگویید که با این Worker Process های باقی مانده در حافظه و یا با کل این Process ها چگونه رفتار کند ، به جای اینکه قسمت بالا را توضیح دهیم از قسمت Advanced Settings خارج شوید و از همان قسمت قبلی گزینه Recycling را انتخاب کنید ، با تصویر زیر مواجه خواهید شد.


Advanced Settings در Application Pool های  IIS در Recycling


در قسمت Regular Time Interval شما به IIS می گویید که در طی مدت زمان 1740 دقیقه بعد از ایجاد شدن یک Worker Process در هر صورت به ادامه کار آن خاتمه دهد . شما معمولا زمانی از این گزینه استفاده می کند که یک نرم افزار کاربردی تحت وب دارید که مشکلات زیادی را بعد از اجرا شدن در مدت زمان طولانی ایجاد می کند.

بر اساس مواردی که در خصوص این نرم افزار می دانید شما می توانید تعیین کنید که کلیه Worker Process های این Application Pool طی این مدت زمان از بین رفته و مجددا ایجاد شوند . با اینکار از به مشکل خوردن نرم افزار خود قبل از بروز مشکل جلوگیری کرده اید.

در قسمت Fixed Number Of Requests شما به IIS می گویید که در صورتیکه درخواست های ارسالی به این Worker Process بیش از اندازه تعیین شده بود ، سایر درخواست ها را Recycle کند ، معمولا در مواردی از این قسمت استفاده می کنید که می دانید نرم افزار تحت وب شما با دریافت مثلا 1000 درخواست شروع به بروز مشکل می کند و با اینکار می توانید از این مشکلات جلوگیری کنید ، برای انجام اینگونه تنظیمات شما بایستی نرم افزار خود را به خوبی شناخته باشید. سایر موارد هم از عنوانشان کاملا پیداست که چه نوع کارایی در سرور IIS و ساختار Recycling دارند.

نتیجه

در این قسمت شما با مفهوم Application Pool ها و Worker Process ها و چگونگی ارتباط اینها با یکدیگر آشنا شدید و از طرفی با تظیمات مختلفی که برای هر یک وجود دارند آشنا شدید. در نهایت با معرفی قابلیت بسیار جالب Recycling جهت مدیریت بهتر خطاهای نرم افزاری بر روی سرور آشنا شدید . در قسمت بعدی شما را با مواردی از قبیل ISAPI Extension و ISAPI Filters و تفاوت بین این دو آشنا خواهیم کرد و از طرفی با CGI و Fast CGI و ویژگیهای آنها در وب سرور آشنا خواهیم کرد. امیدوارم که مورد توجه شما قرار گرفته باشد.

ISAPI Extention ، ISAPI Filter و CGI

در این قسمت برای شما روش های توسعه یا Extend کردن وب سرور IIS با استفاده از Extension های آن برای بالا بردن کارایی های آن را توضیح خواهیم داد. خوب برای اینکه کارایی های IIS را توسعه دهیم روش های متعددی وجود دارد که از آن جمله می توان به استفاده از ISAPI Extension ها ، ISAPI Filter ها و همچنین CGI و همچنین ASP و PHP اشاره کرد. در ابتدای این قسمت ابتدا به بررسی ماهیت Extension و منظور از بکار بردن واژه Extension برای IIS اشاره می کنیم و سپس به معرفی ISAPI Extension و ISAPI Filter می رسیم .

در این قسمت به تفاوت های بین Filter ها و Extension ها را توضیح خواهیم داد . در نهایت کمی در خصوص CGI و سایر Extension های موجود صحبت خواهیم کرد و بصورت ویژه در خصوص ASP.NET و PHP توضیحاتی را ارائه می دهیم . در همینجا متذکر می شوم که این قسمت برای معرفی این قابلیت ها می باشد و در آن چیزی در خصوص شیوه برنامه نویسی و کد نویسی برای Extension ها اشاره نشده است ، صرفا هدف معرفی ماهیت این موجودیت ها در IIS می باشد .

Extension در  IIS چیست؟

در اینجا شاید برای شما هم این سئوال پیش بیاید که اصلا Extension چیست و در IIS به چه معناست ؟ جالب اینجاست که با اینکه چند وقتی در اینترنت و چندین کتاب مختلف در خصوص مفهوم Extension جستجوهایی انجام دادم اما در هیچکدام تعریف درستی از Extension ارائه داده نشده بود

اما در نهایت به یک تعریف و مثال برای باز کردن مفهوم Extension ها در IIS رسیدم ، Extension ها ابزارهای جانبی هستند که به وب سرور IIS این امکان را می دهند که قابلیت هایی بیش از آنچه که بصورت پیشفرض برایش تعریف شده داشته باشد .

این مثال را می توان به سیستم عامل ویندوز ربط داد ، شما زمانیکه سیستم عامل ویندوز را خریداری می کنید ( البته نه از سوپر مارکت بلکه از نمایندگی مایکروسافت ) ابزارهایی که بر روی آن وجود دارند یک سری امکانات پیشفرض را به شما ارائه می دهند 

برای مثال ابزار WordPad برای تایپ مطالب ، ابزار Paint برای کشیدن نقاشی یا طرح و .... در بسیاری اوقات این ابزارها کار شما را راه می اندازند و شما نیازی به ابزار جانبی نخواهید داشت ، اما برخی اوقات نیازهای شما فراتر از آن چیزی است که ویندوز در اختیار شما قرار می دهد.

بنابراین مجبور می شوید که یک نرم افزار تخصصی را در این زمینه خریداری کنید که البته با سیسنم عامل ویندوز شما هماهنگی دارد ، مثلا به جای استفاده از WordPad از Office Word استفاده می کنید. این دقیقا همان چیزی است که در خصوص Extension ها در IIS وجود دارد

شما برای اینکه بتوانید از قابلیت های پیشرفته IIS استفاده کنید از Extension هایی که برای اینکار ساخته شده اند استفاده می کنید ، البته برخی از این Extension ها در خود IIS بصورت پیشفرض موجود هستند و برخی دیگر بایستی بر روی آن نصب شده و یا برای آن کدنویسی شوند. Extension ها را می توان به نوعی ماژول های IIS نیز عنوان کرد ، شما اگر بخواهید به قابلیت های IIS چیزی اضافه کنید ، برای IIS یک Extension جدید می نویسید.

ISAPI چیست؟

در پاراگراف قبلی شما مفهوم یک Extension برای IIS را متوجه شدید ، اما قبل از اینکه برای شما ISAPI Extension را تشریح کنیم بهتر است بدانیم که ISAPI چیست ؟ کلمه ISAPI مخفف شده کلمه Internet Server Application Programming Interface است و در واقع یک نوع API است که به برنامه نویس ها اجازه توسعه و گسترش امکانات و قابلیت های موجود در وب سرور IIS را می دهد.

ISAPI بصورت ویژه برای کارکردن و کاربرد در IIS طراحی شده است اما صرفا به این وب سرور محدود نمی شود و وب سرورهای دیگر نظیر Apache نیز برای اینکه بتوانند از نرم افزارهای کاربردی تحت وب نوشته شده به زبان ASP.NET پشتیبانی کنند از یک ماژول ISAPI استفاده می کنند.

وب سرور مایکروسافت یا همان IIS از مجموعه ای از زیر برنامه ها یا Sub-Application ها تشکیل شده است که بسیار بسیار قابل تنظیم و تغییر هستند. ASP.NET یکی از همین قسمت های IIS محسوب می شود که به یک برنامه نویس این اجازه را می دهد که بتواند نرم افزارهای کاربردی تحت وب یا وب سایت های خود را با زبان برنامه نویسی مورد علاقه خود ( VB.NET,C#,F# ) که به وسیله تکنولوژی Microsoft .NET پشتیبانی می شود بنویسند.

اما این زبان های برنامه نویسی ، زبان های سطح بالا هستند . ISAPI یک سیستم برنامه نویسی بسیار سطح پایین تر از اینها می باشد که به برنامه نویس امکان کدنویسی کدهایی با کارایی و سرعت اجرا بالاتر و البته سادگی کمتر را می دهد. نرم افزارهایی که برای توسعه یا Extend کردن IIS مورد استفاده قرار میگیرند و در واقع به ISAPI Extension معروف هستند با زبان هایی مانند C و یا C++ نوشته می شوند.

 ISAPI یا ISAPI Applications چیست؟

ISAPI از دو جزء تشکیل شده است ، Extensions و Filters . اینها تنها مواردی هستند که می توان یا استفاده از ISAPI Programming آنها را توسعه و برایشان کد نویسی کرد. هر یک از این دو مورد بایستی ابتدا در قالب یک فایل DLL برای ویندوز کامپایل شده و در وب سرور IIS ثبت یا Register شوند تا بتوان از آنها در IIS استفاده کرد.ISAPI Application ها را می توان با استفاده از هر زبان برنامه نویسی که بتوان از آن خروجی استاندارد توایع C را گرفت .

می توان برنامه نویسی کرد که در اینجا معمولا به زبانهای C و C++ و Delphi نوشته می شوند. یک سری کتابخانه یا Library در زبان های برنامه نویسی وجود دارند که امکانات ویژه ای برای برنامه نویس برای ISAPI ها قراهم کرده اند که از آن جمله می توان به Intraweb در Delphi اشاره کرد. باز هم تاکید میکنم که بحث ما در این قسمت برنامه نویسی برای ISAPI ها نیست بلکه صرفا می خواهیم دیدگاهی نسبت به این Extension در IIS داشته باشید.

ISAPI Extension چیست ؟

ISAPI Extensionها در واقع نرم افزارهایی هستند که بر روی IIS قرار دارند ، آنها به تمام فعالیت ها و کارکردها و امکاناتی که توسط IIS ارائه می شوند دسترسی کامل دارند . ISAPI Extension ها در قالب فایل های DLL بر روی IIS لود می شوند و در نهایت توسط خود وب سرور IIS کنترلر می شوند.

کلاینت ها همانطور که به یک صفحه وب استاتیک HTML دسترسی پیدا می کنند می توانند به ISAPI Extension ها نیز دسترسی پیدا کنند. ISAPI Extension ها می توانند در قالب مدیریت کردن پسوند یک فایل در وب سرور ، یک پوشه در وب سرور و یا حتی یک سایت کامل در وب سرور بکارگیری شوند . ASP ، ASP.NET ، ColdFusion ، Perl ISAPI و PHP از نمونه ISAPI Extension های شناخته شده ای هستند که در IIS پشتیبانی می شوند.

ISAPI Filter ها چیست؟

ISAPI Filter ها برای تغییر دادن و بالابردن کارایی فعالیت ها و سرویس های IIS استفاده می شوند. همانطور که از نام این نوع Extension مشخص است برای Filter کردن درخواست هایی که به وب سرور ارسال می شوند استفاده می شوند . آنها همیشه بر روی وب سرور IIS فعال هستند و تمامی درخواست ها را با توجه به قوانینی که برای آنها تعیین شده است Filter می کنند مگر اینکه درخواست مورد نظر نیازمند فرآیند پردازشی خاصی باشد.

Filter ها به گونه ای برنامه نویسی می شوند که می توانند هم ترافیک ورودی و هم ترافیک خروجی را آزمایش و تغییر دهند. Filter ها در قالب فایل های DLL به IIS معرفی و در آن ثبت می شوند و IIS می تواند آنها در در دو سطح Site و Server اعمال کند .

به سطح Server در اصطلاح Global Level هم گفته می شود و هر چیزی که در این سطح اعمال شود بر روی کلیه سایت های موجود بر روی سرور اعمال خواهد شد. Filter ها زمانی شروع به کار می کنند که یک Worker Process ایجاد شود و در همین لحظه شروع به گوش دادن به درخواست هایی که برای سایت ای که بر روی آن نصب شده است می کند. وظایف معمولی که توسط ISAPI Filter ها انجام می شود به شرح زیر است :

  • اعمال تغییرات در داده های درخواستی توسط کلاینت مثل URL ها و Header ها
  • کنترل کردن فایل فیزیکی که به آدرس URL متصل شده است
  • کنترل نام کاربری و رمز عبوری که توسط سیستم احراز هویت Basic یا Anonymous استفاده می شود
  • اعمال تغییرات و تجزیه و تحلیل درخواست بعد از اتمام فرآیند احراز هویت
  • اعمال تغییرات در پاسخی که به سمت کلاینت بازگردانی می شود
  • اجرای پردازش های دلخواه در خصوص پاسخ هایی که با Access Denied مواجه می شوند
  • اجرای پردازش در زمانی که درخواست کلاینت کامل می شود
  • اجرای پردازش در زمانی که ارتباط بین کلاینت با سرور بسته می شود
  • گرفتن لاگ های خاص و تجزیه و تحلیل ترافیک
  • انجام دادن ساختار احراز هویت دلخواه
  • مدیریت کردن ساختار رمزنگاری و فشرده سازی

ساختار کارکرد ISAPI Filter ها و ISAPI Extension ها چگونه است ؟

خوب برای اینکه ساختار کارکرد ایندو را به خوبی درک کنیم ابتدا به بررسی تفاوت بین ایندو می پردازیم . خوب در اولین مرحله این فرآیند یک کلاینت به وب سرور یک درخواست وب تحت شبکه ارسال می کند و این درخواست توسط Kernel Mode Listener یا همان Http Listener دریافت می شود.

در اینجا Kernel Mode Listener بررسی می کند که درخواست دریافت شده اجازه استفاده از منابع کدامیک از وب سایت های موجود در IIS را دارد ، سپس بررسی می کند که در این وب سایت از کدامیک از Application pool های موجود و همچنین worker Process های فعال استفاده می شود و در نهایت درخواست رسیده از طرف کلاینت را در درون صف پردازشی Worker Process یا Process Queue قرار می دهد.

خوب در این مرحله بعد از اینکه نوبت به پردازش این درخواست رسید ، Worker Process مورد نظر درخواست را دریافت کرده و در اینجاست که ISAPI Filter مربوطه به این درخواست در قالب یک فایل اجرایی شروع به کار می کند . خوب همانطور که اشاره شد Filter ها در IIS می توانند درخواست ها را دریافت و آنها را تغییر دهند 

برای مثال آنها می توانند چهره URL ها را عوض کنند و یا در برخی اوقات می توانند اطلاعات مربوط به Cookie های موجود در درخواست ها را تحلیل کرده و اطلاعات مورد نظر خود را از آن دریافت کنند. توجه کنید که در این مرحله هیچگونه پردازشی بر روی درخواست انجام نشده است و در واقع این یک مرحله قبل از انجام پردازش محسوب می شود . در واقع در اینجا filter ها یک مرور اولیه بر روی درخواست ها انجام می دهند.


ISAPI Extensions و ISAPI Filters

خوب در اینجا توجه کنید که اگر درخواست کلاینت یک درخواست صفحه وب استاتیک باشد هیچگونه نیازی به انجام پردازش نیست و IIS می داند که درخواست را بایستی به کدامیک از وب سایت های موجود ارسال کند. اما اگر درخواست کلاینت برای وب سایت های داینامیک بود که با استفاده از زبان های PHP یا ASP نوشته شده اند و دارای Managed Code باشند ، در اینجاست که درخواست ها نیاز به پردازش دارند و درخواست به Extension ها ارسال می شود تا فرآیند پردازشی آنها انجام شود. خوب در اینجا فرض کنید که در URL آدرس دارای پسوند PHP می باشد.

در اینجا بعد از انجام عملیات اولیه توسط Filter ها درخواست به Extension ای که مربوط به پردازش پسوند های PHP است ارسال می شود و این Extension با توجه به دستوراتی که به آن داده اند پردازش را بایستی بر روی این درخواست انجام دهد .

بعد از اینکه فرآیند پردازشی توسط Extension انجام شد ، درخواست مجددا به سمت IIS ارسال می شود و IIS نیز درخواست کلاینت را پاسخگویی می کند.ممکن است در یک فرآیند درخواست چندین Extension همزمان فراخوانی شوند و این کاملا به نوع فایلی که توسط کلاینت درخواست شده است بستگی دارد.

برای مثال ممکن است در یک درخواست یک صفحه ASP.NET فراخوانی شود که نیاز به Compression و همچنین لاگ برداری دارد ، در این زمان سه Extension همزمان برای انجام این فرآیند فراخوانی می شوند ، جالب اینجاست که شما می توانید ترتیب اجرای این Extensions ها را برای IIS مشخص کنید ، این مورد برای Filter ها نیز صادق می باشد. نکته مهمی که بایستی در نظر داشته باشید این است که همیشه Filter ها با زبان ISAPI نوشته می شوند اما Extension ها می توانند به زبان های مختلفی از جمله CGI ، ISAPI یا Fast CGI نوشته شوند.

منظور از CGI و Fast CGI در Extension های IIS چیست ؟

CGI مخفف کلمه Common Gateway Interface است و یک استاندارد برای ایجاد نرم افزارهای تحت وب در قالب فایل های اجرایی می باشد. فایل هایی که با استفاده از این استاندارد تولید می شوند به CGI Scripts یا ساده تر بگوییم CGI ها معروف هستند که معمولا با یک زبان اسکریپت نویسی نوشته می شوند.

وب سرورهایی که از CGI ها پشتیبانی می کنند می توانند URL ها را به گونه ای ترجمه کنند که در نهایت درخواست ها به یک اسکریپت CGI اجرایی ختم شود. اگر دقت کرده باشید در ریشه پوشه های وب سروهای لینوکسی پوشه ای به نام cgi-bin وجود دارد .

تمامی فایل های اجرایی که در قالب CGI هستند برای مسائل امنیتی در این پوشه قرار می گیرند . همانطور که اسکریپت های اجرایی می توانند کارها را سریعتر انجام دهند به همان اندازه نیز می توانند خطرناک باشند ، تصور کنید که با استفاد از همین دستورات اجرایی CGI یک اسکریپت مخرب در وب سرور فراخوانی و اجرا شود . CGI به همین دلایل و همچنین بوجود آمدن زبان های برنامه نویسی وب جدید و امنیت بیشتر این زبان ها کم کم از استفاده افتاد و هم اکنون استفاده چندانی از این تکنولوژی در وب سرورها نمی شود .

هر چند که با وجود Extension های مربوط به CGI در وب سرور IIS این قابلیت وجود دارد که شما بتوانید از این اسکریپت ها استفاده کنید . اما نسل بعدی CGI به نام Fast CGI می باشد که این Extension که برای IIS هم وجود دارد همانند اسمش سریعتر از CGI های معمولی اجرا می شوند و قطعا بار کاری کمتری را بر روی وب سرور قرار می دهد .

استفاده از Extension ها در IIS

تا اینجا در خصوص تئوری های مباحثی همچون Extension ها ، ISAPI ، Filter ، CGI و ... صحبت کردیم ، اما این Extension ها و Filter ها در کجای وب سرور IIS قرار دارند و ما چگونه می توانیم به آنها دسترسی داشته و آنها را تغییر بدهیم ؟ همانطور که اشاره کردیم در این قسمت صرفا به موجودیت این موارد اشاره می کنیم

و انجام هر گونه تغییرات اساسی در این خصوص نیازمند دانش فنی برنامه نویسی در این حیطه می باشد ، بنابراین صرفا به نمایش محل انجام تنظیمات آنها کفایت می کنیم . در تصویر پایین شما می توانید قسمت هایی همچون Modules ، ISAPI Filters ، ISAPI and CGI Restrictions ، CGI ، Handler Mappings ، Fast CGI Settings و ASP در کنسول وب سرور IIS مشاهده کنید .

ISAPI Extensions  و ISAPI Filters  در IIS

نتیجه

در این قسمت به بررسی مفاهیمی مثل ISAPI ، Extension ، Filter ، CGI ، Fast CGI و ... پرداختیم و کاملا با مفهوم آنها آشنایی پیدا کردیم ، در خصوص آموزش های فنی در این مبحث همانطور که اشاره شد ارتباط چندانی به بحث مدیریت وب سرور IIS ندارد و کاملا یک مبحث برنامه نویسی می باشد و به همین دلیل صرفا به محل قرار گیری آنها در IIS اشاره کردیم . در ادامه این سری مقالات با مفاهیم راه اندازی یک فایل سرور FTP آشنا خواهیم شد و به شما آموزش می دهیم که چگونه یک FTP Server بر روی وب سرور IIS راه اندازی کنید

آموزش راه اندازی FTP سرور در IIS و تنظیماتش

در ادامه مقالات مجموعه آموزش وب سرور IIS امروز نوبت به نصب و راه اندازی سرویس FTP و انجام تنظیمات مربوط به آن رسیده است . به دلیل گسترده بودن مبحث FTP سرور این قسمت را به دو قسمت راه اندازی و انجام تنظیمات تقسیم می کنیم ، در ابتدا با ماهیت اصلی سرویس FTP آشنا خواهیم شد و شما با نوع کاربرد و همچنین مفاهیم امنیتی مربوط به FTP آشنا خواهید شد .

سپس به بررسی انواع نسخه های FTP موجود بر روی سیستم عامل های کاربردی روز می پردازیم و در ادامه به شما شیوه نصب سرویس FTP و معرفی قسمت های مختلف آن را نمایش خواهیم داد . در این دو قسمت شما را با مدیریت مقدماتی FTP سرور از جمله Basic Setting ، Bindings ، Virtual Directories ، Logging ، Request Filters ، Directory Browsing و در نهایت User Isolation آشنا خواهیم کرد.

پروتکل انتقال فایل یا File Transfer Protocol که بیشتر آنرا به نام FTP می شناسیم یک پروتکل استاندارد شبکه است که برای انتقال فایل ها از یک هاست به هاست دیگر توسط شبکه هایی که مبتنی بر پروتکل TCP کار می کنند مانند اینترنت ، بکار می رود . FTP دارای یک معماری کلاینت – سرور یا client-server است و از دو ارتباط یکی برای کنترل و دیگری برای داده ها بین کلاینت و سرور استفاده می کند. کاربرانی که از پروتکل FTP استفاده می کنند چندین روش برای احراز هویت دارند .

ابتدا اینکه یک نام کاربری و رمز عبور را در قالب یک فرم وارد سرور کنند که این رمز عبور معمولا بصورت رمزنگاری نشده و Clear Text رد و بدل می شود ، و روش دوم استفاده از معماری Anonymous Authentication یا احراز هویت بدون نام کاربری و رمز عبور است که معمولا در شرایطی استفاده می شود که سرور نیز به شما اجازه استفاده از آن را بدهد. برای اینکه بتوانیم ارتباطی امن بین کلاینت و سرور برقرار کنیم و در واقع نام کاربری و رمز عبور و همچنین محتویات بسته اطلاعاتی خود را رمزنگاری کنیم .

FTP به شما اجازه استفاده همزمان از پروتکل های رمزنگاری SSL/TLS را می دهد. در برخی اوقات از پروتکل SSH که مخفف کلمه Secure Shell می باشد نیز استفاده می شود که با SSL ساختار متفاوتی دارد . هرگاه ارتباطی از نوع FTP با پروتکل SSL رمزنگاری شود به نام FTPS و هرگاه با SSH امن و رمزنگاری شود به SFTP گفته می شود.


آموزش تصویری راه اندازی FTP  سرور



ما زمانی از یک FTP سرور استفاده می کنیم که بخواهیم به کاربران خود این اجازه را بدهیم که بتوانند فایل های خود را از طریق سایت انتقال دهند . چه سایت شما در یک شبکی اینترانت محلی و یا در شبکه اینترنت باشد شیوه پیاده سازی و قرار دادن فایل ها و برداشتن آنها توسط سرور FTP تفاونی ندارد و ساختار کاری یکسان است .

در یک ساختار ساده FTP سرور شما فایل ها را در قالب پوشه در FTP سرور قرار می دهید و کاربران می توانند با برقراری یک ارتباط FTP با استفاده از نرم افزارهای FTP Client و یا یک مرورگر FTP-Enabled آنها را بین خود و سرور انتقال دهند. در این قسمت شما با راه اندازی یک FTP سرور ساده آشنا خواهید شد و در انتها می توانید برای سازمان یا شخص خود یک FTP سرور شخصی ایجاد کنید.

در واقع سرویس FTP به نوعی یک Extension برای IIS محسوب می شود . در IIS نسخه 7 شما دو نوع FTP سرور دارید . نسخه 7 سرور FTP در ویندوز ویستا و ویندوز سرور 2008 موجود است و نسخه 7.5 سرور FTP در ویندوز سرور 2008 نسخه R2 موجود است .همچنین شما می توانید نسخه قابل دانلود و نصب این نسخه از FTP سرور را از سایت مایکروسافت دانلود کرده و بر روی وب سرور خود نصب کنید.

توجه کنید که FTP سروری که در ویندوز ویستا و ویندوز سرور 2008 استفاده می شود همان FTP سروری است که در سرویس IIS نسخه 6 مورد استفاده قرار می گرفته است و تغییرات چندانی در نسخه جدیدتر IIS بر روی آن انجام نشده است .

دقیقا به همین دلیل است که زمانیکه شما در ویندوز اقدام به نصب FTP سرور در IIS نسخه 7 می کنید بایستی بصورت همزمان IIS Manager 6.0 و همچنین Compatibility Tools را نیز نصب کنید تا بتوان از آنها در ویندوز ویستا و ویندوز سرور 2008 استفاده کرد. FTP نسخه 7.5 همانطوری که اشاره شد در ویندوز سون و ویندوز سرور 2008 نسخه R2 موجود است ، این قسمت مربوط به نصب سرویس FTP بر روی ویندوز سرور 2008 است که کمی با ویندوز سرور 2008 نسخه R2 متفاوت است . برای نصب FTP سرور بر روی ویندوز سرور 2008 از طریق زیر اقدام کنید :


1.از طریق منوی استارت بر روی Administrative Tools کلیک کرده و Server Manager را باز کنید.

آموزش نصب FTP  سرور در ویندوز سرور 2008



2.در صفحه Server Manager از قسمت Roles Summary بر روی Web Server ) IIS) کلیک کنید.

آموزش نصب FTP  سرور بر روی ویندوز سرور 2008



3.در قسمت Web Server ) IIS) بر روی Add Role Services کلیک کنید.

آموزش نصب FTP  سرور بر روی ویندوز سرور 2008



4.در قسمت Role Services گزینه FTP Server را انتخاب کنید ، با اینکار FTP Service و FTP Extensibility نصب خواهد شد.

آموزش نصب FTP  سرور بر روی ویندوز سرور 2008



5.بر روی Next کلیک کنید و در نهایت بر روی گزینه Install کلیک کنید.

آموزش نصب و راه اندازی FTP  سرور در ویندوز سرور 2008


خوب تا اینجا FTP سرور ما نصب شده است ، با توجه به اینکه FTP بر روی IIS نسخه 7 بصورت پیشفرض نصب نشده است ، در IIS نسخه 7.5 این سرویس بصورت پیشفرض start است ، این سرویس بصورت پیشفرض بعد از نصب سرویس خود را بر روی IIS فعال نخواهد کرد. به همین دلیل شما بایستی بعد از اینکه سرویس FTP را بر روی این سرور نصب کردید ، سرویس آنرا نیز Start کنید. شما همچنین بایستی مطمئن باشید که سرویس FTP در حالت Stopped یا Paused نباشد تا بتواند به درستی کار کند ، برای اینکه این سرویس را در ویندوز سرور 2008 Start کنید از طریق زیر عمل کنید :

1.از طریق منوی استارت به قسمت Administrative Tools و سپس به قسمت Server Manager بروید.

آموزش نصب و راه اندازی FTP سرور در ویندوز سرور 2008


2.در صفحه Server Manager و از قسمت Roles Summary بر روی Web Server) IIS) کلیک کنید.

آموزش راه اندازی FTP  سرور در ویندوز سرور 2008


3.در قسمت Web Server ) IIS) قسمت system services را باز کنید و سرویس Microsoft FTP Service را start کنید.

آموزش راه اندازی FTP سرور در ویندوز سرور

بر خلاف ساختار وب سرور که بعد از نصب IIS یک وب سایت پیشفرض در IIS ایجاد می کند ، شما بعد از نصب سرویس FTP بر روی IIS هیچ سایت FTP پیشفرضی را مشاهده نخواهید کرد و بایستی از ابتدا آن را ایجاد کنید . در اینجا شما را با ایجاد یک سایت FTP ساده با استفاده از ویزارد اولیه ایجاد سایت FTP آشنا می کنیم . بعد از اینکه این سایت به درستی ایجاد شد در قسمت های بعدی به بررسی دقیقتر ساختار FTP و اجزای آن خواهیم پرداخت ، برای ایجاد یک سایت FTP ساده مراحل زیر را دنبال کنید :

1.وارد کنسول مدیریتی وب سرور IIS شوید.

آموزش نصب و راه اندازی سرویس FTP در ویندوز سرور 2008



2.با باز کردن قسمت Connections قسمت Sites را انتخاب کنید.

آموزش راه اندازی FTP  سرور در ویندوز سرور 2008



3.از قسمت Actions گزینه Add FTP Site را انتخاب کنید و یا بر روی قسمت Sites راست کلیک کرده و Add FTP Site را بزنید، با اینکار ویزارد ایجاد FTP سایت ظاهر خواهد شد.

آموزش راه اندازی FTP سایت



4.در قسمت FTP Site Name نام سایت FTP را وارد کنید ، توجه کنید که این قسمت بخشی از همان Binding برای FTP می باشد و تفاوت آن با Binding ای که برای وب سایت ها وجود دارد در این است که تنها پروتکلی که در اینجا می توانید استفاده کنید FTP است.

آموزش راه اندازی FTP سرور



5.در قسمت Physical Path محل قرارگیری سایتی که قرار است فایل های FTP شما در آنجا قرار بگیرد را نشان دهید.

6.بر روی Next کلیک کنید.

آموزش راه اندازی FTP  سرور در ویندوز سرور



7.آدرس IP که می خواهید برای FTP سایت خود در نظر بگیرید را مشخص کنید.

8.گزینه No SSL را انتخاب کنید.

9.بر روی Next کلیک کنید.

آموزش راه اندازی FTP سرور



10.گزینه Basic Authentication را انتخاب کنید.

11.از منوی بازشوی Allow Access To گزینه All Users را انتخاب کنید.

12.از قسمت Permissions گزینه Read و Write را انتخاب کنید.

13.بر روی Finish کلیک کنید.

تا اینجا شما یک FTP سرور را نصب کردید و توانستید یک FTP سایت نیز به آن اضافه کنید ، برای استفاده از این سایت صرفا کافیست در نرم افزار FTP Client خود که می تواند مرورگر وب شما باشد آدرس سایت را در قالب آدرس FTP به شکل ftp:\\ftp.tosinso.com وارد کنید تا از شما نام کاربری و رمز عبور مربوط به کاربران معتبر در سرور سئوال شود و برای شما FTP سرور آماده سرویس دهی شود .

توجه کنید که در همینجا بایستی به افرادی که می خواهید دسترسی بدهید ، در پوشه ای که در قسمت Physical Path معرفی شد بایستی دسترسی های مجاز NTFS Permission را نیز بدهید تا بتوانند به راحتی از این سرور استفاده کنند . بدیهی است که این مقدماتی برای راه اندازی FTP سرور بود و اگر می خواهید جزئیاتی که در نصب و راه اندازی یک FTP سرور و قابلیت های آن وجود دارد را مشاهده کنید به سراغ قسمت بعدی بروید ، در ادامه شما با تک تک تنظیماتی که می توانید برای یک FTP سرور انجام دهید آشنا خواهید شد هرچند تا همینجا شما توانسته اید FTP سایت خود را آماده سرویس دهی کنید.

آموزش تنظیمات امنیتی و کاربردی در FTP سرور

همانطور که در قسمت قبلی هم گفتیم ابتدا FTP سرور را راه اندازی می کنیم و سپس به بررسی قابلیت ها و امکانات آن می پردازیم ، در این قسمت فرض را بر این گرفته ایم که شما یک FTP سایت را مانند همان چیزی که در قسمت قبلی مطالعه کردید راه اندازی کرده اید و الان می خواهید تنظیمات مربوط به آن را در سرور یا سایت FTP انجام دهید

تنظیمات متعددی برای FTP وجود دارد که در اینجا ما به بررسی تنظیمات مربوط به Authentication یا احراز هویت در FTP سرور ، Authorization یا تعیین حدود عملکرد کاربران در FTP سرور ، ایزوله سازی کاربران یا User Isolation در FTP سرور ، تعیین پیام دلخواه ورود به FTP ، تنظیمات Directory Browsing در FTP ، تنظیمات Firewall و در نهایت تنظیمات امنیتی SSL Setting می پردازیم.

آموزش تنظیمات احراز هویت در FTP در IIS

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

تنظیمات مربوط به FTP در سرور IIS نسخه 7.5

اگر قسمت های قبلی را مشاهده کرده باشید حتما می دانید که تنظیمات در وب سرور IIS در دو سطح سرور و سایت انجام می شوند و در اینجا نیز همین مصداق حاکم است . حتی اگر شما FTP را نصب نکرده باشید ، تنظیمات مربوط به آن در قسمت Site وجود دارند . قطعا این موضوع را می دانید که تنظیمات سرور بر روی تنظیمات سایت جایگزین می شوند و بنابراین برای تشریح بیشتر FTP ما تنظیمات خود را در قسمت Site انجام می دهیم .

در ابتدا به بررسی تنظیمات مربوط به احراز هویت یا Authentication در FTP می پردازیم . IIS برای سرویس FTP از دو نوع سرویس احراز هویت پشتیبانی می کند که به ترتیب Anonymous FTP authentication و Basic FTP Authentication نام دارد . این ساختار احراز هویت نسبت به مدل مشابه برای وب سایت ها ساده تر است.


احراز هویت در FTP سرور
  • نکته مهم : توجه کنید که در صورتیکه که شما دارای FTP سایت یا Virtual Directory هستید و تنظیمات Security را در سطح سرور انجام می دهید ، به محض اینکه تغییرات را تایید کنید وب سرور به شما پیغامی مبتنی بر اینکه تنظیمات انجام شده می بایست توسط زیر مجموعه های تابع این تنظیمات نیز به ارث برده شوند را مشاهده خواهید کرد . با تایید این قسمت تمامی FTP سایت ها و Virtual Directory های زیر مجموعه این سرور تنظیمات انجام شده را به شکلی که در سرور موجود است به ارث خواهند برد .

آموزش فعال سازی Anonymous FTP Authentication در IIS

اگر برای امن کردن منابع اطلاعاتی خود از روش احراز هویت Anonymous FTP Authentication استفاده می کنید بایستی توجه کنید که تمامی درخواست هایی که برای دسترسی به منبع مورد نظر به سرور ارسال می شود بلافاصله تایید می شود ، بدون اینکه سرور به کاربر درخواست وارد کردن نام کاربری یا رمز عبور را بدهد. اما توجه کنید که حتی در Anonymous Authentication نیز شما در واقع دارای یک نام کاربری و رمز عبور هستید .

برای Anonymous Authentication سرور IIS بصورت خودکار یک کاربر به نام IUSER_computername در سرور ایجاد می کند که در قسمت computername در واقع سرور نام این کاربر را بر اساس نام سروری که بر روی آن نصب شده است نامگذاری می کند ، به محض درخواست از سرور در قالب Anonymous Authentication این سرور است که بصورت خودکار نام کاربری و رمز عبور کاربر IUSER را برای ورود به سرور انتخاب می کند . اگر شما هر دو سیستم احراز هویت Anonymous Authentication و Basic Authentication را در FTP فعال کنید ، وب سرور IIS ابتدا تلاش می کند که توسط سیستم Anonymous کاربر را احراز هویت کند. برای فعال سازی روش احراز هویت Anonymous به شکل زیر عمل کنید :


  1. کنسول IIS Manager را باز کنید و بر روی FTP Site مورد نظر کلیک کنید.
  2. در قسمت روبرو بر روی FTP Authentication دابل کلیک کرده و وارد تنظیمات آن شوید.
  3. کافیست قسمت Anonymous Authentication را انتخاب و آنرا Enable کنید .
  4. توجه کنید که اگر برای پوشه های موجود در FTP دسترسی برای کاربر IUSER را در قسمت NTFS Permissions تعیین نکنید قادر به دسترسی به محتویات بصورت Anonymous نخواهید بود.

آموزش فعال سازی Basic FTP Authentication در IIS

اگر برای امن کردن منابع اطلاعاتی خود از FTP Basic Authentication استفاده کنید ، به محض ارسال درخواست کاربر برای دسترسی به منابع ، از وی یک نام کاربری و رمز عبور معتبر در سیستم عامل سرور ویندوز سئوال خواهد شد . در صورتیکه نام کاربری وارد شده صحیح نباشد سرور یک پیام خطا صادر خواهد کرد.

توجه کنید که FTP Basic Authentication با اینکه از کاربر در خصوص نام کاربری و رمز عبور درخواست می کند اما این نام کاربری و رمز عبور را بصورت رمزنگاری نشده یا به اصطلاح Plain Text رد و بدل می کند بنابراین بسادگی قابل شنود کردن در شبکه می باشد و همین دلیل باعث ضعیف بودن این سیستم احراز هویت می باشد هر چند که از anonymous امنیت بهتری دارد. برای فعال سازی Basic FTP Authentication به روش زیر عمل کنید :

  1. کنسول IIS Manager را باز کنید و بر روی FTP Site مورد نظر کلیک کنید.
  2. در قسمت روبرو بر روی FTP Authentication دابل کلیک کرده و وارد تنظیمات آن شوید.
  3. قسمت Basic Authentication را انتخاب و آنرا Enable کنید .
  4. قسمت Anonymous Authentication را Disable کنید.
  5. در قسمت Edit شما می توانید محل دریافت اطلاعات مربوط به Windows Users Names را مشخص کنید.
  6. توجه کنید که سطوح دسترسی مناسب در NTFS Permission ها را حتما به درستی تعیین کنید.

آموزش تنظیمات Authorization در FTP در IIS

عملیات Authorization پس از عملیات Authentication انجام می شود و در واقع قوانین استفاده از منابع اطلاعاتی را مشخص می کند . شما با استفاده از FTP Authorization Rules می توانید در قالب ارائه امکان Allow یا Deny منابع دسترسی یافته توسط کاربران خود را کنترل کنید .

تنظیمات Authorization در FTP سرور

این Rule ها از همان قوانین Rule های فایروال تبعیت می کنند ، هر کدام از Rule ها که در لیست بالاتر از همه قرار داشته باشد نسبت به سایر Rule ها دارای سطح اولویت بالاتری است و همچنین Rule ای که نمایانگر عمل Deny باشد قطعا بر Rule های Allow برتری و اولویت دارد.

همچنین شما با استفاده از صفحه Authorization می توانید اطلاعات مربوط به Rule ها اعم از Mode ، Users ، Roles و همچنین Permission های آنها را مشاهده کنید . برای اینکه درک بهتری از موضوع Rule ها داشته باشید می توانید با یک مثال جلو برویم

فرض کنید من به عنوان مدیر یک FTP سرور می خواهم به تمامی کاربران حاضر در شرکت به غیر از کاربر UNITY دسترسی به سرور FTP و منابع موجود در آن را بدهم ، برای اینکار ابتدا به همه اعضای گروه Domain Users دسترسی Allow با Permission فرضی Read و Write می دهیم و این اولین Rule من خواهد بود .

از طرفی دیگر برای کاربر UNITY یک Rule دیگر به شکل Deny با Permission فرضی Read و Write ایجاد می کنم . با اینکار همگی کاربران به غیر از کاربر UNITY قادر به دسترسی به اطلاعات موجود در FTP سرور خواهد بود. شما در صفحه باز شده در IIS Manager به قسمت های مختلفی بر می خورید که در قسمت Actions قرار دارند . برای اینکه درک بهتری از این اصطلاحات و کاری که انجام می دهند داشته باشید در ادامه کلیه این قسمت ها را برای شما تشریح خواهم کرد.


  • Mode : نوع Rule ایجاد شده را نمایش می دهد ، مقدار یا Value آن می تواند Allow یا Deny باشد ، مقادیر Value مربوط به قسمت Mode نمایانگر این است که این Rule ایجاد شده برای اجازه دسترسی دادن به منابع FTP سرور مورد استفاده قرار می گیرد یا برای جلوگیری کردن از دسترسی به منابع FTP سرور استفاده می شود. به این نکته توجه داشته باشید که اگر یک کاربر یا Role یا گروه بصورت خاص با استفاده از یک Rule از دسترسی به منابعی منع شده است ، نمی توان با استفاده از یک Rule دیگر که دسترسی را اجازه یا Allow کرده است این محدودیت را برداشت مگر اینکه بصورت دستی Rule ای که دسترسی را اجازه می دهد را در بالای لیست اولویت های دسترسی قرار دهید.
  • Users : نمایانگر نام های کاربری یا گروه های کاربری هستند که Rule ها بر روی آنها اعمال می شوند.
  • Roles : نمایانگر Microsoft Windows Rile یا .NET Role هایی است که Rule به آنها اعمال شده است ، مثلا نقش Administrator .
  • Permissions : نمایانگر سطح دسترسی تعیین شده برای کاربر یا کاربران مورد نظر بر روی FTP سرور است .
  • Add Allow Rule : با استفاده از این نوع Rule شما می توانید به کاربران دسترسی لازم را بدهید.
  • Add Deny Rule : با استفاده از این نوع Rule شما می توانید از کاربران دسترسی های داده شده را بگیرید.
  • Edit : با استفاده از این گزینه شما امکان ویرایش Rule انتخاب شده را خواهید داشت.
  • Remove : با استفاده از این گزینه می توانید Rule انتخاب شده را حذف کنید.


برای اینکه FTP سرور شما به درستی کار کند شما بایستی Rule مورد نظر خود را به ترتیب زیر ایجاد کنید :

  1. در همان صفحه FTP Authorization گزینه Add Allow Rule را انتخاب کنید.
  2. All Users را انتخاب و از قسمت Permissions گزینه Read و Write را انتخاب کنید.
  3. در حال حاضر کلیه کاربران می توانند به منابع موجود در FTP سرور شما دسترسی خواندنی نوشتی داشته باشند.


یکی از مواردی که در همه قسمت های IIS مشاهده می کنید به ویژه قسمت Authentication و Authorization انتخاب کاربران یا گروه هایی است که می خواهیم برای آنها سطوح دسترسی یا هر کار دیگری را انجام دهیم ، اما با توجه به اینکه شیوه اضافه کردن کاربران در IIS تا حدود زیادی با شیوه اضافه کردن کاربران در ویندوز متفاوت است ممکن است کمی در خصوص انتخاب نوع کاربر اشتباه کنیم ، برای اینکه اینگونه ابهامات پیش نیاید می توانید از قسمت زیر که کلیه این اصطلاحات در آن توضیح داده شدند استفاده کنید :

  • All Users : با انتخاب این گزینه شما می توانید منابع اطلاعاتی را برای هم کاربران گروه authenticated users و هم anonymous users مدیریت کنید و به نوعی انتخاب این گزینه انتخاب این دو گروه بصورت همزمان است. توجه کنید که هیچوقت rule ای برای این گروه به عنوان Deny ایجاد نکنید ، مخصوصا زمانیکه که rule شما دارای اولویت در لیست است ، با اینکار تمامی Rule های دیگر بلا استفاده خواهند شد.
  • All Anonymous Users : با انتخاب این گزینه دسترسی برای کاربرانی که دارای نام کاربری و رمز عبور نیستند را تعیین می کنیم.
  • Specific Roles or User Groups : با استفاده از این گزینه شما می توانید دسترسی به منابع را برای صرفا یک گروه یا کاربر خاص محدود کنید ، کاربرانی که دارای نام کاربری و رمز عبور معتبر در Windows باشند.
  • Specified Users : با انتخاب این گزینه شما می توانید یک کاربر خاص را انتخاب کنید و به آن دسترسی های لارم را بدهید.


آموزش تنظیمات User Isolation در FTP در IIS

بصورت پیشفرض زمانیکه یک کاربر وارد یک FTP سایت می شود ، می تواند محتویات ریشه و تمامی کاربرای که در FTP سایت دارای پوشه مخصوص به خود هستند را مشاهده کند .

تنظیمات User Isolation در FTP سرور

با استفاده از قابلیت FTP User Isolation یا ایزوله کردن کاربران شما می توانید کاری کنید که کاربر به محض اینکه نام کاربری و رمز عبور خود را وارد کرد صرفا بتواند پوشه تعیین شده با نام کاربری خود را مشاهده کند و پوشه های سایر کاربران را مشاهده نکند .

این راهکار را بیشتر ISP ها برای اینکه کاربران بتوانند فایل های خود را در آن آپلود کنند استفاده می کردند تا از دسترسی و مشاهده پوشه سایر کاربران توسط یک کاربر جلوگیری کنند. همانطور که اشاره شد با استفاده از این روش کاربر با توجه به نام کاربری وارد کرده در کادر ورود نام کاربری و رمز عبور ، صرفا به پوشه به نام کاربری خود هدایت خواهد شد. در ادامه مواردی که می توانید در این قسمت تنظیم کنید را بصورت خلاصه توضیح می دهیم :


  • Do not isolate users. Start users in: FTP root directory : با انتخاب این گزینه که بصورت پیشفرض انتخاب شده است ، شما به FTP سرور می گویید که نمی خواهید کاربران را ایزوله کنید . در این حالت تمامی کاربران بعد از login کردن به FTP سرور Session های خود را در پوشه ریشه یا root directory ای باز خواهند کرد و می توانند محتویات آن را مشاهده کنند . توجه کنید که همیشه سطوح دسترسی یا همان permission ها را به گونه ای تعیین کنید که حتی در صورت وارد شدن کاربر به پوشه ریشه وی نتواند محتویات پوشه سایر کاربران را مشاهده کند .
  • Do not isolate users. Start users in: User name directory : با انتخاب این گزینه مجددا شما به FTP سرور می گویید که نمی خواهید کاربران خود را ایزوله کنید ، اما تمامی session های FTP ایجاد شده بر روی سرور با توجه به نام کاربری وارد شده بر روی سرور به پوشه ای هدایت می شود که دارای نام کاربری متناظر با کاربر وارد شده می باشد ، در صورتیکه چنین پوشه ای وجود نداشته باشد ، FTP Session بر روی پوشه ریشه یا Root Directory ایجاد می شود . در صورتیکه می خواهید کاربرانی که بصورت anonymous به سرور وارد می شوند به یک پوشه خاص هدایت شوند و نقطه ورود آنها به سرور مشخص باشد ، بر روی سرور و در قسمت root directory یک پوشه به نام default ایجاد کنید . توجه کنید که همیشه سطوح دسترسی یا همان permission ها را به گونه ای تعیین کنید که حتی در صورت وارد شدن کاربر به پوشه ریشه وی نتواند محتویات پوشه سایر کاربران را مشاهده کند .
  • ( Isolate users. Restrict users to the following directory: User name directory (disable global virtual directories: با انتخاب این گزینه شما به FTP سرور می گویید که کاربرانی که به سرور login می کنند را حتما ایزوله کند و صرفا به آنها اجازه دسترسی به پوشه یا virtual directory را بدهد که با نام کاربری وارد شده توسط آنها یکسان است . با اینکار کاربر صرفا به به دسترسی به همان پوشه همنام با نام کاربری خود محدود می شود و نمی تواند در پوشه مورد نظر به سمت ریشه یا root بالا برود یا ساختار درختی آن را مشاهده کند. اگر بخواهیم برای هر یک از FTP Account های خود یک home directory در سرور داشته باشم ، ابتدا بایستی در ریشه FTP سرور یک physical یا virtual directory به شکلی که نام کاربری و نام دامین برای کاربران دامین به شکل domainname\unity باشد و برای کاربران محلی نیز به شکل localuser ساخته شود .سپس این ساختار را برای تمامی کاربرانی که قرار است از FTP سرور استفاده کنند بایستی ایجاد کنیم تا هر یک بعد از ورود بتوانند وارد پوشه مخصوص خود شوند.
  • (Isolate users. Restrict users to the following directory: User name physical directory (enable global virtual directories : با انتخاب این گزینه شما به FTP سرور می گویید که کاربران را با توجه به نام کاربری وارد شده بر روی سرور به همان پوشه فیزیکی هدایت کند که با نام کاربری مشابه شخص وارد شده در ریشه وجود دارد. تفاوت این گزینه با گزینه قبلی در حالت استفاده از پوشه ها به جای virtual directory ها می باشد . با اینکار کاربر قادر به مشاهده محتویات پوشه ریشه نخواهد بود. قوانین نامگذاری پوشه ها مانند همان قوانینی است که در قسمت قبلی ذکر شد.
  • Isolate users. Restrict users to the following directory: FTP home directory configured in Active Directory : با انتخاب این گزینه کاربران ضمن اینکه ایزوله خواهند شد به محض ورود به سرور به پوشه خانگی یا Home Directory هدایت خواهند شد که برای آنها در اکتیودایرکتوری ایجاد شده است . این کار صرفا زمانی انجام می شود که شما احراز هویت را با استفاده از کاربرانی که در ساختار اکتیودایرکتوری ایجاد شده اند تعیین کنید . زمانیکه که شیء user در اکتیودایرکتوری قرار دارد ، خاصیت های FTPRoot و FTPDir از همدیگر تجزیه می شوند تا مسیر پوشه خانگی کاربر را ایجاد کنند . اگر سرویس FTP به درستی بتواند به مسیر تعیین شده دسترسی پیدا کند ، پوشه خانگی کاربر به عنوان پوشه ریشه برای کاربر در نظر گرفته می شود .
  • Custom : شما با استفاده از این گزینه می توانید کاربران را به نحوه دلخواهی که خود می خواهید ایزوله سازی کنید. نکته مهم در اینجاست که این یک نوع تنظیم پیشرفته است و صرفا زمانی امکانذیر است که شما تنظیمات مربوط به FTP سرور را در فایل AppliationHost.config تغییر و دستکاری کنید ، بنابراین اگر دانش لازم در این خصوص را ندارید پیشنهاد می کنم به سمت چنین ساختار ایزوله سازی نیز نروید.


آموزش تنظیمات پیام دلخواه ورود به FTP سایت

شاید بخواهید برای کاربرانی که با موفقیت به سایت FTP شما وارد می شوند یک پیام دلخواه نمایش بدهید . با استفاده از این گزینه شما می توانید به محض وارد شدن موفقیت آمیز کاربران به سایت FTP برای آنها یک پیام دلخواه را نمایش دهید .

تنظیمات پیام دلخواه برای FTP سرور
تنظیمات پیام دلخواه در FTP سرور

این پیام شامل عنوان ، پیام خوش آمد و پیام خروج می شود ، در ادامه می توانید جزئیان مربوط به این قسمت را مشاهده کنید :

  • Suppress default banner : با انتخاب این گزینه FTP سرور بصورت خودکار بنر پیشفرض FTP را نمایش خواهد داد. در صورت فعال بودن این گزینه بنر پیشفرض نمایش داده می شود در غیر اینصورت بنر پیشفرض نمایش داده نمی شود. توجه کنید که در صورتیکه شما default banner را فعال کرده باشید و پیامی برای آن در نظر نگرفته باشید ، FTP سرور بصورت خودکار یک بنر خالی به کاربر به عنوان بنر پیشفرض بعد از لاگین به سرور نمایش خوهد داد.
  • Support user variables in messages : شما می توانید پیام خود را با توجه به نام کاربری وارد شده توسط کاربر به نام شخص وارد شده نمایش دهید . اینکار با استفاده از یک سری متغیرها در پیام ها تعیین می شود که برای مثال از ساختار %username% در آنها استفاده می شود . صرفا در زمانیکه شما این گزینه را فعال کرده باشید می توانید از اینگونه متغیرها استفاده کنید ، در غیر اینصورت دستورات شما همانگونه که نوشته اید نمایش داده خواهند شد و FTP درکی از متغیرها نخواهد داشت.
  • Show detailed messages for local requests : با انتخاب این گزینه در صورت بروز خطا در برقراری ارتباط با FTP سایت یا موارد مشابهی که تولید خطا می کنند ، خطا و جزئیات آن بصورت کامل برای کاربرانی که بصورت محلی یا Local از FTP سرور استفاده می کنند نمایش داده می شود . اینکار معمولا برای انجام عملیات رفع اشکال از سرور صورت می گیرد و همانطور که از نامش پیداست صرفا برای کاربرانی که بصورت محلی و بر روی خود سرور وارد FTP می شوند قابل مشاهده می باشد و کاربران ریموت نمی توانند این جزئیات خطا را مشاهده کنند.
  • Banner : این قسمت سرفصل پیامی را که به محض ورود کاربر به FTP سایت مشاهده می کند را نمایش می دهد .توجه کنید که این پیام بصورت پیشفرض خالی است ، همانطور که اشاره شد اگر default banner فعال باشد اما برای آن پیامی در نظر نگرفته باشید ، FTP سرور یک Banner خالی به کاربر نمایش خواهد داد . در شکل بالا همانطور که مشاهده می کنید یک پیام برای این قسمت وارد شده است ، توجه کنید که معمولا FTP سرور بصورت پیشفرض از زبان فارسی به درستی پشتیبانی نمی کند و به همین دلیل در نمایش پیام های فارسی دچار مشکل خواهید شد.
  • Welcome : در این قسمت شما متن پیام خوش آمد گویی که می خواهید کاربران بعد از ورود به FTP سایت مشاهده کنند را می توانید تعیین کنید . بصورت پیشفرض این متن پیام خوش آمد گویی خالی است.
  • Exit : در این قسمت شما پیامی را که در هنگام خروج یا Logoff از FTP سایت به کاربر نمایش داده می شود را تعیین می کنید .که بصورت پیشفرض خالی می باشد.
  • Maximum Connections : این متن پیامی است که FTP سرور زمانی که به حداکثر تعداد Connection ها خود رسیده است و نمی تواند در خواست های اتصال بیشتری را پاسخگو باشد ارسال می کند ، بصورت پیشفرض این گزینه خالی است .


آموزش تنظیمات FTP Directory Browsing در IIS

بر خلاف وب سایت ها که می توانند بدون استفاده از Directory Browsing به فعالیت خود ادامه دهند ، ساختار اصلی کارکرد FTP بر اساس Directory Browsing می باشد و در واقع به همین دلیل است که به FTP سرور می توان فایل سرور نیز گفت .

تنظیمات Directory Browsing در FTP سرور

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

  • Directory Listing Style : با استفاده از این گزینه شما فالب نمایشی محتویات FTP سرور را برای سرور تعیین می کنید ، مورادی که در این قسمت وجود دارند به صورت کلی به دو شکل می باشند ، اولی که با ساختار نمایش سنتی مایکروسافت یا MS-DOS است که حالت پیشفرض می باشد و دومین حالت استفاده از ساختار نمایشی سیستم عامل UNIX است . بصورت پیشفرض ساختار نمایشی پوشه ها به شکل MS-DOS می باشد.


  • Virtual Directories : اگر در ساختار FTP سرور خود از Virtual Directory ها استفاده می کنید ، با استفاده از این گزینه به سرور می گوید که این پوشه های مجازی را نمایش بدهد یا خیر ، در صورتیکه این گزینه فعال شده باشد Virtual Directory ها در سرور نمایش داده می شوند ، در غیر اینصورت به حالت مخفی باقی خواهند ماند.


  • Available Bytes : در این قسمت شما می توانید به سرور بگویید که فضای باقی مانده از دیسک جهت نگهداری فایل ها را نمایش دهد ، این فضا در واقع همان میزان فضای دیسک می باشد که خالی است ، توجه کنید که در صورتیکه از قابلیت disk quota برای محدود کردن فضای دیسک برای کاربران استفاده کرده اید ، این گزینه نیز بر حسب همان ساختار محاسبه می شود .


  • Four Digit Years : این قابلیت به شما شیوه نمایش تاریخ آخرین ویرایش یا دستکاری فایل های موجود در فایل سرور FTP را مشخص می کند ، در صورت فعال شدن سال را بصورت 4 قسمتی نمایش می دهد و در صورت فعال نشدن سال بصورت دو کاراکتری نمایش داده می شود .


آموزش تنظیمات FTP Firewall Support در IIS

شما زمانی از قابلیت FTP Firewall Support استفاده می کنید که می خواهید تنظیمات مربوط به ارتباطات Passive که از طرف FTP Client ها به سمت FTP سرور در زمانیکه FTP سرور در پشت یک فایروال قرار دارد ارسال می شود را تغییر دهید.

تنظیمات Firewall در FTP سرور

توجه کنید که بعد از انجام این تنظیمات شما صرفا رفتارهای FTP سرور را کنترل کرده اید و در نهایت بایستی تنظیمات مربوط به فایروال برای اینکه از خود ارتباطات FTP را عبور دهد را بایستی بصورت جداگانه انجام دهید . در ادامه شما مواردی را که می توانید در این صفحه انجام دهید را مشاهده می کنید :

  • Data Channel Port Range : در اینجا محدوده پورت های ارتباطات passive برای استفاده در کانال های داده FTP را مشخص می کنید. محدوده پورت های معتبر برای استفاده در این قسمت معمولا بین 1025 تا 65535 می باشد ، توجه کنید که شماره پورت های 1 تا 1024 برای استفاده سرویس ها استفاده می شوند و بهتر است از این محدوده استفاده نشود .


  • External IP Address of Firewall : در اینجا شما می توانید آدرس IP نسخه 4 خارجی که در اینترنت برای FTP سرور استفاده می شود را برای سرور داخلی مشخص کنید . توجه کنید که این تنظیم خاص برای زمانی است که FTP سرور شما در پشت یک فایروال قرار گرفته است و شم می خواهید از SSL برای رمزنگاری اطلاعات FTP استفاده کنید ، همچنین زمانی که فایروال شما آدرس های IP را که در بسته های FTP رد و بدل شده بین FTP سرور و FTP کلاینت قرار دارند را دستکاری نمی کند ، از این قابلیت بایستی استفاده کنید.


آموزش تنظیمات FTP IPv4 Address and Domain Restriction در IIS

با استفاده از این قابلیت شما می توانید برای یک یا یک سری از آدرس های IP مشخص محدودیت دسترسی برای استفاده از منابع سرور را ایجاد کنید ، این محدودیت های دسترسی می تواند به غیر از آدرس IP به وسیله نام دامین هم ایجاد شود .

تنظیمات IP و Domain  در FTP سرور

قبل از اینکه شما بتوانید محدودیت های دسترسی به وسیله نام دامین را ایجاد کنید ابتدا بایستی از طریق گزینه Edit این امکان را فعال کنید. در ادامه تمامی مواردی را که می توانید در این قسمت تنظیم کنید را مشاهده خواهید کرد.

  • Mode : این گزینه نوع Rule ایجاد شده را نمایش می دهد ، مقدار یا Value متناظر با آن می تواند Allow یا Deny باشد . طبیعی است که Rule های Allow برای اجازه دادن برای دسترسی و همچنین Deny برای جلوگیری از دسترسی به منابع می باشد.
  • Requestor : این گزینه نمایانگر آدرس های IP خاص ، محدوده ای از آدرس های IP یا نام دامین هایی است که در قسمت های Add Allow Restriction Rule و Add Deny Restriction Rule ایجاد شده است . شما می توانید بصورت تک تک هر یک از اینها را در این قسمت به حالت allow یا deny در بیاورید .
  • Add Allow Entry : با استفاده از این گزینه می توانید برای آدرس ، آدرسها و همچنین نام دامین ها اجازه دسترسی تعیین کنید.
  • Add Deny Entry : با استفاده از این گزینه می توانید برای آدرس ، آدرسها و همچنین نام دامین ها محدودیت دسترسی تعیین کنید.
  • Remove : با استفاده از این گزینه Rule انتخاب شده را می توانید حذف کنید.
  • Edit Feature Settings : با استفاده از این گزینه می توانید تنظیماتی را انجام دهید که به کلیه تنظیمات و Rule های ایجاد شده اعمال شود.
  • Revert To Parent : انتخاب این گزینه باعث می شود که تنظیمات و امکانات موجود از تنظیمات سرور یا سایت بالاسری به ارث برده شوند و بعضا به حالت پیشفرض در بیایند. با اینکار تمامی تنظیمات محلی انجام شده که شامل آیتم های موجود در لیست و تمامی Rule های موجود می باشد حذف خواهند شد. توجه کنید که این آیتم فقط در تنظیمات سایت وجود دارد و در تنظیمات سرور وجود ندارد ، زیرا سرور از جایی به ارث نمی برد .
  • View Ordered List : لیست Rule های موجود را بر اساس تنظیمات انجام شده لیست می کند و نمایش می دهد. زمانیکه شما این قالب نمایش لیست را انتخاب می کنید ، شما صرفا می توانید آیتم ها را در لیست بالا و پایین ببرید ، سایر تنظیماتی که در قسمت Actions وجود دارد در این حالت به شما نمایش داده نخواهد شد.
  • Move Up : این گزینه برای بالا بردن آیتم انتخاب شده در لیست rule ها می باشد .این عمل صرفا زمانی امکانپذیر است که شما در قالب ordered list قوانین را مرتب کرده باشید .
  • Move Down : این گزینه برای پایین بردن آیتم انتخاب شده در لیست rule ها می باشد .این عمل صرفا زمانی امکانپذیر است که شما در قالب ordered list قوانین را مرتب کرده باشید .
  • View Unordered List : لیست قوانین را در قالب مرتب نشده به شما نمایش می دهد . با انتخاب این گزینه شما می توانید لیست مورد نظر را با استفاده از گزینه هایی که در قسمت Actions وجود دارند ویرایش کنید.


آموزش تنظیمات FTP SSL Settings در IIS

همانطور که در ابتدای قسمت قبلی اشاره شد ، FTP بصورت پیشفرض یک پروتکل ناایمن است و اطلاعات را رمز نگاری نمی کند ، در همان قسمت نیز عنوان کردیم که ما می توانیم با استفاده از پروتکل SSL یا Secure Socket Layer این اطلاعات را رمزنگاری کنیم .

تنظیمات SSL برای FTP
تنظیمات SSL برای FTP



 با استفاده از تنظیماتی که در این قسمت مشاهده می کنید شما می توانید هم کانال کنترل و هم کانال داده های FTP را رمز نگاری کنید و مطمئن باشید که اطلاعاتی که بین سرور و کلاینت رد و بدل می شود بصورت رمزنگاری شده منتقل می شود . مواردی را که می توانید در اینجا انجام دهید چه در محیط شبکه عمومی اینترنت و چه در شبکه داخلی قابل استفاده می باشد . تنظیماتی که در این صفحه مشاهده می کنید به شکل زیر می باشند :

  • SSL Certificate : در اینجا شما certificate ای که بایستی برای استفاده در قالب SSL وجود داشته باشد را انتخاب می کنید. توجه کنید که انتخاب یک SSL Certificate پروتکل SSL را صرفا برای یک FTP سایت یا یک سرور FTP ایجاد می کند . برای غیر فعال کردن SSL نیز کافی است از لیست باز شوی موجود گزینه Not Selected را انتخاب کنید.
  • View : مشخصات ظاهری certificate انتخاب شده را به شما نمایش می دهد.


  • Allow SSL Connections : در صورتیکه یک SSL Certificate انتخاب کرده باشید ، با انتخاب این گزینه به سرور اجازه می دهید که هر دو کانال داده و کنترل FTP را رمزنگاری کند و از ارتباطات SSL بین کلاینت و سرور پشتیبانی کند. توجه کنید که در صورت انتخاب این گزینه ، استفاده از رمزنگاری توسط SSL بصورت اختیاری می باشد و کلاینت هایی که SSL ندارند می توانند بدون آن نیز از منابع FTP استفاده کنند.


  • Require SSL Connections : در صورتیکه یک SSL Certificate انتخاب کرده باشید ، با انتخاب این گزینه به سرور دستور می دهید که بایستی کلیه اطلاعات موجود در کانال داده و کانال کنترل FTP بصورت رمزنگاری شده بین کلاینت و سرور منتقل شوند. توجه کنید که در اینجا اجبار است نه اختیار ، در صورت انتخاب این گزینه طبیعی است که به دلیل فرآیند رمزنگاری موجود بر روی سرور و کلاینت ارتباطات تا حدودی کند شده و پردازنده نیز بیشتر درگیر انجام فرآیند رمزنگاری داده ها خواهد شد.


  • Custom : با انتخاب این گزینه شما فرآیند رمزنگاری کانال کنترل و کانال داده FTP با استفاده از Certificate انتخاب شده را بصورت دلخواه تعیین می کنید . توجه کنید که بعد از اینکه شما Custom را انتخاب کردید ، دکمه Advanced فعال خواهد شد که با استفاده از آن می توانید تنظیمات پیشرفته SSL را برای اینکار انجام دهید.


  • Use 128-bit encryption for SSL connections : با انتخاب این گزینه شما زمینه را برای رمزنگاری قویتر اطلاعات ایجاد می کنید. با انتخاب این گزینه شما از یک SSL-Certificate با تعداد 128 بیت رمزنگاری استفاده می کنید که بین کلاینت های شما و سرور می تواند رمزنگاری را انجام دهد ، توجه کنید که 128-bit SSL برای FTP رمزنگاری قوی محسوب می شود با توجه به اینکه بصورت پیشفرض رمزنگاری SSL آن 40 بیتی است . طول کلید 128 بیتی برای SSL قطعا طول کلید بسیار کمی برای شکستن محسوب می شود و همانطور که در ابتدای قسمت نیز اشاره کردیم تا حد امکان بر روی امنیت FTP حسابی باز نکنید زیرا این پروتکل بصورت ذاتی امنیت را در خود ندیده است .

خلاصه

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


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، بنیانگذار انجمن تخصصی فناوری اطلاعات ایران و مجموعه توسینسو ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 80 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر و ناظر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات