در بسیاری از سازمانهای ایرانی پرتال تحت وب با زبان برنامه نویسی تحت ویندوز نوشته شده است و از این رو اکثرا از سرویس IIS برای ارتباط با اینترنت استفاده می کنند. درگاه وب IIS یک راه ورود هکر و رباتها به ساختار شبکه میباشد و از این رو در ادامه مبحث IIS Hardening با pa پاپرا همراه خواهیم بود. در تمامی مراحل زیر باید سرویس IIS برای اعمال تغییرات ریستارت گردد.
IIS Hardening با امنیت شبکه پاپرا:
قدم اول: غیر فعال کردن گزینه های قدیمی
برنامه IIS Crypto را دانلود کرده و در سرور اجرا کنید و مراحل زیر را انجام دهید.
بعد از 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
همچنین مطالب این مقاله با چک لیست فتا کنترل شده است که این فایل را میتوانید از مرکز مدیریت راهبردی افتا ریاست جمهوری دانلود نمایید.