امن سازی IIS 10 – بخش دوم

cis-IIS 10

اطمینان از وجود Host Header ها در تمامی وب سایت ها (Scored)

Profile Applicability

• Level 1 – IIS 10

Description

Host Header ها توانایی این را دارند که Host چندین وب سایت در همان آدرس IP و شماره Port باشند.
توصیه می‌شود که Host header برای تمامی سایت‌ها تنظیم گردد. در حال حاضر Wildcard برای Host Header ها نیز پشتیبانی می‌شود.

امن سازی وب سرور IIS – بخش اول

Rationale

وجود یک Host Header برای تمامی سایت‌ها، احتمال بروز موارد زیر را کاهش می‌دهد.
• موفقیت حملات DNS در به خطر انداختن و سوء استفاده از اطلاعات سایت یا تغییر در عملکرد سایت.
• اسکن‌هایی که بر مبنای IP انجام می‌شوند با موفقیت اپلیکیشنی که در IIS قرار دارد را شناسایی یا با آن تعامل می‌کنند.

Note: اگر Wildcard مربوط به DNS ای که وارد شده از قبل وجود داشته باشد و Wildcard مربوط به Host Header نیز در حال استفاده باشد، شما مجبور به ارائه داده‌های خود به دامین‌های بیشتری هستید.

Audit

از دستور زیر برای شناسایی سایت‌هایی استفاده می‌شود که از Host Header های لازمه استفاده نکرده‌اند.
از طریق APPCMD.exe دستور زیر را وارد کنید:

%systemroot%\system32\inetsrv\appcmd list sites

یا

با استفاده از Powershell دستور زیر را وارد کنید:

Get-WebBinding -Port * | Format-List bindingInformation

تمامی سایت‌ها به صورت زیر لیست می‌شوند:

SITE “Default Web Site” (id:1,bindings:http/*:80:test.com,state:Started)
SITE “badsite” (id:3,bindings:http/*:80:,state:Started)

برای تمامی سایت‌هایی که SSL نیستند اطمینان حاصل کنید که هر 3 مورد IP:port:host binding حاوی یک Host Name باشند.

کتابچه کامل راهنمای امن سازی وب سرور IIS 10

در مثال بالا اولین سایت مطابق با توصیه‌های ارائه شده تنظیم گردیده است. بدین صورت که Default web site دارای Host Header، Test.com است اما badsite دارای Host Header تنظیم شده نمی‌باشد و *:80: بدین معنی است که تمام IP های روی پورت 80 بدون Host Header می‌باشند.

Remediation

لیست کردن تمامی سایت‌ها به وسیله دستور appcmd.exe:

دستور زیر را در appcmd.exe وارد کنید تا Host Header را تنظبم نمایید:

%systemroot%\system32\inetsrv\appcmd.exe set config -section:system.applicationHost/sites /”[name='”” /commit:apphost

یا

دستور زیر را در PowerShell وارد کنید تا Host Header را تنظبم نمایید:

Set-WebConfigurationProperty -pspath ‘MACHINE/WEBROOT/APPHOST’ -filter ‘system.applicationHost/sites/site[@name=”]/bindings/binding[@protocol=’http’ and @bindingInformation=’:80:’]’-name ‘bindingInformation’ -value ‘:80:’

یا

مراحل زیر را در IIS Manager انجام دهید تا Host Header را برای default web site تنظبم نمایید:

1-IIS Manager را باز کنید
2-در صفحه Connections قسمت Sites را باز کنید و default web site را انتخاب نمایید.
3- در صفحه Actions روی قسمت Binding کلیک کنید.
4-در پنجره site bindings انتخاب نمایید که چه binding ای باید برای کدام host header قرار است تنظیم شود، در این مثال پورت 80 می‌باشد.
5-بر روی Edit کلیک کنید.
6-زیر host name، FQDN سایت را وارد نمایید. (مثلا www.examplesite.com)
7-بر روی OK کلیک کنید و پنجره را ببندید.

Note: نیاز به یک host header ممکن است باعث مختل شدن عملکرد کلاینت‌های HTTP/1.0 شود.

Default Value

به صورت پیشفرض host header ها مورد نیاز نیستند یا به صورت خودکار تنظیم نمی‌شوند.

مطالب این بخش برگرفته از مستند امن سازی وب سرور IIS مربوط به وب سایت CIS می باشد.

مطالب این بخش توسط جناب آقای نوربخش تهیه شده است.

درباره نویسنده: احسان نیک آور

ممکن است دوست داشته باشید