آموزش وب سرور IIS و کانفیگ سرور هاست ویندوز
با نام و یاد خدا سری مجموعه آموزشی وب سرور IIS را به روشی نوین در قالب یک سری مقاله قدم به قدم و تصویری را شروع می کنیم . در اولین قسمت از این سری مقالات شما را ابتدا با معماری کلی وب سرور IIS آشنا می کنیم و روش هایی که این سرور به درخواست ها پاسخ می دهد و شیوه پردازش درخواست ها را بررسی خواهیم کرد ، در ادامه به معرفی ابزارهای مختلف مدیریتی این سرور خواهیم پرداخت و کمی هم در خصوص تفاوت های نسخه ۷ و ۷٫۵ وب سرور IIS با نسخه قبلی که IIS 6.0 صبحت خواهیم کرد . هدف اصلی این سری مقالات آشنایی شما دوستان با ساختار IIS 7 و IIS 7.5 است و امیدوار هستیم در انتهای این سری مقالات به این هدف برسیم.
معرفی ساختار Kernel Mode Listener
بصورت کلی ساختار سیستم عامل ها به دو لایه تقسیم می شود ، لایه هسته یا Kernel Mode و لایه کاربر یا User Mode ، لایه کرنل یا Kernel Mode نزدیکترین لایه به سیستم عامل است و سریعترین محل برای اجرای نرم افزارها و دستورات محسوب می شود اما هر نرم افزاری که در این لایه اجرا شود به منابع سیستمی حساسی بصورت مستقیم دسترسی خواهد داشت و همین امر موجب می شود که در صورت بروز هرگونه مشکلی در این لایه برای هر نرم افزاری که در آن کار می کند کل سیستم عامل دچار مشکل می شود و معمولا در چنین مراحلی است که شما خطاهای صفحه آبی یا Blue Screen را مشاهده می کنید . در این لایه نرم افزارهایی مثل درایورهای سیستم نصب و کار می کنند تا بتوانند در سریعترین زمان ممکن اجرا شوند . همانطور که دیدید استفاده از این لایه برای نرم افزارهای کاربردی در دو بعد قابل بررسی بود ، بعد اول سرعت اجرا و بعد دوم خطاهای احتمالی است . این لایه را در ذهن داشته باشید تا لایه بعدی را معرفی کنیم ، در لایه کاربر یا User Mode نرم افزارها با سرعت کمترو البته در محیط محدود شده و محافظت شده ای از سیستم عامل اجرا می شوند ، آنها در واقع دستورات مورد نیاز خود را ابتدا تجزیه و تحلیل کرده و در صورت امکان در همان لایه کاربر و در غیر اینصورت با اعمال محدودیت های خاص به لایه کرنل برای اجرا می فرستند . در صورت بروز هر مشکلی در این لایه ، سیستم عامل بصورت کلی دچار مشکل نشده و صرفا نرم افزار مورد نظر دچار مشکل می شود و با پردازش های دیگر سیستم کاری ندارد.
برای مثال همانطور که اشاره شد درایورهای سیستم عامل در لایه کرنل فعالیت می کنند و در صورت بروز مشکل کل سیستم دچار مشکل شده و بعضا خطاهای صفحه آبی یا همان Blue Screen صادر می شوند ، اما نرم افزارهایی مثل آفیس ورد یا Excel در لایه کاربری فعالیت می کنند و در صورت بروز هرگونه مشکل در این لایه صرفا باعث بروز خطا در همان نرم افزار خواهد شد و سیستم عامل تحت تاثیر این مشکل قرار نخواهد گرفت ، قطعا در ویندوز یا چنین خطاهایی مواجه شده اید که سیستم به حالت Not Responding قرار میگیرد و نمی تواند آن نرم افزار خاص را اجرا کند در صورتیکه کارهای دیگر سیستم به درستی انجام می شود.
خوب در بحث وب سرور تصور کنید که یکی از وب سایت هایی که در IIS وجود دارد و در لایه کرنل فعالیت می کند به مشکل بخورد ، چه اتفاقی ممکن اسات بیافتد ؟ بله تمامی وب سایت های دیگر هم دچار مشکل خواهند شد و به خاطر وجود یک باگ ضعیف در کدهای یک نرم افزار کل سیستم دچار مشکل می شود . برای حل این مشکل در وب سرور IIS و بصورت خاص از نسخه ۶ آن که در ویندوز سرور ۲۰۰۳ معرفی شد ساختار به نام Http Listener به سیستم عامل اضافه شد . در این حالت هیچگونه درخواستی و عملیات پردازشی در لایه کرنل سیستم عامل انجام نمی شود ، در این حالت سرور ابتدا درخواست ها را در لایه کرنل و توسط سرویسی به نام Http Listener دریافت کرده و آنها را تحلیل میکند ، منظور از تحلیل این است که وب سرور IIS توانایی میزبانی بیش از چندین وب سایت را دارد و بر همین اساس درخواست هایی که از طریق وب دریافت می کند متفاوت می باشد و بایستی درخواست مورد نظر دقیقا به وب سایت مورد نظر ارجاع داده شود ، در صورت درخواست پردازش خاص یا ساده تر بگوییم وب سایت خاص ، این سرویس که در لایه کرنل فعال است درخواست ها را بصورت تفکیک شده بر اساس هر درخواست به لایه کاربر یا User Mode برای اجرا ارسال می کند و در اینجاست که بر اساس هر درخواست یک پردازش یا Process در CPU ایجاد می شود.
حال اگر برای هر یک از این درخواست ها مشکلی پیش بیاید براحتی همان درخواست را می توانید بدون ایجاد مشکل برای سایر درخواست ها از صف پردازش خارج کنید و وب سرور شما به مشکل نخواهد خورد . با این روش ضمن اینکه امنیت سیستم عامل بالا می رود امکان تفیکیک و اولویت بندی پردازش ها نیز ایجاد خواهد شد. با توجه به اینکه در این مقاله بصورت ویژه به مبحث وب سرور اشاره می کنیم توجه کنید که پس از اینکه Http Listener درخواست را به لایه User Mode انتقال داد به ازای هر درخواست یک پردازش به نام wp.exe که مخفف Worker Process است ایجاد خواهد کرد. شما براحتی می توانید از طریق Task Manager این پردازش های ایجاد شده توسط Http Listener را مشاهده کنید . جالب اینجاست بدانید که Http Listener به دلیل اینکه می تواند وجود یا عدم وجود صفحات درخواستی و یا نوع درخواست هایی وارد می شود را برررسی کند می تواند در همان لایه کرنل تعیین کند که درخواست وارده درست یا معتبر است یا حمله به وب سرور است و در عین حال در همان لایه این درخواست های غیرمعتبر را حذف و رد می کند. توجه کنید که Http Listener به هیچ عنوان عمل پردازشی در لایه Kernel Mode انجام نمی دهد .
بررسی ساختار ماژولار IIS 7 و IIS 7.5
امروزه امنیت در وب سرورها یکی از مهمترین قسمت های زندگی هر ITMAN شده است . اگر با وب سرورهای قدیمی تر مایکروسافت کار کرده باشید حتما به خاطر دارید که در هنگام نصب این وب سرور شما می توانستید تا حدودی تعیین کنید که چه امکاناتی به همراه وب سرور بر روی آن نصب شود . هرچه به عقب تر برگردیم این ساختار تعیین امکانات نصب برای وب سرورها کمتر می شد تا جاییکه وقتی شما می خواستید یک وب سرور را نصب کنید به ناچار مجبور بودید که کلیه امکانات را به یکباره نصب کنید و قادر به تفکیک امکانات نصب نبودید . اما چه اهمیتی دارد که شما بتوانید برای وب سرور تعیین کنید که چه امکانات یا Feature هایی داشته باشد یا نداشته باشد ؟
در دنیای امنیت اطلاعات و همچنین برنامه نویسی که حتما شما تا حدودی با این مسئله آشنایی دارید ، هر قطعه کد به تنهایی می تواند دارای یک سری باگهای امنیتی باشد که در صورت اجرا می توانند باعث بروز مشکلاتی برای وب سرور شوند و بعضا باعث بروز مشکلات امنیتی بر روی آن شوند. اگر کمی در خصوص سیستم های مدیریت امنیت اطلاعات بدانید متوجه این موضوع می شوید که در جاهایی که یک سازمان دارای یک ریسک است که آن ریسک برای آن سازمان اصلا در حد ضربه زدن و بروز مشکل اساسی در سازمان نیست ، این ریسک منتفی یا نادیده گرفته می شود . خوب همین بحث را در خصوص وب سرور IIS نیز داریم ، اگر قرار نیست ما بر روی سرور خود قابلیت Browse کردن دایرکتوری های سرور را بدهیم بنابراین اصلا این امکان وب سرور را نصب نمی کنیم و ریسک سوء استفاده از آن را به صفر می رسانیم . در نسخه ۷ و ۷٫۶ از وب سرور IIS بر خلاف نسخه های قبلی تمامی موارد و امکانانی که مد نظر یک کاربر است در قالب یک ماژول یا Feature ارائه شده است ، شما می توانید براحتی تعیین کنید که به چه امکاناتی نیاز دارید و صرفا همانها را نصب کنید و بدین ترتیب از بروز مشکلات و تهدیدات ناشی از نصب بیهوده امکانات وب سرور که متاسفانه بر حسب عادت اکثر دوستان در ایران در هنگام نصب سرور همه امکانات آن را نصب می کنند ، جلوگیری خواهید کرد.
برای اینکه درک بهتری از موضوع ماژول های داشته باشید من وارد کنسول گرافیکی IIS در ویندوز سرور ۲۰۰۸ شده ام تا کمی بصورت تصویری با این ماژول ها آشنا شوید ، دقت کنید هنوز ما وارد بحث آموزش این کنسول نشده این و صرفا این قسمت جنبه نمایشی دارد ، در مراحل بعدی از مقالات به صورت جزء به جزء از نصب و انجام تنظیمات تک تک این موارد گذر خواهیم کرد .
اگر با IIS 6.0 کار کرده باشید قطعا به محض باز کردن کنسول IIS 7 متعجب خواهید شد ، این کنسول جدید کاملا با کنسول های قبلی وب سرور IIS متفاوت است و تقریبا می توان گفت متحول شده است . به تصاویر بالا دقت کنید ، تمامی موارد و امکاناتی که برای یک وب سرور مورد نیاز هستند بصورت مجزا در این سرور قرار گرفته اند و این یعنی در صورت عدم نیاز به هر کدام از این سرویس های آنها را غیر فعال می کنیم و در نهایت به امنیت بیشتر و کارایی بیشتر سرویس وب می انجامد . اما امکان جالب دیگری که در این سرویس IIS 7 اضافه شده است این است که شما در هنگام نصب امکانات و Feature ها می توانید تعیین کنید که کنسولی ویژه مدیریت وب سرور های IIS 6.0 نیز به سرور اضافه شود و بدین وسیله می توانید سرورهای IIS 6.0 دیگر را از طریق همین کنسول مدیریت کنید.
در این مقاله قصد آموزش استفاده از این ماژول ها را نداریم بلکه صرفا جهت آشنایی با محیط کاری IIS چند نکته را اشاره کردیم ، استفاده از این ابزارها را می توانید در قسمت های بعدی مقالات بصورت ریز شده مشاهده کنید ، اما بد نیست بدانید که با انتخاب هر وب سایتی که در IIS وجود دارد ماژول ها و امکانات ویژه همان وب سایت به شما نمایش داده می شود ، در تصویر زیر من بر روی صفحه پیشفرض وب سایت IIS کلیک کرده ام که همانطور که مشاهده می کنید ماژول های مرتبط در جلوی آن نمایش داده شده است ، از طرفی برای انجام تنظیمات این ماژول ها سه راه وجود دارد ، اول کلیک کردن بر روی هر کدام از ماژول ها پس از نمایش ، راست کلیک کردن بر روی هر وب سایت و مشاهده مشخصات و در آخر کاملترین مورد استفاده از منوی Action در قسمت سمت راست و بالای کنسول سرور IIS است.
با کلیک کردن بر روی هر وب سایت ماژول های خاص آن در پنل وسط نمایش داده می شوند
با راست کلیک کردن بر روی هر وب سایت می توانید تنظیمات اولیه آن را انجام دهید
با استفاده از پنل Action در قسمت چپ کنسول IIS می توانید تنظیمات پیشرفته وب سایت را انجام دهید
کنسول گرافیکی که به آن اشاره شد یکی از راه های مدیریت وب سرور IIS 7 می باشد . راه دیگر مدیریت وب سرور استفاده از قابلیت هاو اسکریپت های نوشته شده به وسیله خط فرمان PowerShell است . اگر بخواهیم از ابتدا این مسئله را بررسی کنیم بایستی کمی به عقب بر گردیم ، این مسئله بدیهی است که هر مدیر شبکه ای بخواهد برخی از کارهایی که به وی سپرده می شود را بصورت خودکار انجام دهد ، در گذشته برای انجام اینکار از زبان برنامه نویسی VBScript استفاده می شد ، اما با گذشت زمان مایکروسافت استفاده از این زبان را تا حدود زیادی منسوخ کرد و زبان جدیدی یا بهتر بگوییم Shell جدیدی به نام Powershell را ارائه کرد و به مرور این زبان را جایگزین زبان VBSCript در بحث مدیریت سرورها و سرویس ها کرد. PowerShell یک مجموعه اسکریپت از پیش طراحی شده در قالب Template دارد که با استفاده از این اسکریپت های نوشته شده ، شما می توانید بسیاری از فعالیت ها و کارهای روزمره سرویس های خود اعم از IIS را مدیریت کنید ، همانطور که اشاره شد در این مقاله صرفا به معرفی این قابلیت مدیریتی می پردازیم و در صورت امکان در ادامه این سری مقالات بصورت مفصل در خصوص استفاده از PowerShell در مدیریت IIS خواهیم پرداخت ، اما بد نیست تا اینجا که رسیده ایم کمی هم با ظاهر و کارکرد این خط فرمان قدرتمند آشنا شویم ، در ادامه می توانید مراحل ابتدایی استفاده از Powershell برای مدیریت IIS را مشاهده کنید . برای ورود به محیط Powershell کافیست آیکن آبی رنگ کتار دکمه Start را کلیک کنید