منافذ WinRM: إعدادات الافتراضية ودليل التخصيص

WinRM وPowerShell Remoting هما ميزة حاسمة عند إدارة أجهزة الكمبيوتر البعيدة التي تعمل بنظام Windows. تشبه WinRM ، مثل غيرها من الخدمات، في الاستماع على منافذ محددة في ظروف محددة. في هذا البرنامج التعليمي، تعرف على تلك المنافذ في WinRM وحتى كيفية تغييرها إذا لزم الأمر.

ذات الصلة: PowerShell Remoting: دليل النهائي

مستمع WinRM

أحد أهم أجزاء WInRM (والمنافذ التي يعمل عليها) هو مستمع WinRM.

يعتبر المستمع WinRM خادم ويب في جوهره. يتفاعل مع HTTP و HTTPS وفي الأيام القديمة قبل Windows 7 كان يستخدم حتى افتراضيًا نفس المنفذ 80 والمنفذ 443 الذي تستخدمه معظم خوادم الويب.

المستمع يعمل كخدمة على جهاز الكمبيوتر الخاص بك وينتظر تأسيس الاتصالات، تمامًا كما يفعل خادم الويب العادي.

A WinRm listener can listen two different ways; HTTP or HTTPS. The WinRM port for HTTP is 5985 while the WinRm port for HTTPS is 5986, by default.

  • HTTP – المنفذ 5985
  • HTTPS – المنفذ 5986

ذات الصلة: PowerShell Remoting: دليل النهائي

أخطاء الاتصال بالمنافذ الخاطئة

وإذا لم تقم بإضافة قاعدة جدار الحماية عند تغيير المنفذ، ستحصل على نفس الرسالة حتى عند توفير المنفذ بهذه الطريقة.

تغيير منافذ WinRM

على الرغم من أن Microsoft توصي بالبقاء على المنافذ الاستماع الافتراضية لضمان التوافق وسهولة الاستخدام، يمكنك تغييرها. قد تكون هذه مفيدة في حالات تعارض المنافذ الافتراضية أو حظر الحماية الجدارية لاستخدام تلك المنافذ.

ربما لديك نظام مُعدَّل يُكوّن للاتصال بـ WinRM عبر منافذ مُخصَّصة. عندما تحاول الاتصال كالمعتاد، ستتلقى رسالة الخطأ التالية:

Failed WinRM connection due to wrong port

إذا كان الأمر كذلك، فمن الوقت لتغيير منفذ WinRM على جانب الخادم!

لتغيير منافذ WinRM، ستحتاج أولاً إلى معرفة ما إذا كان لديك بالفعل خدمة تستمع على تلك المنافذ.

تعقّب الاتصالات الحالية

أسهل طريقة لاكتشاف المنافذ التي يتم استخدامها على جهاز Windows هي استخدام أداة netstat الأداة. يقوم Netstat بفحص جميع المنافذ النشطة على النظام الخاص بك وإذا كانت نشطة، يُعيد العنوان IP والوجهة والمنفذ المستخدم.

لتتبع المنافذ الخاصة بالاستماع قبل تغيير WinRM، قم بتشغيل netstat -aon. مفاتيح -aon:

  • تظهر جميع الاتصالات النشطة (a)
  • تظهر معرف العملية للعملية التي فتحت الاتصال (o)
  • لا تحاول حل أي أسماء DNS لعناوين IP الوجهة (n)
Running netstat to find listening connections

إذا كان هناك خادم ويب يستمع على المنفذ 80، على سبيل المثال، سترى سطرًا حيث انتهى العنوان المحلي بـ :80 تحت العمود العنوان المحلي. هذا الصف هو المكان الذي سترى فيه PID أو مُعرّف العملية التي تستخدم الاتصال.

بمجرد معرفة رقم معرف العملية (PID)، يمكنك الإشارة إلى رقم معرف العملية للعثور على اسم العملية باستخدام شيء مثل أمر PowerShell Get-Process.

Running Get-Process to find process name

على الرغم من ذلك، يمكنك رؤية أعلاه أن اسم العملية هو فقط System. وهذا يعني أن العملية متكاملة إلى حد كبير داخل نظام التشغيل وربما تكون مدمجة في ويندوز.

ضبط منافذ توافق WinRM

يتمتع WinRM بميزة تسمى “منافذ التوافق” (compatibility ports). توجد منافذ التوافق لتكون متوافقة مع بعض الأنظمة القديمة التي تعمل فقط على المنافذ 80 للبروتوكول HTTP و443 للبروتوكول HTTPS. إذا كنت بحاجة لتغيير WinRM للاستماع على هذه المنافذ، قم بتمكين مستمعي التوافق.

بمجرد معرفتك أنه ليس لديك أي شيء آخر يعمل على منافذ 80 و 443، ضبط مستمعي WSMan لاستخدام منافذ التوافق (80 للبروتوكول HTTP و443 للبروتوكول HTTPS).

Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value $true
 Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpsListener -Value $true

ضبط WinRM للاستماع على أي منفذ

إذا كنت، لأي سبب من الأسباب، بحاجة إلى تكوين WinRM للاستماع على منفذ غير قياسي، فيمكنك ذلك أيضًا. للقيام بذلك:

  1. ابحث عن اسم المستمع. يمكنك القيام بذلك عن طريق تعداد جميع مستمعي WinRM باستخدام أمر Get-Item. الأمر أدناه يقوم بعرض جميع المستمعين (*) المثبتة حاليًا.
Get-Item WSMan:\localhost\Listener*
Getting all existing WinRm listeners

2. بعد ذلك، باستخدام اسم المستمع المعروض أعلاه، قم بتكوين كل مستمع باستخدام Set-Item وتوفير مسار المستمع ورقم المنفذ الذي ترغب في تغييره إليه.

Set-Item WSMan:\localhost\Listener\\Port -Value 

3. في هذه النقطة، يتم الاستماع إلى مستمعي WinRM على المنافذ الصحيحة، ربما يقوم جدار الحماية الخاص بنظام التشغيل Windows برفض أي اتصالات عن بعد إلى تلك المنافذ. تحتاج إلى فتح تلك المنافذ. للقيام بذلك، قم بتشغيل الأمر التالي. الكود New-NetFirewallRule أدناه يقوم بإنشاء قاعدة جدار حماية Windows للسماح بجميع الاتصالات الواردة ببروتوكول TCP إلى منفذ مخصص.

$FirewallParam = @{
     DisplayName = 'Custom WinRM Port Rule'
     Direction = 'Inbound'
     LocalPort = 
     Protocol = 'TCP'
     Action = 'Allow'
     Program = 'System'
 }
 New-NetFirewallRule @FirewallParam


ذات الصلة: تعطيل جدار الحماية في Windows: اكتشف الطرق العديدة

إذا كنت لم تقم بفتح منفذ جدار حماية Windows المناسب، فستحصل على رسالة مثل هذه عند محاولة الاتصال:

Failed WinRM connection due to Windows firewall

الاتصال بمنفذ مخصص باستخدام PSRemoting

الآن بعد أن قمت بإعداد وتكوين WinRM بنجاح على خادم WinRM، تحتاج إلى اختبار الاتصال بالعميل WinRM. للقيام بذلك يتطلب معلمة إضافية واحدة فقط؛ Port.

باستخدام أي من أوامر PSRemoting مثل Invoke-Command أو Enter-PSSession، قم بتحديد المعلمة Port والمنفذ المعد لإجراء اتصال بنجاح.

Enter-PSSession -ComputerName <hostname> -Port 1111
Successful WinRm connection


ذات الصلة: Invoke-Command: أفضل طريقة لتشغيل الأوامر عن بعد

Source:
https://adamtheautomator.com/winrm-port/