إذا كنت تقوم بتشغيل أوامر عن بُعد بالفعل باستخدام إشارات برمجة PowerShell (PSRemoting) ، فستعلم مدى سهولة هذه الميزة. بإمكانك الاتصال بجهاز كمبيوتر أو أكثر عن بُعد وإدارتها كما لو كانت محلية. تعتمد PSRemoting على إدارة Windows عن بُعد (WinRM) لتحقيق ذلك ، وإذا لم تكن تستخدم WinRM عبر SSL ، فقد تفتح نفسك لبعض مشاكل الأمان.
في هذا البرنامج التعليمي العملي ، ستتعلم كيفية إعداد نظام التشغيل Windows على العميل والخادم لاستخدام WinRM عبر HTTPS (SSL) وكيفية استخدام الشهادات للمصادقة عند استخدام WinRM عبر HTTPS.
المتطلبات المسبقة
إذا كنت ترغب في متابعة هذا البرنامج التعليمي ، تأكد من توفر ما يلي:
- A Windows 7+ or Server 2008 R2 machine to serve as the client machine. This tutorial will use Windows 10.
- A Windows 7+ or Server 2008 R2+ machine to serve as the server machine. This tutorial will use Windows Server 2019.
- الوصول إلى حساب إداري محلي أو حساب بحقوق إدارية محلية على كل من العميل والخادم.
- إعداد خدمات شهادة Active Directory (ADCS) للبنية التحتية للمفتاح العام (PKI). سيكون من المفيد تنفيذ ADCS للاستخدامات الإنتاجية ، ولكنه اختياري لهذا البرنامج التعليمي والاختبار. سيفترض البرنامج التعليمي أن تم إعداد PKI كمؤسسة أو مؤسسة فردية.
لماذا استخدام WinRM عبر SSL؟
تستخدم PSRemoting، كواجهة WinRM، وتتيح لك إدارة أجهزة العميل عن بُعد. بمجرد أن ينشئ PSRemoting جلسة عبر WinRM، يقوم بتشفير جميع الاتصالات من العميل إلى الخادم. علاوة على ذلك، إعداد إعداد PSRemoting بدون HTTPS سهل نسبيًا.
إذا قام PSRemoting بتشفير جلسة الاتصال بالفعل، فلماذا تتعب نفسك في إعداد شيء مثل ADCS وإدارة الشهادات عندما تكون بالفعل مشفرة؟
لأنه خلال عملية المصادقة، يمكن إرسال بيانات الاعتماد بتنسيقات غير آمنة اعتمادًا على نوع المصادقة المستخدم.
أحد أسهل الطرق لجعل PSRemoting أكثر أمانًا هو استخدام WinRM عبر HTTPS بدلاً من HTTP. يحتوي HTTPS على اتصالك بالكامل، بما في ذلك عملية المصادقة، ضمن طبقة التشفير التي يستخدمها WinRM بالفعل. كما يوفر HTTPS في الوقت نفسه وسيلة للتحقق من أن الخادم الذي تتصل به هو ما تعتقده.
تكوين WinRM باستخدام شهادة ذاتية الإصدار
دعنا ننتقل الآن إلى التجارب. في الحيلة الأولى، ستتعلم كيفية إعداد تشفير اتصال PSRemoting بـ WinRM عبر SSL باستخدام شهادة ذاتية الإصدار.
استخدام شهادة موقعة ذاتيًا هو وسيلة رائعة لإعداد بيئة اختبار دون القلق بشأن نظام الشهادات العامة كـ ADCS. عند استخدام شهادة موقعة ذاتيًا، تقوم بإنشاء شهادة يقوم الخادم نفسه بتوقيعها والتي تعبر ببساطة عن ثقته بنفسه.
توجد الشهادات لأداء مهمتين عادة؛ التحقق من هوية الاتصال وتشفيره. باستخدام شهادة موقعة ذاتيًا، ستنفذ فقط وظيفة التشفير. للتحقق من هوية الخادم، يجب عليك دائمًا استخدام شهادات المصدر العامة. توفر شهادات المصدر العامة مصدرًا واحدًا للثقة بدلاً من الاضطرار للثقة في كل شهادة موقعة ذاتيًا بشكل فردي يدويًا.
إعداد WinRM عبر SSL باستخدام شهادة موقعة ذاتيًا يتطلب أربع خطوات رئيسية:
- إنشاء شهادة موقعة ذاتيًا على الجهاز الهدف.
- تكوين خادم WinRM (المستمع) لاستخدام الشهادة الموقعة ذاتيًا للمصادقة.
- فتح المنافذ المناسبة في جدار حماية ويندوز على الجهاز الهدف.
- تنفيذ أمر لبدء اتصال عن بُعد على العميل باستخدام أمر PowerShell مثل
Enter-PSSession
.
لنذهب الآن إلى كل خطوة.
إنشاء شهادة موقعة ذاتيًا
الخطوة الأولى هي إنشاء شهادة موقعة ذاتيًا على الخادم. عند الاتصال، ستستخدم PSRemoting هذه الشهادة لتشفير جميع الاتصالات.
أثناء التواجد على ServerB مع فتح وحدة التحكم Windows PowerShell بصلاحيات المسؤول، قم بتشغيل الأمر New-SelfSignedCertificate
كما هو موضح أدناه. تشغيل الأمر التالي يولد شهادة لـ ServerB.domain.com في مخزن الشهادات الشخصية للجهاز المحلي

يجب أن يكون البرمتر Subject
هو الاسم النطاق الكامل للخادم. يستخدم WinRm البرمتر للتحقق من هوية الخادم.
حتى إذا كان الخادم في مجموعة عمل، يجب دائمًا توفير اسم نطاق، على سبيل المثال، domain.com أو lab.local. عند الاتصال بجهاز الوجهة، يجب أن يتطابق اسم DNS الذي تتصل به مع هذا الاسم الفرعي، وإلا فسيتم فشل الاتصال.
يسمح لك البرمتر TextExtension
بتعريف استخدام المفتاح للشهادة (2.5.29.37
)، والذي يحدد لماذا يسمح به استخدام الشهادة. قم بتعريف استخدام المفتاح لـ مصادقة الخادم ({نص}1.3.6.1.5.5.7.3.1
) لضمان أن الشهادة يمكن استخدامها فقط لمصادقة هوية الخادم.
بعد تشغيل الأمر
New-SelfSignedCertificates
، سيعيد بصمة الشهادة التي تم إنشاؤها. قم بحفظ هذا البصمة حيث ستحتاج إليها في الأمر التالي.
تكوين مستمع WinRM
بمجرد إنشاء شهادة الخادم الذاتية على الخادم، ثم قم بتكوين الاستماع لـ WinRm لبدء استخدام تلك الشهادة للمصادقة. للقيام بذلك، استخدم أمر “winrm create” كما هو موضح أدناه.
تُبلغ القيمة “Address=*” في الأمر أدناه الاستماع بأن يستمع المستمع إلى أي عنوان IP مكون في الخادم. إذا كان لدى الخادم العديد من عناوين IP مكونة، يمكنك تعريف عنوان IP محدد هنا.
تأكد من استبدال عنصر النص “
” ببصمة الإبهام المُرجعة في الخطوة الأخيرة.

فتح منفذ جدار الحماية SSL لـ WinRM
بعد ذلك، إذا كنت تستخدم جدار الحماية لنظام التشغيل Windows، ستحتاج إلى السماح بحركة مرور HTTPS الواردة إلى الخادم عبر منفذ HTTPS الافتراضي “5986”.
افتح منفذ جدار الحماية لـ WinRM عبر HTTPS باستخدام PowerShell عن طريق تشغيل الأمر أدناه.
الاتصال بالخادم عبر SSL
لقد قمت الآن بتكوين خادم Windows البعيد لقبول اتصالات WinRM عبر SSL. في هذا الوقت، عُد إلى العميل وقم بتنفيذ أي أوامر PSRemoting تود اختبارها. على سبيل المثال، يمكنك تجربة cmdlet “Enter-PSSession” أو “Invoke-Command”. فقط الآن، يختلف الاتصال قليلاً عن الاتصال الافتراضي عبر HTTP.
يتطلب الاتصال عبر HTTPS عادةً معلمة واحدة فقط UseSSL
. تُخبر هذه المعلمة الأمر بالبحث عن مستمع WinRM عبر HTTPS بدلاً من مستمع HTTP كما يفعل بشكل افتراضي. تتوفر المعلمة UseSSL
في المزيد من أوامر PSRemoting.
للاختبار، قم بتشغيل Enter-PSSession
وتقديم اسم النطاق الكامل للخادم كما تم تعريفه بواسطة موضوع الشهادة الموقعة ذاتيًا، وكائن PSCredential لتحديد اسم المستخدم وكلمة المرور، وأخيرًا، مفتاح التبديل للمعلمة UseSSL
.
إذا قمت بتشغيل الأمر السابق، ستتلقى رسالة خطأ نظرًا لأنك قمت بتكوين مستمع WinRM على الخادم لاستخدام شهادة موقعة ذاتيًا. عندما يحاول العميل PSRemoting المصادقة على الخادم، سيحاول التحقق من صحة الشهادة، ولكنه لا يستطيع ذلك. فشهادة موقعة ذاتيًا ليس لديها سلسلة ثقة يمكن للأمر أن يتبعها ويفشل.

لاختراق الخادم بشهادة ذاتية التوقيع ، يجب عليك تجاوز فحص ثقة الشهادة. يمكنك القيام بذلك عن طريق إنشاء خيار PSSessionOption يسمى SkipCACheck
باستخدام cmdlet New-PSSessionOption
وتمريره إلى الأمر كما هو موضح أدناه.
يمكنك تعريف العديد من كائنات PSSessionOption المختلفة لإضافة خيارات لاتصالك عن بُعد التي لم يتم تضمينها في cmdlet
Enter-PSSession
مباشرةً.
حاول الاتصال مرة أخرى ويجب أن يطلب PowerShell الآن بيانات اعتماد. بمجرد تقديمها ، يجب أن تتصل الآن بالخادم باستخدام WinRM عبر SSL!
تكوين WinRM بشهادة موقعة من السلطة الشهادة
إذا كنت تنوي استخدام PSRemoting باستخدام WinRM في الإنتاج وترغب في البقاء آمنًا قدر الإمكان ، فيجب أن تركز على WinRM عبر SSL باستخدام شهادة بتوقيع من السلطة الشهادة (CA).
الشهادات الموقعة بواسطة السلطة الشهادة تحتفظ بسلسلة ثقة وأكثر أمانًا من الشهادات ذاتية التوقيع البسيطة لأنها توثق هوية مصدر الشهادة.
إذا كنت في بيئة Active Directory ، فإن أحد أكثر الطرق شيوعًا لإعداد CA هو باستخدام ADCS. باستخدام ADCS ، يمكنك نشر الشهادات على الأجهزة وتكوين WinRM لاستخدام تلك الشهادات.
سيفترض هذا البرنامج التعليمي أن لديك بالفعل تكوين ADCS وأنه يعمل في بيئتك.
لإعداد سريع ، يمكنك اتباع توثيق Microsoft ، ولكن لنشر الإنتاج ، يجب أن تبحث جيدًا في التكوين حيث تكون سلطة الشهادة في قلب جهود التشفير للمؤسسة.
إنشاء طلب الشهادة
الخطوة الأولى في استخدام شهادة صادرة عن السلطة المصدقة هي إنشاء الشهادة. لإنشاء الشهادة ، يجب عليك أولاً إصدار طلب شهادة باستخدام طلب توقيع شهادة (CSR). بمجرد إنشاء هذا الطلب ، يمكن إرساله إلى السلطة المصدقة لإصدار الشهادة.
ستعمل خطوات هذا القسم في حالة نشر ADCS عندما تكون سلطة الشهادة المؤسسية أو سلطة شهادة مستقلة. إذا كنت تستخدم سلطة شهادة مؤسسية متكاملة مع AD ، فيمكنك تسريع تسجيل الشهادات دون القيام بالخطوات في هذا القسم باستخدام التسجيل التلقائي للشهادة أو قوالب الشهادة.
بينما تكون على الخادم (ServerB في هذا البرنامج التعليمي)، قم بإنشاء CSR:
- تشغيل certlm.msc لفتح مدير شهادات Windows.
2. انقر بزر الماوس الأيمن على المخزن الشخصي واختر جميع المهام —> العمليات المتقدمة —> إنشاء طلب مخصص.
3. بالنسبة لهذا البرنامج التعليمي، اترك جميع الحقول كما هي الافتراضي حتى تصل إلى صفحة معلومات الشهادة الموضحة أدناه. عندما تصل هنا، انقر على القائمة المنسدلة التفاصيل واختر الخصائص.

4. انقر على علامة التبويب الموضوع وغير النوع إلى الاسم الشائع.
5. الآن أدخل اسم المجال المؤهل بالكامل للخادم إذا كان متصلًا بمجال أو مجرد اسم المضيف إذا لم يكن كذلك وانقر على إضافة.

لاحظ أنه يجب استخدام الاسم الشائع للاستخدام مع WinRM SSL listener. يمكن تضمين الخيارات الأخرى في القائمة ولكنها ليست مطلوبة لهذا التنصيب.
6. انقر على علامة التبويب التمديد.
7. إذا كنت لا تستخدم المصادقة القائمة على الشهادة والتي ستتم تغطيتها في وقت لاحق، قم بتوسيع رأس Extended Key Usage وأضف مصادقة الخادم. يخبر هذا النوع من استخدام المفتاح ويندوز بأنه يجب استخدام الشهادة لمصادقة الخادم. تشمل الخيارات الأخرى مصادقة العميل وتوقيع الكود وتشفير المستندات.
8. إذا كنت ترغب في إعداد المصادقة القائمة على الشهادة، تأكد من اختيار مصادقة العميل كما هو موضح أدناه.

9. بعد ذلك، انقر فوق علامة التبويب المفتاح الخاص ولاحظ خيارات المفتاح. قم بتغيير حجم المفتاح الافتراضي من 1024 إلى 2048 على الأقل لتعزيز أمان زوج المفاتيح.
هناك أيضًا موفرين تشفير أقوى متاحين في ويندوز، ولكن قد تواجه توافقًا غير متوافق مع البرامج القديمة.
10. أغلق نافذة خصائص الشهادة واحفظ إعداداتك بالنقر على موافق وانقر على التالي للمتابعة مع التعليمات.
11. الآن قم بتوفير مسار لإخراج طلب الشهادة حيث يمكنك استرداده لاحقًا وانقر على إنهاء.
بمجرد الانتهاء، يجب أن يكون لديك ملف طلب الشهادة.
طلب شهادة
بمجرد إنشاء الطلب، ستحتاج الآن إلى إرسال طلبك إلى مركز الشهادات الخاص بك، الذي سيقوم بإنشاء الشهادة. للقيام بذلك:
- انتقل إلى خادم ADCS الخاص بك على الرابط http://<اسم الخادم بالمسار الكامل>/certsrv/certrqxt.asp.

2. قم بفتح ملف طلب الشهادة الذي تم إنشاؤه سابقًا باستخدام برنامج notepad وانسخ النص من ملف طلب الشهادة إلى مربع الطلب. لا يلزم أي شيء لـ سمات إضافية لهذه الشهادة.
3. انقر فوق إرسال. سيتم بذلك إرسال طلبك إلى السلطة الإصدارة للشهادة. يجب أن يعرض لك معرف الطلب ، والذي سيكون مطلوبًا لاحقًا. احفظ هذا! ستحتاجه لاحقًا.
4. الآن اتصل بخادم السلطة الإصدارة المتكامل في بيئة ADCS الخاصة بك باستخدام مدير الشهادات في نظام التشغيل Windows على جهاز الكمبيوتر المحلي الخاص بك أو عبر RDP عن طريق تشغيل certsrv.msc.
5. انقر فوق الطلبات المعلقة.

6. انقر بزر الماوس الأيمن على الطلب المعلق ، ثم انقر فوق جميع المهام، ثم انقر فوق إصدار. سيتم بذلك الموافقة على الطلب الذي قمت بتقديمه استنادًا إلى معرف الطلب من الخطوة السابقة.
تسجيل الشهادة
الآن بعد أن قمت بإصدار شهادة على السلطة الإصدارة ، حان الوقت لتسجيل الشهادة على الخادم الذي تقوم بتكوين WinRM عليه. للقيام بذلك:
- من الخادم الذي تقوم بإعداد WinRM عبر SSL عليه ، انتقل إلى http://<اسم الخادم الكامل>/certckpn.asp. يجب أن ترى طلب شهادة واحد معلق.

يمكنك استرداد الشهادة العامة من جهاز آخر إذا لزم الأمر ، ولكن البدء من الخادم الذي تقوم بإعداده لـ WinRM عبر HTTPS يبسط العملية.
2. حدد الطلب الذي قدمته من القائمة وقم بتنزيل سلسلة الشهادات. يجب عليك تنزيل سلسلة الشهادات بأكملها إذا كان الخادم الذي تقوم بتكوين WinRM عبر HTTPS يحتوي على سلطة اعتمادك كخادم جذر.

3. افتح ملف سلسلة الشهادات. يجب أن ترى شهادة للخادم الخاص بك، وأي شهادات سلطة اعتماد عليا في السلسلة. أدناه win2.lab.int هي الشهادة المطلوبة، و WIN2-CA هي الشهادة للسلطة الاعتماد التي أصدرت الشهادة لـwin2.lab.int.

4. قم بالنقر المزدوج على إحدى الشهادات، وفي الصندوق الذي يفتح، انقر على زر تثبيت الشهادة. نظرًا لأن هذه الشهادة ستستخدمها الخادم وليس مستخدم محدد، قم بتغيير الخيار إلى الجهاز المحلي.

5. استمر في المتابعة عبر الإرشاد مع الاحتفاظ بكل شيء على الإعدادات الافتراضية. يجب أن تضع الإعدادات الافتراضية الشهادة في مخزن الشهادات الموثوقة.
6. الآن كرر الخطوات 3-5 لكل شهادة أخرى في القائمة. إذا كان لديك أكثر من شهادة واحدة، تأكد من وضع جميع الشهادات الأخرى في مخزن سلطات الشهادة الوسيطة.
إنشاء وإعداد مستمع WinRM عبر HTTPS
الآن بعد تثبيت جميع الشهادات، حان الوقت لتكوين WinRM على الخادم الخاص بك لاستخدام تلك الشهادة للمستمع.
مع فتح PowerShell على خادم WinRm:
- قم بتشغيل الأمر أدناه لإعداد استماع WinRm تلقائيًا. يقوم أمر
winrm
بذلك عن طريق البحث في مخزن الشهادات المحلي للجهاز عن شهادة تتطابق مع متطلبات WinRM.
2. جدار الحماية في Windows سيحظر افتراضيًا منفذ WinRM HTTPS رقم 5986
. لضمان السماح لجدار الحماية بمنفذ الوصول الوارد رقم 5986
, قم بتشغيل الأمر التالي في PowerShell:
اختبار اتصال WinRM SSL
في هذه المرحلة، أنت مستعد للاتصال. باستخدام cmdlets PSRemoting المفضلة لديك مثل Invoke-Command
أو Enter-PSSession
، اتصل بالخادم واستخدم معامل UseSSL
.
تأكد دائمًا من أن قيمة معامل
ComputerName
تتطابق تمامًا مع الاسم الشائع الذي تم توفيره أثناء إنشاء الشهادة. إذا حاولت الاتصال باسم مضيف مختلف أو ربما بعنوان IP للمضيف، ستتلقى خطأ عدم تطابق الشهادة الذي سيتسبب في فشل الاتصال.
إعداد مصادقة قائمة على الشهادات
حتى الآن، يجب أن يكون لديك بالفعل استماع WinRM معتمد على HTTPS. إذا كان الأمر كذلك، يمكنك أيضًا استخدام شهادة مصادقة المستخدم للمصادقة كمستخدم محلي على الخادم البعيد. استخدام شهادة المستخدم هو أحد أكثر الطرق أمانًا ولكنه يستغرق وقتًا لإعداده. ستجد أيضًا أنه يتطلب الكثير من العمل المتكرر حيث تكون كل شهادة فريدة لجهاز العميل الفردي.
تعمل مصادقة قائمة على الشهادات فقط مع حسابات المستخدمين المحليين وليس مع حسابات المجال.
بنفترض أنك طلبت شهادة للمصادقة على العميل كما هو مشروح في القسم “إنشاء طلب الشهادة”. استمر في القراءة:
تمكين مصادقة الشهادة وربط المستخدم على الخادم
- على الخادم، قم بتشغيل أمر “Set-Item” للسماح بالمصادقة على أساس الشهادة.
ثم، قم بتشغيل الأمر “Get-ChildItem” للنظر في متجر “مسؤوليات الجهة الشهادة الموثوق بها” للعثور على “بصمة الإصدار” التي أصدرت شهادة المصادقة على العميل. للقيام بذلك، قم بتصفية الشهادات حسب الموضوع الذي يحتوي على اسم سلطة الإصدار الخاصة بك.
ثم، قم بتشغيل الأمر التالي حيث يكون “SubjectName” هو الموضوع الخاص بشهادة المستخدم التي قدمتها عند إنشاء الشهادة.
تعتبر “CAThumbprint” هي بصمة سلطة الإصدار التي تم جمعها باستخدام الأمر السابق، وبعد ذلك يتم طلب بيانات الاعتماد لاسم المستخدم وكلمة المرور للمستخدم المحلي الذي سيتم استخدامه للمصادقة على أساس الشهادة.
اختبار المصادقة على أساس الشهادة
الآن بعد إعداد تعيين الشهادة للمستخدم، استخدم الشهادة على جهاز العميل للمصادقة دون توفير بيانات الاعتماد.
على العميل في PowerShell، احصل على بصمة الشهادة الخاصة بالعميل عن طريق البحث في متجر الشهادات الشخصية.
ثم قم بتحديد بصمة الشهادة في معامل “CertificateThumbprint” لأمر PSRemoting كما هو موضح أدناه.
لاحظ أنه نظرًا لأن المصادقة المعتمدة على الشهادة يمكن استخدامها فقط مع مستمع HTTPS ، فإن
-UseSSL
يعتبر ضمنيًا ، على عكس طرق المصادقة الأخرى حيث تحتاج إلى تحديد استخدام SSL.
الخطوات التالية
الآن بعد أن تعلمت كيفية إعداد WinRM عبر SSL ، تعرف على المزيد حول PSRemoting في منشورنا PowerShell Remoting: The Ultimate Guide!
هل ترغب في معرفة المزيد عن PowerShell بشكل عام ، بما في ذلك الكثير عن PSRemoting؟ تحقق من PowerShell for Sysadmins, the book!