وبسرورها و یا حتی سرورهایی که از ویندوز سرور استفاده میکنند، برای ارتباط خود با شبکه و اینترنت از یک ابزار مهم استفاده میکنند. این ابزار همان IIS است که اگر با سرورهای اینترنتی و سرورهای محلی آشنایی داشته باشید تا الان متوجه شدهاید که یکی از موارد پرهیاهو است که بعضا مشکلاتی را ایجاد میکند و کار کردن با آن داستانهای خود را دارد. این مطلب در مورد همین داستانهاست و قرار است با هم ببینیم که IIS چیست و قرار است چه کاری را برای ما انجام دهد. قبل از این کار اجازه دهید کمی در مورد زمینه کاری این برنامه مهم صحبت کنیم و ببینیم که جریان از چه قرار است.
فهرست عناوین
وبسرور چیست؟
همه ما با اینترنت آشنایی داریم و به این موضوع که چیز خوبی است باور داریم. اما این اینترنت خوب و دوستداشتنی ما پهنهای بسیار گستردهتر از آنچه به نظر میرسد دارد. یکی از اصلیترین اجزای اینترنت محلهایی هستند که محتوای اینترنت در آنها ذخیره میشود. هاستها این کار را برای شما انجام میدهند و این ذخیرهسازی انجام میگیرد. فرقی نمیکند که این هاستها از نوع هاست لینوکس، هاست ویندوز و یا هاست ابری باشند. برای فعال بودن و کارکردن آن یک وبسرور نیاز است که آن را کنترل کرده و پاسخ کلاینتهایی که دارند به این هاست درخواست میفرستند و منتظر پاسخ هستند را بدهد.
بهعنوانمثال همین مطلبی که الان روی سیستم شما قرار دارد برای اینکه به این صورت روی مرورگر شما نمایش داده شود، توسط یک وبسرور که با کلیک شما این مطلب را برای شما بارگذاری کرده است، به دستتان رسیده است. وقتی شما روی لینک مورد نظر خود کلیک کرده و صفحهای جدید را باز میکنید، یک درخواست برای صفحه جدید از کامپیوتر شما به سرور سایت ما ارسال میشود. این درخواست توسط وبسرور بررسی شده و آنچه که شما نیاز دارید به آدرس آیپی شما ارسال شده و مرورگر شما با دریافت این اطلاعات آنها را ترجمه کرده و صفحه وب به شما نمایش داده خواهد شد. این اطلاعات از طریق فرکانسی خاص روی بستر اینترنت جابهجا میشود که پورت نام دارند. پورتها با شمارههای مختلفی روی اینترنت وجود داشته و هر کدام از آنها موارد استفاده مختلفی را برای خود دارند.
سوالی که در اینجا مطرح میشود این است که در این ماجرا و داستانی که به آن اشاره کردیم نقش IIS چیست و چه کاری را قرار است برای ما انجام دهد. IIS همان المانی است که از طرف سرور و با توجه به سیاستی که برای پاسخدهی به این درخواستها طراحی شده است، مسئولیت مدیریت این درخواستها را بر عهده دارد. یک وبسرور به دو روش مختلف میتواند به این درخواستها پاسخ دهد. روش اول بهصورت تک پردازهای است که در آن هر لحظه به یک درخواست پاسخ داده میشود و روش دوم به صورت چندپردازهای که در هر لحظه تعداد بیشتری از درخواستها مورد بررسی و پاسخدهی قرار میگیرند. البته در روش پردازهای که با برنامههایی مانند node js پشتیبانی میشوند، هر پردازه بهصورت چند زیرپردازه مورد بررسی قرار میگیرد که المانهای کارگر کوچکتری وضعیت آنها را دنبال میکنند و بیشترین کاربرد این موارد مربوط به کار با پایگاههای داده و فایل سیستمها است.
فرقی نمیکند که کدام روش برای بررسی درخواستها توسط مدیریت دنبال شود، کار IIS این است که درخواستهای وارد شده را مدیریت کرده و آنها را با صفبندی خاص خود در اختیار پردازههایی بگذارد که مسئولیت پاسخدهی و دنبال کردن این درخواستها را بر عهده دارند.
بسترهای اجرای IIS چیست؟
IIS برنامهای برای اجرا روی ویندوز سرور است و شما میتوانید آن را روی ویندوز سرور خود اجرا کنید. برای اینکه بیشتر با مفهوم این سیستم عامل کنترلکننده هاست و سرور آشنا شوید میتوانید به مقاله ویندوز سرور چیست مراجعه کنید. اما اگر بخواهیم یک اشاره کوتاه به آن داشته باشیم میتوانیم آن را بهعنوان یک سیستم عامل برای کنترل هاست و سرور با قابلیتها و برنامههای بیشتر و همینطور پشتیبانی بسیار قویتری از سختافزار نسبت به سیستم عاملهای معمولی معرفی نمود. IIS در اصل برای استفاده در بسترهای اینچنینی طراحی شده است.
اما قابلیت استفاده از این برنامه کاربردی روی سایر سیستم عاملها نیز فراهم شده است. شاید شما برای کنترل یک شبکه کوچک که قرار است بر مبنای پروتکلهای TCP/IP کار بکند نیاز به یک مکانیزم کنترلی داشتید. در اینجاست که IIS به کمک شما خواهد آمد. بهطورکلی میتوان سیستم عاملهای فهرست شده در ادامه را بهعنوان پاسخی برای این سوال که بسترهای اجرای IIS چیست معرفی نمود.
- ویندوز XP
- ویندوز NT نسخههای 4 به بعد
- ویندوز ۲۰۰۰
- ویندوز سرور در تمامی مجموعهها
- ویندوز ۷
- ویندوز ۸ و ۸.۱ نسخه Professional
- ویندوز ۱۰ PRO
تقریبا تمامی ویندوزها خصوصا سری ویندوزهای سرور از این قابلیت پشتیبانی میکنند و میتوانند برای پاسخدهی به ریکوئستها یا درخواستهایی که از طرف شبکه وارد میشوند، از IIS استفاده کنند. همین امر باعث شده است تا IIS بهعنوان یکی از نرمافزارها و برنامههای پر تغییر معرفی شود و نسخههای متعددی از این برنامه ارائه شود. در ادامه به بررسی این موضوع که چه ورژنهایی از IIS وجود دارد و دلیل ایجاد هر کدام از این ورژنهای IIS چیست، خواهیم پرداخت.
انواع ورژنهای IIS چیست؟
بهطورکلی برای IIS تاکنون 14 ورژن مختلف طراحی و روانه بازار مصرف شده است. قدیمیترین ورژن این برنامه که همان ورژن 1 میباشد بهصورت یک افزونه رایگان و ساده برای ویندوز NT 3.5 ارائه شد. این ورژن از این برنامه را نمیتوان بهعنوان یک برنامه مستقل و کامل نامید چون ویژگیهای یک برنامه را نداشت. اما با توجه به قابلیتهای خوبی که روی این ویندوز و مدیریت درخواستهای وبسرور داشت مورد توجه مایکروسافت قرار گرفت و این پروژه در اندازهای بزرگتر و بهصورت یک برنامه جامع دنبال شد.
ورژنهای بعدی این برنامه دیگر بهصورت یک افزونه نبود و به یک برنامه کامل و حرفهای تبدیل شده بود. اولین نسخه برنامهای IIS روی ویندوز NT 4 عرضه شد که IIS 2.0 نام داشت. ورژن IIS 3.0 نیز روی ویندوز NT 4 service pack 2 انتشار یافت که حاوی بسته الحاقی برای کنترل اسکریپتهای صفحات داینامیک وب بود.
IIS به پیشرفت و گسترش ورژنهای خود ادامه داد و با اضافه کردن بستههای جدید به ورژن IIS 5.1 رسید. یک ورژن قدرتمند که برای اجرا و پیادهسازی روی یکی از قدرتمندترین و محبوبترین سیستم عاملهای ساخت مایکروسافت رسید. ویندوز XP وارد بازار شده بود و تقریبا جهان را در انحصار خود در آورده بود. پس IIS باید خود را با این بستر جدید هماهنگ میکرد تا از آن جا نماند. پس این برنامه برای اولین بار روی یک سیستم عامل غیر شبکه پیادهسازی شد.
ورژنهای بعدی این برنامه روی ویندوزهای XP، ویستا و همینطور سون بهخوبی تطبیق پیدا کرده بودند. ورژن انقلابی بعدی این برنامه که یک تحول اساسی را در پی داشت IIS 6 بود. در این نسخه روشهای زیادی برای احراز هویت در حالتهای مختلف به این برنامه اضافه شد و این برنامه بهعنوان یکی از ارکانی که در کار امنیت و طبقهبندی اطلاعات وبسرور و هاست نقش داشتند وارد میدان شد.
با ورود ویندوز ۸.۱ و همینطور ویندوز سرور 2012 سیستم ویندوزهای ارائه شده توسط مایکروسافت از حالت قبلی تغییری بنیادی پیدا کرد و IIS نیز با این موج تغییر همراه شد. این ورژن که ورژن 8.5 نام داشت، شامل یک IDE برای مدیریت ورکرها و المانهایی که روی پردازهها کار میکردند، فعالساز داینامیک برای ساین، قابلیت لاگین و ورود بهصورت کاربردی، لاگ کردن با روش ETW و همینطور تاییدکننده اتوماتیک بستهها بود که بعضی از آنها جدید و بعضی دیگر میراث به جا مانده از ورژنهای قبلی بود.
آخرین ورژن این برنامه همان IIS 10.0 که اکنون قابل نصب و استفاده روی ویندوز سرورهای امروزی است، حاصل آن چیزی است که در 14 ورژن متفاوت تجربه شده و ویژگیهایی که اکنون به ما ارائه میکند ۱۳ سال تجربه نسل قبل این برنامه هست. این ویژگیها که به مرور زمان به این برنامه اضافه شدهاند موضوعی است که در ادامه این مطلب آن را دنبال خواهیم نمود. اجازه دهید با هم به بررسی این مورد که کار هر کدام از ماژولهای IIS چیست بپردازیم.
قابلیتهای IIS چیست؟
IIS بهعنوان یک برنامه برای کنترل ارتباط اینترنت قابلیتهای زیادی دارد که میتوان آنها را بهصورت ماژولهای مختلف طبقهبندی نمود. هر کدام از این ماژولها وظیفه خود را بر عهده داشته و خدمات خاصی را ارائه میکنند. در ادامه به بررسی آنها خواهیم پرداخت.
خدمات HTTP
این مورد را میتوان بهعنوان یکی از اصلیترین کارهایی که IIS قرار است انجام دهد در نظر گرفت. بررسی درخواستهایی که از کلاینتها و یا اعضای شبکه برای سرور ارسال شده است و باید به فراخور نوع آنها و اینکه آیا اجازه داریم که به آنها پاسخ دهیم، پاسخ داده شوند. البته پاسخ بعضی از این درخواستها ممکن است چیزی نباشد که کلاینتها از شما انتظار دارند.
خدمات امنیتی
همانطور که در بخش قبلی به آن اشاره کردیم، بعضی از کلاینتها ممکن است پاسخ مناسبی را از سرور دریافت نکنند. دلیل این میتواند هر چیزی باشد اما یکی از اصلیترین دلایلی که میتواند موجب رد این درخواستها شود، موارد امنیتی است که سیستم باید بررسی کند که آیا اجازه دسترسی به این اطلاعات برای کاربر درخواستکننده آنها وجود دارد یا خیر.
برای بررسی این درخواستها و اینکه آیا مجوزهای امنیتی برای این کار وجود دارد، گزینههای مختلفی وجود دارد که تفاوتهای زیادی با هم دارند. در بعضی مواقع ممکن است درخواستهای یک IP خاص بن شده باشند و در بعضی موارد ممکن است کاربر اجازه دسترسیهایی در سطح درخواستی را نداشته باشد اما برای استفاده از سایر بخشها مجاز باشد. پس ماژول امنیتی در IIS یک ماژول گسترده است که میتوان روی آن حساب کرد.
خدمات لاگ و عیبیابی
در زمان استفاده از سیستم ممکن است بنا به هر دلیلی از درخواستهای نامشخص و نادرست گرفته تا محتوای ناقص و ناسالم، سیستم دچار مشکلاتی در سرویسدهی شود. یکی از مواردی که IIS آنها را دنبال میکند عیبیابی ایرادات احتمالی و همینطور لاگ کردن کلیه وقایعی است که روی سیستم ممکن است رخ دهد. با این روشها شما این امکان را خواهید داشت تا در صورت بروز هرگونه مشکلی آن را به سادگی برطرف نموده و متوجه شوید که چه چیزها و یا چه درخواستهایی باعث بروز این مشکلات میشوند.
این موارد میتواند در پیشگیری از رخداد خطا و همینطور اصلاح ساختار سایت و محتوای آن بسیار مفید باشد.
خدمات مربوط به محتوا و Content
ماژولهای محتوا یا Content همان چیزی است که مسئول تحویل صفحات وب به شما است. همین مطلبی که در حال مطالعه آن هستید یک محتوا بهحساب میآید که با کلیک شما روی لینک آن توسط ماژول کانتنت با این قالب ظاهری برای شما ارسال شده است.
ممکن است یک کانتکت از نوع چندساختاره باشد و این به عهده ماژول کانتنت است که بر اساس نوع مرورگر و یا سیستمی که شما از طریق آن قصد دسترسی به این محتوا را دارید، قرار باشد ساختارهای مختلفی از آن برای شما ارسال شود. این کاری است که ماژول محتوای IIS باید برای شما انجام دهد.
خدمات فشردهسازی بستهها
وقتی محتوایی برای کاربر ارسال میشود بهتر است که یک بهینهسازی در اندازه آن انجام بگیرد تا با استفاده از این کار سرعت بالاتر رفته و کیفیت آنها وقتی که به دست کاربر میرسد افزایش یابد. بهطورکلی بالا رفتن سرعت و کم شدن ترافیک موجود در سطح شبکه یکی از اهدافی است که به وسیله آن پاسخدهی و کیفیت خدمات بالاتر خواهد رفت.
ماژول فشردهسازی IIS بستههای ارسالی را با استفاده از یک فناوری فشردهسازی پیشرفته به نام Gzip فشرده کرده و روانه مقصد میکند. این امر باعث میشود تا خواستههایی که درباره آنها صحبت کردیم به طور کامل محقق گردند.
خدمات کشینگ (Cashing)
کش کردن یا همان Cashing یکی از مواردی است که با توجه به نیاز بالا برای سرعت لود شدن صفحات میتواند یک تجربه کاربری خوب را برای کاربر فراهم کند. IIS این مسئولیت را بر عهده دارد تا درخواستهای مشابه را بررسی کرده و درخواست های پرتعداد را کش نموده و در اختیار استفادهکنندگان و سایر یوزرهایی که دسترسی مجاز برای این اطلاعات دارند قرار دهد. با این کار ارجاعات به حافظه کمتر شده و کیفیت خدمات ارائه شده بهبود قابل ملاحظهای خواهد داشت.
IIS خدمات خوب و زیادی را برای شما ارائه خواهد کرد، اما همانطور که قابل حدس است این برنامه نقایصی هم دارد که عموما به صورت نقایص امنیتی از آنها یاد میشود. البته نظارت مستقیم فایروال ویندوز روی این بخش کمی از این خطرات را کاسته اما همچنان این معایب میتوانند آسیبهای زیادی را ایجاد کنند.
نقاط ضعف و چالشهای امنیتی IIS چیست؟
با بررسیهایی که داشتیم IIS یک نرمافزار گسترده و بزرگ بود که قابلیتهای زیادی را داشت. اما این بزرگی دردسرهایی نیز برای او ایجاد کرده است. در کامپیوتر اصلی وجود دارد که میگوید یک نرمافزار هر چقدر سادهتر و کوچکتر باشد، امنیت بیشتری دارد. وقتی یک ماژول یا یک برنامه بیش از اندازه بزرگ باشد، پیچیدگی آن به حدی بالا میرود که بهطور قطع نقاطی از دید برنامهنویس و طراح پنهان میماند.
این نقاط مختلف و باگها این پتانسیل را دارند که به یک نقطه ضعف برای برنامه تبدیل شده که هکرها و کسانی که قصد نفوذ به سیستم و تخریب را دارند از آنها استفاده کنند. این باگها به نقاط ضعف یا Vulnerabilities گفته میشود که معمولا توسط انجمنها و سایتهایی که در حوزه امنیت وجود دارند بهصورت یک لیست منتشر میشوند. در تصویر زیر میتوانید تعدادی از این نقاط را مشاهده کنید که برای IIS گزارش شدهاند.
مورد دیگری که بهعنوان یک چالش امنیتی در IIS مطرح است مواردی است که بهطور بالقوه جزو نقاط ضعف نیستند، اما عدم آگاهی کاربر از کارکرد آنها در زمان نصب برنامه و استفاده از next برای هر چیزی که سیستم از او میپرسد موردی است که باعث این اتفاقها میشود. اجازه دهید با ذکر یک نمونه ببینیم که نحوه رخ دادن این ایرادات در IIS چیست؟!
بهعنوانمثال IIS در بخشی از تنظیمات این اجازه را میخواهد که در صورت بروز مشکلاتی خاص کارکرد کل سیستم را متوقف کرده و ارتباط را قطع کند و آن را از کار بیندازد. وقتی شما کلید Next را در هنگام نصب بدون چک کردن تمام گزینهها بزنید، این اتفاق خواهد افتاد. باید قبول کنیم که چگونگی نصب در IIS میتواند در کارکرد کلی سیستم بسیار تاثیرگذار باشد.
در مجموع میتوان مشکلاتی که از طرف IIS برای سیستم شما ممکن است پیش بیاید را به این صورت فهرست کرد:
- غیرفعال نمودن سرویس یا DoS
- نمایش و به مخاطره انداختن فایلها و دادههای حساس
- اجرای بعضی از دستورات بهصورت خودسرانه (مجوز آنها ناخواسته از طرف شما صادر شده است)
- به مخاطره انداختن کامل سرویسدهنده
اما بهترین راهکار برای مقابله با این تهدیدات در IIS چیست؟! شما برای این کار باید عملیات نصب IIS را بهصورت کاملا دقیق انجام داده و همیشه در نظر داشته باشید که IIS را از لحاظ امنیتی آپدیت نگه دارید. پچهای ارائه شده توسط مایکروسافت میتواند این مشکلات را تا حد زیادی کاهش دهد.
نتیجهگیری
اگر بخواهیم بهصورت مختصر و ساده بگوییم که IIS چیست میتوان آن را بهعنوان یک برنامه برای کنترل ارتباط هاست ویندوزی و همینطور وبسرور شما با کاربران و کسانی که میخواهند به سایت شما دسترسی پیدا کنند دانست. IIS از نظر کاربرد یک برنامه فوقالعاده قوی بوده و میتواند برای شما امکانات خوبی را فراهم کند. از این امکانات میتوان به احراز هویت، بارگیری صفحات محتوا، کش کردن این صفحات و فشردهسازی بستههای ارسالی برای کاربر را بهعنوان برترین خدمات آن نام برد.
مورد دیگری که باید به آن پرداخت این است که نگاه شما به چالشهای امنیتی ایجاد شده توسط IIS چیست و برای بهبود آن چه کار میکنید؟! پیشنهاد ما برای رفع این مشکل استفاده از یک فایروال قدرتمند و همینطور نصب آخرین پچهای امنیتی ارائه شده برای این برنامه است که میتوانید آنها را بهصورت رایگان در سایت رسمی مایکروسافت دریافت نمایید.