قابلیت های امنیتی IIS (بخش اول: Dynamic IP Restriction)
پیرو اطلاعیه ی قبلی منتشر شده ی مرکز ماهر در خصوص "حملات اخیر به چند وب سایت و پورتال سازمانی" و با توجه به درخواست کاربران، مبنی بر ارائه ی جزئیات پیکربندی قابلیت های امنیتی IIS جهت پیشگیری از حملات مشابه، کارشناسان مرکز تخصصی آپا دانشگاه رازی بر آن شدند تا چندین مقاله ی آموزشی در این خصوص آماده نموده و به کاربران ارائه نمایند.
بخش اول: Dynamic IP Restriction
مقدمه
ماژول Dynamic IP Restrictions (DIPR) در IIS ۷.۰ و بالاتر امکان محافظت در برابر حملات انکار سرویس (DDoS) و brute force بر روی وبسرورها و وب سایتها را فراهم میآورد. به منظور ایجاد این حفاظت، ماژول نامبرده موقتاً آدرس های IP از کلاینتهای HTTP را که منجر به ایجاد تعداد بسیار زیادی درخواستِ همزمان میگردند یا که تعداد زیادی درخواست را در مدت زمان کوتاهی ایجاد می کنند مسدود (block) مینماید.
ویژگی ها
- مسدود نمودن آدرس های IP بر اساس تعداد درخواست های همزمان_ اگر تعداد درخواستهای همزمان یک کلاینتِ HTTP از حد مجاز بیشتر شود، آدرس IP آن کلاینت به طور موقت مسدود می گردد.
- مسدود نمودن آدرس های IP بر اساس تعداد درخواستها در طول یک دورهی زمانی_ اگر تعداد درخواست های یک کلاینتِ HTTP در یک بازه ی زمانیِ مشخص بیش از حد مجاز باشد، آدرس IP آن کلاینت به طور موقت مسدود می گردد.
- امکان لیست نمودن آدرس های IP که نمی خواهید مسدود شوند_ شما می توانید لیستی از آدرس IP کلاینت هایی که می خواهید از قاعده ی مسدود شدن توسط ماژول نامبرده (صرفنظر از پیکربندی های دیگر) مستثنی باشند ایجاد نمایید.
- اقدامات رد درخواست مختلف_ شما می توانید مشخص کنید که برای یک کلاینت HTTP که آدرس IP آن مسدود شده است چه پاسخی بازگردانده شود. ماژول می تواند کد وضعیت ۴۰۳، ۴۰۴ یا فقط خاتمه ی اتصال HTTP را بازگرداند یا اینکه هیچ پاسخی بازنگرداند.
- امکان پشتیبانی برای وب سرورها از پشت پراکسی_ اگر وب سرور شما پشت یک پراکسی باشد، شما می توانید ماژول را جهت استفاده از آدرس IP کلاینت از یک هدر X-Forwarded-For پیکربندی نمایید.
- _ این ماژول به طور کامل آدرسهای IPV6 را پشتیبانی می کند.
نصب ماژول DIPR (Dynamic IP Restrictions )
شما می توانید این ماژول را از لینک زیر دانلود نمایید:
https://www.iis.net/downloads/microsoft/dynamic-ip-restrictions
پیش نیازها:
شما باید یکی از سیستم عامل های زیر را داشته باشید.
- Windows Server 2008
- Windows Vista SP1
- Windows Server 2008 R2
- Windows 7
نسخه ی Betaی ماژول DIPR را حذف نمایید
اگر شما از نسخه ی first Beta ماژول DIPR استفاده می کنید باید قبل از نصب نسخه ی جدید آن را حذف نمایید، در غیر اینصورت نصب با خطا مواجه خواهد شد.
توجه:
قبل از حذف نسخه ی Beta حتما از تنظیمات خود بک آپ تهیه نمایید.
در صورت استفاده از نسخه ی Beta2 ماژول DIPR، شما می توانید مستقیما آن را به نسخه ی نهایی ارتقاء دهید. با این کار تنظیمات شما حفظ خواهد شد.
قابلیت Dynamic IP Restrictions را می توان با استفاده از IIS Manager، IIS configuration API یا از طریق ابزار خط فرمان appcmd پیکربندی نمود.
جهت دسترسی به تنظیمات Dynamic IP Restrictions در IIS Manager به صورت زیر عمل نمایید:
۱. IIS Manager را باز کنید.
۲. در نمای درختی سمت چپ:
- اگر می خواهید تنظیمات سمت سرور را پیکربندی کنید قسمت Server را انتخاب نمایید.
- اگر می خواهید تنظیمات سایت خاصی را پیکربندی کنید قسمت Site را انتخاب نمایید.
۳. در پنجره ی باز شده (پنجره ی Features view) بر روی "Dynamic IP Restrictions" کلیک کنید.
۴. در صفحه ی اصلیِ "Dynamic IP Restrictions" شما می توانید هر ویژگی دلخواه را فعال یا پیکربندی نمایید. جهت افزودن یک آدرس IP به لیست مجاز (Allow) می توانید بر روی لینک "Show Allowed Addresses" در سمت راست کلیک نمایید:
۵. پس از انتخاب "Show Allowed Addresses" پنجره ای به شکل زیر نشان داده میشود که شما می توانید در آن لیست تمام آدرس های IPی که می توانند صحت اعتبار Dynamic IP Restriction را دور بزنند ببینید. شما می توانید با انتخاب "Add Allow Entry.." در قسمت بالای سمت راست آدرس های IP بیشتری به لیست اضافه نمایید.
مسدود کردن آدرس های IP بر اساس تعداد درخواست های همزمان
هنگام استفاده از این گزینه، سرور به هر آدرس IP کلاینت اجازه خواهد داد که تنها تعداد قابل تنظیمی درخواستِ همزمان ارسال نماید. هرگونه درخواستی که از این حد تعیین شده تجاوز نماید رد خواهد شد.
یک راه ساده جهت آزمودن این ویژگی این است که حداکثر تعداد درخواستهای همزمان را مقدار۲ تنظیم نمایید، این کار را میتوانید با استفاده از UI یا اجرای خط فرمان appcmd انجام دهید.
%WINDIR%\system32\inetsrv\appcmd.exe set config -setion:system.webServer/security/dynamicIpSecurity
/denyByConcurrentRequests.enabled:"True"
/denyByConcurrentRequests.maxConcurrentRequests:"2"
/commit:apphost
در پوشهی ریشه (Root) وب سایت یک فایل test.aspx ایجاد کنید و محتوای زیر را در آن کپی نمایید.
این صفحه ی ASP.NET قبل از بازگرداندن هر گونه پاسخی به مدت ۳ ثانیه نشان داده خواهد شد. این فایل را ذخیره نموده و سپس مرورگر خود را باز کنید، آدرس http://localhost/test.aspx را در آن وارد نمایید، در ادامه کلید F5 را جهت رفرش نمودن صفحه بفشارید. این در مرورگر منجر به ایجاد بیش از ۲ درخواست همزمان خواهد شد و همانطور که می بینید خطای ۴۰۳ مشاهده میشود_ خطای Forbidden از جانب سرور:
مسدود کردن آدرس های IP بر اساس تعداد درخواست ها در طول زمان
هنگام استفاده از این گزینه، سرور، درخواستِ هر آدرس IP کلاینتِ HTTP را که تعداد درخواست آن بیش از تعداد تنظیم شده در طول یک دوره ی زمانی باشد رد خواهد نمود. این آدرس IP در حالت مسدود باقی خواهد ماند تا زمانی که تعداد درخواست های آن در یک دوره ی زمانی کمتر از مقدار تنظیم شده باشد.
برای تست این ویژگی، با استفاده از IIS Manager و یا با اجرای خط فرمان appcmd، مقدار "Maximum number of requests" را ۵ و "Time period" را ۵۰۰۰ تنظیم نمایید.
%WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/dynamicIpSecurity /denyByRequestRate.enabled:"True" /denyByRequestRate.maxRequests:"5" /denyByRequestRate.requestIntervalInMilliseconds:"5000" /commit:apphost
مرورگر را باز کرده و آدرس http://localhost/welcome.png را وارد نمایید، سپس کلید F5 را به طور مداوم جهت رفرش نمودن صفحه بفشارید. این در واقع بیش از ۵ بار درخواست در طول ۵ ثانیه است و همانطور که در تصویر زیر می بینید سرور کد خطای ۴۰۳ را بازمی گرداند_ کد وضعیتِ Forbidden
اگر شما ۵ ثانیه دیگر صبر کنید که تمام درخواست های قبلی اجرا شوند و سپس درخواست ارسال نمایید، درخواست موفقیتآمیز خواهد بود.
اقدامات رد درخواست
این ماژول می تواند جهت انجام اقدامات زیر هنگام رد درخواستِ آدرس های IP پیکربندی گردد:
- ارسال پاسخ ۴۰۳ برای کلاینت (Forbidden)
- ارسال پاسخ ۴۰۴ برای کلاینت (File not found)
- نادیده گرفتن درخواست با قطع کردن اتصال HTTP، بدون ارسال هیچ گونه پاسخی برای کلاینت
منبع:
https://docs.microsoft.com/en-us/iis/manage/configuring-security/using-dynamic-ip-restrictions