microsoft

فعال سازی و تنظیم IIS Remote Management توسط PowerShell - مدیریت IIS از راه دور

امتیاز کاربران

ستاره فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

مدیریت سرورهای وب – IIS از طریق GUI در صورتی که دسترسی به سرور داشته باشید بسیار ساده است، اما اگر شما نیز مثل من تعداد زیادی WebServer در موقعیت های مختلف و یا Cloud دارید دسترسی به کنسول سرور دشوار و یا بدتر از آن از RDP برای مدیریت آنها استفاده می کنید

که ای روش شما اصلا منطقی و در راستای بهترین راه کارهای پیشنهاد توسط مایکروسافت نیست. راه کار بسیار بهتر و موثر تری برای مدیریت تعداد زیادی سرور از راه دور وجود دارد که همانا PowerShell Remoting می باشد.


مراحل کار:

اگر قبلا این کار را از طریق GUI انجام داده اید در جریان مراحل انجام کار هستید، از طریق PowerShell نیز انجام این مراحل به همان شکل است با این تفاوت که بسیار سریعتر و کم دردسر تر است. ترتیب اجرای موارد به صورت زیر است:
1- برقراری یک ارتباط (Session) با هر سرور
2- نصب IIS Management Service
3- فعالسازی IIS Management Service
4- استارت سرویس WMSVC
5- جایگزینی گواهینامه امنیتی Self-Signed
6- اتصال از طریق IIS Manager


در این آموزش این سرویس را بر روی 4 سرور مختلف با نام های web1,web2,web3 و web4 بصورت یکجا نصب خواهیم نمود.


1- تعریف PowerShell Remoting برای Web Server ها
ابتدا یک متغیر با نام $Servers ایجاد می کنیم و تمامی نام های کامپیوتر ها را درون آن قرار می دهیم. شما نیز می توانید لیست آنها را از یک فایل .csv و یا .txt نیز فراخوانی کنید. اگر سرورهای شما در Active Directory هستند می توانید با استفاده از دستور Get-ADComputer نیز سرورهای مقصد خود را شناسایی نمائید.
PS C:\ZAGRIO> $Servers = "web1,web2,web3,web4"
سپس یک Session به سمت هر سرور ایجاد میکنیم:
PS C:\ZAGRIO> $Sessions = New-PSSession -ComputerName $Servers

2- نصب سرویس IIS Remote Management
با استفاده از دستور زیر برای تمامی سرورها سرویس IIS Remote Management را نصب میکنیم.
 
{PS C:\HELLODIGI> Invoke-Command –Session $Sessions –ScriptBlock {Install-WindowsFeature Web-Mgmt-Service
پس از نصب لازم است سرویس را فعال کنیم اما برای این کار cmdlet وجود ندارد

3- فعالسازی سرویس Management Service
بصورت پیشفرض سرویس مدیریت IIS بر روی پورت 8127 فعال است. همچنین بصورت پیشفرض با نصب این سرویس یک گواهینامه امنیتی Self-Signed با مدت اعتبار 10 سال نیز ایجاد می گردد. اگر در شبکه داخلی از این امکان می خواهید استفاده کنید این مورد اشکالی ندارد اما در ادامه به شما نشان خواهیم داد که به چه صورت آن را با یک گواهینامه امنیتی مورد اعتماد جایگرین نمائید. برای فعالسازی سرویس از دستور زیر استفاده می کنیم:
{PS C:\HELLODIGI> Invoke-command –Session $Sessions -ScriptBlock{Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name EnableRemoteManagement -Value 1
حال سرویس شما فعال شده است اما کماکان لازم است سرویس مورد نظرstart شود .

4- روشن کردن سرویس Management Service
با استفاده از دستورات زیر سرویس را start کرده و در حالت Automatic نیز قرار می دهیم تا با هر بار restart شدن سرور، سرویس مجددا فعال شود.
 
{PS C:\HELLODIGI> Invoke-command –Session $Sessions -ScriptBlock {Set-Service -name WMSVC -StartupType Automatic
PS C:\HELLODIGI> Invoke-command –Session $Sessions -ScriptBlock {Start-service WMSVC}
در این مرحله شما امکان اتصال به سرویس فوق را از طریق سیستم دیگری خواهید داشت. اگر تمایل به جایگزین نمودن گواهینامه امنیتی دارید (عموما مشکلی وجود ندارد) می توانید با استفاده از دستورات زیر گواهینامه امنیتی را جایگزین نمائید.

5- جایگزین کردن گواهینامه امنیتی
شما می توانید یک گواهینامه امنیتی معتبر را از یک سرویس دهنده و یا Active Directory Certificate Services برای مدیریت سرورهای داخلی دریافت کنید.
گواهینامه را با فرمت .pfx به همراه یک کلمه عبور ذخیره کنید سپس با استفاده از دستور CertUtil.exe آن را نصب نمائید.
ابتدا فایل را در هر سرور کپی کنید سپس:
 
{PS C:\HELLODIGI> $Servers | Foreach-Object {Copy-Item -Path C:\Remote.Company.loc.pfx -Destination "\\$_\c$"
 
{PS C:\HELLODIGI> Invoke-Command -Session $Sessions {certutil -p P@ssw0rd -importpfx c:\Remote.company.loc.pfx

توجه داشته باشید که رمز عبور به صورت PLAIN در کد وجود دارد با توجه به اینکه ارتباط PS Remoting امن و کدگذاری شده است جای نگرانی وجود ندارد اما پیشنهاد می شود در اسکریپت های خودکار از این مهم اجتناب کنید.
پس از نصب فایلهای .pfx را به دلایل امنیتی حذف کنید:
PS C:\HELLODIGI> $Servers | Foreach-Object {Remove-Item -Path "\\$_\c$\remote.Company.loc.pfx"}
در این مرحله لازم است Thumbprint گواهینامه امنیتی نصب شده را دریافت و آن را با سرویس Management Service جایگزین نمائید. برای این کار به PSProvider مربوطه به IIS نیاز دارید. ماژول WebAdministration را با دستور زیر فراخوانی کنید:
PS C:\HELLODIGI> Invoke-Command -Session $Sessions {Import-Module WebAdministration}
Thumbprint گواهینامه امنیتی را دریافت کنید:
PS C:\HELLODIGI> Invoke-Command -Session $Sessions {$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where {$_.subject -like "*company*"} | Select-Object -ExpandProperty Thumbprint}
 
   تنظیمات قبلی را حذف کنید SSL Binding
 
 
{PS C:\HELLODIGI> Invoke-command -Session $Sessions {Remove-Item -Path IIS:\SslBindings\0.0.0.0!8172
تنظیمات جدید SSL Binding را اعمال کنید:
 
{PS C:\HELLODIGI> Invoke-Command -Session $Sessions {Get-Item -Path "cert:\localmachine\my\$cert" | New-Item -Path IIS:\SslBindings\0.0.0.0!8172
حالا شما آماده اتصال به سرور از طریق یک GUI دیگر هستید!

6- اتصال به سرور از طریق IIS Manager
پنجره مدیریت IIS را باز کنید و در صفحه اصلی در سمت چپ بر روی Connect to a server … کلیک کنید، نام سرور و مشخصات کاربری و رمز عبور را وارد نمائید. حال مشخصات شما و سرور جدید در سمت چپ ایجاد خواهد شد.

پایان
هر چند تنظیمات SSL ممکن است کمی پیچیده و با دردسر باشد اما کل منطق کار بسیار ساده است. شخصا به دلیل استفاده از PowerShell DSC این مراحل را مانند زمان قدیم تکرار نمیکنم. PowerShell Desired State Configuration این امکان را به شما می دهد تا تمامی تنظیمات مورد نیاز خود را فعال و تنظیم کنید. پیشنهاد می کنم از این امکان حتما بازدید و استفاده نمائید.
 
 

 نحوه بکاپ گیری از SQLServer توسط PowerShell

آموزش نصب PHP در IIS ویندوز سرور

آموزش به اشتراک گذاری پورت USB در ماشین مجازی (Hyper-V – VmWare Esxi)

آموزش مدیریت Windows Server 2012 - Core Mode - بخش دوم

نحوه نصب ویندوز سرور 2012 نسخه Core - بخش اول

 

تمام حقوق سایت برای سلام دیجی و نويسندگان آن محفوظ می باشد