آموزش قدم به قدم پیکربندی امن سرویس IIS Hardening Microsoft در ویندوز سرور

لینکدین اینستاگرام تلگرام

در بسیاری از سازمانهای ایرانی پرتال تحت وب با زبان برنامه نویسی تحت ویندوز نوشته شده است و از این رو اکثرا از سرویس IIS برای ارتباط با اینترنت استفاده می کنند. درگاه وب IIS یک راه ورود هکر و رباتها به ساختار شبکه میباشد و از این رو در ادامه مبحث IIS Hardening  با pa پاپرا همراه خواهیم بود. در تمامی مراحل زیر باید سرویس IIS برای اعمال تغییرات ریستارت گردد.

IIS Hardening  با امنیت شبکه پاپرا:

قدم اول: غیر فعال کردن گزینه های قدیمی

برنامه IIS Crypto  را دانلود کرده و در سرور اجرا کنید و مراحل زیر را انجام دهید.

IIS Hardening
IIS Hardening
IIS Hardening
IIS Hardening

بعد از Apply باید سرور یک بار راه اندازی گردد.

قدم دوم: تنظیم  HSTS Header

برای امن سازی پاسخ هدر باید موارد زیر را در بخش HTTP Response Headers ایجاد کنیم. گزینه های اضافی را در اول کار میتوان حذف کرد. برای تست امنیت در مورد این قسمت میتوان از سایتهایی مثل www.securityheaders.io بهره برد.

Add HTTP Response Headers/

 

X-Xss-Protection

   ۱; mode=block

Content-Security-Policy

default-src https: data: ‘unsafe-inline’ ‘unsafe-eval’

X-Content-Type-Options

nosniff

Strict-Transport-Security

max-age=31536000; includeSubDomains

X-Frame-Options

SAMEORIGIN

قدم سوم: عدم نمایش مشخصات وب سرویس IIS

اول افزونه URL Rewrite  را نصب میکنیم سپس مراحل زیر را دنبال می کنیم:

URL Rewrite/view server variable/ add RESPONSE_SERVER

Back to rules

 Rules/add BlankRule

امنیت شبکه پاپرا : Name

Matching Scope: Server variable

Variable name: RESPONSE_SERVE

       *. :Pattern

Value: www.papra.ir

می توانید برای تست از اسکن سایت www.securityheaders.io استفاده کنید.

قدم چهارم: فعال کردن Dynamic IP Address Restrictions

بر اساس مقدار بازدید کننده و شرایط میتوان تعداد درخواستهای همزمان و تعداد درخواست در یک بازه زمانی را برای امنیت بیشتر تنظیم نمود.

Set IP Address and Domain Restrictions/Edit Dynamic Restrictions Settings

قدم پنجم: چک نمودن  credentials و Clear Text Password

در فایلهای machine.config  و web.config واژه password را جستجو کنید تا پی ببرید که آیا پسورد ها به صورت آشکار نوشته شده است یا در هم سازی شده است. اگرcredentials  ، SHA1 یا درهم نبود با پیمانکار نرم افزار برای تغییر این وضعیت ارتباط بگیرید. همچنین خط دستور credentials نباید وجود داشته باشد.

قدم ششم: اعمال httpcookie  برای وضعیت نشست

در فایل web.config از تگ زیر استفاده میکنیم:

<system.web>

<sessionState cookieless=”UseCookies” />

</system.web>

یا از طریق منو به شکل زیر آن را اعمال میکنیم.

Change  Session State/ Cookie Settings / Mode à Use Cookies

قدم هفتم: تنظیم cookies به خصیصه HttpOnly

در فایل web.config مانند تگ روبرو عمل کنید

<system.web>

< httpCookies httpOnlyCookies=”true”/>

</system.web>

قدم هشتم: عدم اعطای مجوز Handler برای Write and Execute

باید فرمان زیر را در CMD اجرا کنید:

%systemroot%\system32\inetsrv\appcmd set config /section:handlers /accessPolicy:Read,Script

قدم نهم: چک کردن notListedIsapisAllowed

مقدار پیش فرض برای notListedIsapisAllowed و notListedCgisAllowed برابر false میباشد. برای اطمینان از دستورهای زیر استفاده کنیم:

%systemroot%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/isapiCgiRestriction /notListedIsapisAllowed:false

%systemroot%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/isapiCgiRestriction /notListedCgisAllowed:false

قدم دهم: قفل کردن Encryption providers

از طریق اجرای فرمان زیر اجرا شود. شما باید بر اساس ورژن NET. که در سرور می باشد دستور را تغییر دهید.

%systemroot%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -pr iisWasKey IIS_IUSRS

قدم یازدهم: تنظیم Deployment method retail

در فابل  machine.config جمله <system.web> را جستجو کنید و بعد آن <deployment retail=”true” />  را اضافه نمایید.

<system.web>

<deployment retail=”true” />

قدم دوازدهم: غیرفعال بودن  ASP.NET stack tracing

در فایل web.config مانند کد زیر عمل کنید.

<system.web>

<trace enabled=”false”>

…</system.web>

قدم سیزدهم: غیرفعال نمودنDebug

در داخل فایل web.config دیباگ را غیر فعال کنید:

<system.web>

<compilation debug=”false” />

یا از منو روبرو استفاده کنید.

Change NET Compilation/Behavior/Debug à False

قدم چهاردهم: غیرفعال شدن پیغامهای customErrors

در فایل web.config یکی از تگهای < customErrors mode=”RemoteOnly” />  یا < customErrors mode=”On” /> تعریف شده باشد. همچنین می توان از منو تنظیم کرد.

Change NET Error Pages/ Edit Feature Settings/ Mode à RemoteOnly

قدم پانزدهم: نهان  کردن جزئیات خطاها از دید هکر

در فایل Web.config باید تگ <httpErrors errorMode=”DetailedLocalOnly”> را قرار دهیم.

<system.webServer>

<httpErrors errorMode=”DetailedLocalOnly”>

یا از طریق منو به شکل زیر اقدام کنید:

Change Error Pages/ Edit Feature Settings / Error Responses à Detailed errors for local requests and requests custom error pages for remote

قدم شانزدهم: تغییر مسیر و سطح دسترسی

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

%systemroot%\system32\inetsrv\appcmd list vdir

بهتر است که این فولدر در درایو غیر سیستمی که با اعمال مجوزهای  NTFS دسترسی محدود شده باشد، قرار گیرد.

Change Sites/Default Web Site/Basic Settings/Physical Path à Another Path

همچنین بهتر است مسیر لاگ گیری را به مسیری با مجوزهای NTFS عوض کنیم.

%systemroot%\system32\inetsrv\appcmd set config -section:sites -siteDefaults.logfile.directory:”D:\LogFiles”

 

قدم هفدهم: چک نمودن مرور دایرکتوری ها

%systemroot%\system32\inetsrv\appcmd list config /section:directoryBrowse

برای غیر فعال کردن Directory Browsing از دستور زیر بهره ببرید.

%systemroot%\system32\inetsrv\appcmd set config /section:directoryBrowse /enabled:false

قدم هجدهم: تغییر NET Trust Level

برای تنظیم Net Trust Level به Medium در سطح سرور به صورت زیر عمل میکنیم.

%systemroot%\system32\inetsrv\appcmd set config /commit:WEBROOT /section:trust

/level:Medium

یا از طریق منو جلو میرویم. به طور پیش فرض، روی گزینه Full تنظیم است.

Change .NET Trust Levels/ Trust level à Medium (web_mediumtrust.config)

قدم نوزدهم: غیرفعال کردن HTTP Trace Method

برای تنظیم این فیلتر از فرمان زیر استفاده می کنیم.

%systemroot%\system32\inetsrv\appcmd set config /section:requestfiltering /+verbs.[verb=’TRACE’,allowed=’false’]

یا از طریق منو زیر عمل میکنیم

Add Request Filtering/ HTTP Verbs/ Deny Verb/ “TRACE”

قدم بیستم: فیلتر درخواست ها از سمت کلاینت

در فایل web.config باید پارامترای زیر قرار گیرد.

 maxAllowedContentLength=”30000000″

maxURL=”4096″

maxQueryString=”2048″

allowDoubleEscaping=”false”

به عنوان مثال می توان از منو زیر هم عمل کرد.

Change Request Filtering/Edit Feature Settings/ Requst Limits/maxAllowedContentLength=”30000000″

یا دستور زیر را در CMD اجرا نمود.

%systemroot%\system32\inetsrv\appcmd set config /section:requestfiltering/requestLimits.maxQueryString:2048

قدم بیست و یکم: عدم مجوز به Unlisted File Extension

در فایل web.config باید پارامترای زیر قرار گیرد. پیشنهاد می شود پسوندها را با هماهنگی پیمانکار نرم افزار پرتال انتخاب شود.

 <fileExtensions allowUnlisted=”false”>

<add fileExtension=”.asp” allowed=”true” />

<add fileExtension=”.aspx” allowed=”true” />

<add fileExtension=”.html” allowed=”true” />

به عنوان مثال می توان از منو زیر هم عمل کرد.

Disable Request Filtering/Edit Feature Settings/ Allow unlisted file name extensions”

Add Request Filtering/Allow File Name Extension /”.asp” “.aspx”  “.html”

قدم بیست و دوم: متد تائیدیه MachineKey

این تائیدیه را برای دات نت ۳٫۵به SHA1 و برای دات نت ۴٫۵ به HMACSHA256 تغییر میدهیم.

%systemroot%\system32\inetsrv\appcmd set config /commit:WEBROOT /section:machineKey

/validation:SHA1

%systemroot%\system32\inetsrv\appcmd set config /commit:WEBROOT /section:machineKey

/validation:HMACSHA256

یا از منو تغییر میدهیم.

Change Machine Key/ validation method à SHA1 (.net 3.5) HMACSHA256 (.net4.5)

قدم بیست و سوم: تغییر Application pool identity

Change application pool/DefaultAppPool/Advanced Settings/identity à application pool identity

در ادامه با دستور زیر اطمینان حاصل شود که هر Application pool برای سایت منحصر فرد می باشد.

%systemroot%\system32\inetsrv\appcmd list app

قدم بیست و چهارم: چک کردن  Authentication

برای تنظیم کاربر از این دستور بهره ببرید:

%systemroot%\system32\inetsrv\appcmd set config -section:anonymousAuthentication

/username:”” –password

همچنین می توان:

Change Authentication/ Anonymous Authentication/ à application pool identity

بقیه گزینه های در صورت نیاز، edit و سپس در پنل Actions ، گزینه Enable فعال شود.

به عنوان مثال در صورت داشتن SSL میتوان به شکل زیر اقدام نمود.

Edit Authentication/ Forms Authentication à cookieless=”UseCookies” requireSSL=”true”

ویژگی protection باید به مقدار Encryption and validation تغییر یابد. البته خط protection=”All” میتواند در فایل  web.config  به طور دستی اضافه گردد.

قدم بیست و پنجم: چک کردن Authorization

Remove Authorization Rules/All Users

Add Authorization Rules/Add Allow Authorization Rules à Administrators

قدم بیست و ششم: تنظیمات امنیتی FTP در IIS

FTP SSL / Set SSL

SSL Policy/ check Require SSL Connections

FTP Logon Attempt Restriction/ set Triger

قدم بیست و هفتم: استفاده از SSL

به علت خاص بودن و طولانی نشدن مطلب، امنیت شبکه پاپرا در مقاله بعدی به شرح این مورد مهم می پردازد.

سخن آخر

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

منابع

وب سایت Microsoft

وب سایت Owasp

وب سایت Hostadvise

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

 

 

برای ارزیابی این پست کلیک کنید!
[Total: 1 Average: 5]

دیدگاه خود را بنویسید

آدرس ایمیل شما منتشر نخواهد شد.پر کردن این فیلد ضروری است *