אם אתה כבר מפעיל פקודות רחוקות עם PowerShell Remoting (PSRemoting), אתה יודע כמה נוחה התכונה. אתה יכול להתחבר למחשבים רחוקים יותר מאחד ולנהל אותם כאילו הם היו מקומיים. PSRemoting תלוי ב-Windows Remote Management (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.
- גישה לחשבון מנהל מקומי או חשבון עם הרשאות מנהל מקומי על שני המחשבים – הלקוח והשרת.
- שירות ניהול תעודות אקטיביות (ADCS) עם תשתיות מפתח ציבורות (PKI) הקמו. זה יעזור אם תממש ADCS ליישומים פרודוקטיביים, אך זה אופציונלי לצורך המדריך והבדיקה. המדריך יניח שה-PKI מוגדר כ-CA ארגונית או עצמאית.
למה להשתמש ב-WinRM דרך SSL?
את פרוטוקול השלטון המרחוק, PSRemoting, משתמשים כבר כאשר משתמשים ב־WinRM ומאפשר לך לנהל מכונות לקוח מרחוק. פעם ש־PSRemoting מקים הפעלה על WinRM, הוא מצפה את כל התקשורת מהלקוח לשרת. גם תהליך ההגדרה ליישום PSRemoting בלי HTTPS די פשוט.
אם PSRemoting מצפה תקשורת הקשורה בכבר סופגנית, למה לעסוק בהגדרת משהו כמו ADCS וניהול תעודות כשכבר מסופקת הצפנה?
כי במהלך האימות, נתוני הזיהוי יכולים להישלח בתסדירים לא מאובטחים, תלוי ב־סוג האימות המשמש.
אחת הדרכים הקלות ביותר להפוך את PSRemoting ליותר מאובטח היא באמצעות השימוש ב־WinRM על HTTPS במקום HTTP. HTTPS מכסה את כל זרמי החיבור שלך, כולל אימות בתוך שכבת ההצפנה ש־WinRM משתמשת בה כבר. HTTPS גם מספק באופן סימולטני דרך לאמת שהשרת אליו אתה מתחבר הוא באמת מה שחושבים שהוא.
הגדרת WinRM עם תעודת אימות באופן עצמאי
ובוא נתקדם כעת להדגמות. למעשה, בתרומה הראשונה, תלמד כיצד להגדיר את הצפנת התקשורת של PSRemoting עם WinRm על SSL דרך תעודת אימות באופן עצמאי.
שימוש בתעודה בעצמך הוא דרך נהדרת להגדיר סביבת בדיקה מבלי לדאוג ל-PKI כמו ADCS. כאשר אתה משתמש בתעודה בעצמך, אתה יוצר תעודה שהשרת חותם בעצמו שבגדול מאשר על עצמו.
תעודות קיימות כדי לבצע שתי משימות בדרך כלל; אימות חיבור והצפנתו. שימוש בתעודה בעצמך מיישם רק את האחרון. כדי לוודא את זהות השרת, עליך תמיד להשתמש בתעודות שסופקו על ידי ה-PKI. תעודות שסופקו על ידי ה-PKI מספקות מקור יחיד של אמון לעומת צורך לסמוך על כל תעודה בעצמך באופן ידני.
הגדרת WinRM מעל SSL עם תעודה בעצמך מחייבת ארבע שלבים ברמה גבוהה:
- יצירת התעודה בעצמך על מכונת היעד.
- הגדרת ה-שרת ה- WinRM (המאזין) של האינטרנט כדי להשתמש בתעודה בעצמך לאימות.
- פתיחת הפורטים המתאימים בקיר האש של מכונת היעד של Windows.
- ביצוע פקודה כדי להתחיל חיבור מרחוק בלקוח באמצעות cmdlet של PowerShell כמו
Enter-PSSession
.
בואו נעבור כעת על כל אחד מהשלבים.
יצירת תעודה בעצמך
השלב הראשון הוא יצירת תעודה בעצמך על השרת. בעת התחברות, PSRemoting תשתמש בתעודה זו כדי להצפין את כל התקשורת.
בזמן שאתה נמצא על ServerB עם חלון PowerShell שפתוח כמנהל, הרץ את הפקודה New-SelfSignedCertificate
כפי שמוצג למטה. ביצוע הפקודה מטה יגרום ליצירת תעודה עבור ServerB.domain.com ב אחסון התעודות האישי של המכשיר המקומי.

הפרמטר Subject
אמור להיות שם התחום המושלם של השרת. WinRM משתמש בנושא כדי לאמת את זהות השרת.
אפילו אם השרת נמצא בקבוצת עבודה, תמיד ספק שם תחום, לדוג', domain.com או lab.local. כאשר אתה מתחבר למכשיר היעד, שם ה-DNS שאליו אתה מתחבר חייב להתאים בדיוק לשם זה, אחרת החיבור ייכשל.
ה-TextExtension
מאפשר לך להגדיר את שימוש המפתח (2.5.29.37
) של התעודה, שמגדיר מה ניתן לעשות עם התעודה. הגדר שימוש במפתח עבור אימות השרת ({text}1.3.6.1.5.5.7.3.1
) כדי לוודא שהתעודה יכולה לשמש רק לאימות זהותו של השרת.
לאחר שהפקודה
New-SelfSignedCertificates
מופעלת, היא תחזיר את טמפלייט התעודה שנוצרה. שמור על זה, כי תזדקק לו לפקודה הבאה.
הגדרת מאזין WinRM
כאשר יש לך את התעוזה החתומה עצמית על השרת, יש להגדיר את נגן WinRm להתחיל להשתמש בתעוזה זו לאמת. לכך, יש להשתמש בפקודה winrm create
כפי שמוצג למטה.
הפרמטר Address=*
בפקודה מסביר לנגן להאזין לכל כתובת IP שמוגדרת על השרת. אם יש לשרת מספר כתובות IP מוגדרות, ניתן להגדיר כתובת IP ספציפית כאן.
יש לוודא להחליף את התווית
<cert thumbprint here>
בסימול האצבע שחזר בשלב האחרון.

פתיחת יציאת הגזר SSL של WinRM
לאחר מכן, אם אתה משתמש בקיר האש של Windows, יש להרשות תעבורת HTTPS שנכנסת לשרת דרך יציאת HTTPS ברירת המחדל 5986
.
פתיחת יציאת הקיר ל-WinRM דרך HTTPS באמצעות PowerShell באמצעות הפקודה הבאה.
התחברות לשרת דרך SSL
כעת, יש להגדיר את שרת ה- Windows המרוחק לקבל חיבורי WinRM דרך SSL. בזמן זה, יש לחזור ללקוח ולהתחיל פקודות PSRemoting שברצונך לבדוק. לדוגמה, ניתן לנסות את הפקודות Enter-PSSession
או Invoke-Command
cmdlet. אך עכשיו, התחברות תתבצע בצורה מעט שונה מהחיבור הרגיל ב-HTTP.
התחברות דרך HTTPS דורשת כמעט תמיד פרמטר יחיד UseSSL
. הפרמטר הזה מספר לפקודה לחפש תקשורת WinRM באמצעות האזנן HTTPS בניגוד לאזנן HTTP כמו שהוא עושה באופן ברירת מחדל. הפרמטר UseSSL
זמין במספר פקודות PSRemoting נוספות.
לצורך בדיקה, הריץ את Enter-PSSession
וספק את שם הדומיין המלא של השרת כפי שהוגדר בנושא של תעודת האבטחה שנגזרה עצמית, אובייקט PSCredential להגדרת שם משתמש וסיסמה, ולבסוף, פרמטר המתג UseSSL
.
אם תריץ את הפקודה לעיל, תקבל הודעת שגיאה מאחר והגדרת את אזנן ה-WinRM על השרת להשתמש בתעודת אבטחה שנגזרה עצמית. בכל פעם שלקוח PSRemoting מנסה לאמת את הזיהוי שלו לשרת, הוא ינסה לאמת את התעודה ולא יצליח. תעודה שנגזרת עצמית אין לה שרשרת אמינות שבאמצעותה הפקודה יכולה לבדוק, ולכן הפעולה נכשלת.

להתחבר לשרת עם תעודה עצמית, עליך לדרוס את בדיקת האמון בתעודה. באפשרותך לעשות זאת על ידי יצירת אפשרות PSSessionOption בשם SkipCACheck
באמצעות פקודת New-PSSessionOption
ולהעביר אותה לפקודה כפי שמוצג למטה.
באפשרותך להגדיר עצמך אובייקטים שונים של PSSessionOption כדי להוסיף אפשרויות עבור החיבור המרוחק שלך שאינן כלולות בפקודת
Enter-PSSession
ישירות.
נסה להתחבר שוב ובפועל PowerShell צריך כעת לבקש ממך אישור לסיסמאות. לאחר שסיפקת, עליך כעת להתחבר לשרת באמצעות WinRM מעל SSL!
הגדרת WinRM עם תעודה חתומה של CA
אם אתה מתכוון להשתמש ב-PSRemoting באמצעות WinRM בסביבה פרודוקטיבית ורוצה לשמור ככל האפשר על האבטחה, עליך להתמקד ב-WinRM מעל SSL באמצעות תעודה שנחתמת על ידי מכון אישור (CA)..
תעודות שנחתמות על ידי מכון אישור מתחזקות שרשרת אמון והן יותר מאובטחות מתעודות עצמיות פשוטות מאחר והן מאמתות את זהות מוציא התעודה..
אם אתה נמצא בסביבת Active Directory, אחד הדרכים הנפוצות ביותר להגדיר מכון אישור היא עם ADCS. עם ADCS, באפשרותך להפיץ תעודות להתקנים ולהגדיר את WinRM להשתמש באותן תעודות.
המדריך הזה מניח שכבר הגדרת ADCS והופעלת בסביבתך.
להתקנה מהירה ניתן לעקוב אחר תיעוד של מיקרוסופט, אך לפרטיות המרכזית, עליך לחקור הגדרות מאוד, מאחר שרשות תעודות היא במרכז מאמצי ההצפנה של ארגון.
יצירת בקשת התעודה
השלב הראשון בשימוש בתעודה שהונפקה על ידי רשות תעודות הוא יצירת התעודה. כדי ליצור את התעודה, עליך תחילה להנפיק בקשת תעודה באמצעות בקשת החתימה של תעודת תעודה (CSR). לאחר שנוצר, ניתן לשלוח את בקשת ה-CSR הזו לרשות כדי להנפיק את התעודה.
שלבי פעולה של סעיפים אלו יעבדו גם באיחודים ADCS כאשר זהו CA של עסקים או CA עצמאי. אם אתה משתמש ב-AD-integrated enterprise CA, ניתן לקצר את הפעלת התעודות מבלי לעבור דרך שלבי פעולה אלו באמצעות אוטומציה בקבלת תעודות או תבניות תעודה.
בזמן שאתה על השרת (ServerB במדריך זה), צור את הבקשה לתעודה:
- הפעל את certlm.msc כדי לפתוח את מנהל התעודות של Windows.
2. לחץ ימני על חניין האישי ובחר כל המשימות —> פעולות מתקדמות —> צור בקשה מותאמת.
3. למדריך זה, השאר את כל השדות כברירת מחדל עד שתגיע לעמוד המידע על התעודה כפי שמוצג למטה. כאשר אתה מגיע לשם, לחץ על התפריט הנפתח של פרטים ובחר מאפיינים.

4. לחץ על לשונית הנושא ושנה את הסוג לשם רגיל.
5. עכשיו הזן את שם הדומיין המשותף של השרת אם הוא מחובר לדומיין או רק את שם המארח אם הוא לא, ולחץ על הוסף.

שים לב כי לשימוש עם נציג SSL של WinRM, עליך להשתמש בשם הרגיל. האפשרויות האחרות ברשימה יכולות להיות כלולות אך אינן דרושות להתקנה זו.
6. לחץ על לשונית ההרחבה.
7. אם אינך משתמש באימות המבוסס על תעודות שיתופרט בהמשך, הרחב את כותרת שימוש מורחב במפתח והוסף אימות שרת. סוג זה של שימוש במפתח מספר לווינדוס שהתעודה צריכה להשתמש בו לאימות של שרת. אפשרויות אחרות כוללות אימות לקוח, חתימת קוד, והצפנת מסמכים.
8. אם ברצונך להגדיר אימות המבוסס על תעודות, וודא שבחרת ב אימות לקוח, כפי שמוצג למטה.

9. לאחר מכן, לחץ על לשונית מפתח פרטי ושים לב ל אפשרויות המפתח. שנה את גודל המפתח ברירת המחדל מ-1024 לפחות 2048 כדי לחזק את אבטחת זוג המפתחות.
קיימים גם ספקי הצפנה חזקים יותר זמינים בווינדוס, אך יתכן שתתמודד עם חוסר תאימות לתוכנה ישנה.
10. סגור את חלון מאפייני התעודה ושמור את ההגדרות על ידי לחיצה על אישור ולחיצה על הבא להמשך עם הוראות.
11. כעת ספק נתיב לפלט את בקשת התעודה בו תוכל לאחזר אותה מאוחר יותר ולחץ על סיום.
כאשר התהליך הושלם, יש לך קובץ בקשת תעודה.
בקשת תעודה
לאחר שיצרת את הבקשה, עכשיו עליך לשלוח את הבקשה הזו לשרת ה-CA שלך, שיצור את התעודה. כדי לעשות זאת:
- נווט אל שרת ה-ADCS שלך בכתובת http://<server name FQDN>/certsrv/certrqxt.asp.

2. פתח את קובץ בקשת התעודה שנוצר לפני כן עם notepad והעתק את הטקסט מתוך קובץ בקשת התעודה אל תוך תיבת הבקשה. כלום אינו דרוש עבור תכונות נוספות עבור תעודה זו.
3. לחץ על שלח. זה ישלח את הבקשה שלך ל-CA. אז זה צריך להראות לך את מזהה הבקשה, שיהיה נדרש מאוחר יותר. שמור את זה! תצטרך את זה מאוחר יותר.
4. כעת התחבר לשרת CA שהוא חלק מסביבת ה-ADCS שלך באמצעות מנהל התעודות של Windows במחשב המקומי שלך או באמצעות RDP על ידי הפעלת certsrv.msc.
5. לחץ על בקשות בהמתנה.

6. לחץ על הבקשה בהמתנה עם העכבר הימני, לחץ על כל המשימות, ולחץ על מקבל. זה יאשר את הבקשה שהוגשה לאחרונה בהתבסס על מזהה הבקשה משלב הקודם.
רישום התעודה
עכשיו שהנפקת תעודה ב-CA, הגיע הזמן לרשום את התעודה בשרת שאתה מגדיר עליו את WinRM. כדי לעשות זאת:
- מהשרת שבו אתה מגדיר WinRM מעל SSL, נווט אל http://<שם השרת FQDN>/certckpn.asp. אתה צריך לראות בקשת תעודה ממתינה יחידה.

ניתן לאחזר את התעודה הציבורית ממכונה אחרת אם נדרש, אך התחלת התהליך מהשרת שאתה מגדיר ל-WinRM מעל HTTPS פשוטה את התהליך.
2. בחר בבקשה שלחת מהרשימה והורד את שרשרת התעודות certificate chain. עליך להוריד את כל שרשרת התעודות אם השרת שאתה מגדיר את WinRM דרך HTTPS משתמש ב-CA שלך כשרת שורש.

3. פתח את קובץ שרשרת התעודות. אתה צפה לראות תעודה עבור השרת שלך, וכל תעודת סמכות גבוהה יותר בשרשרת. מתחת ל-win2.lab.int נמצאת התעודה שביקשת, ו-WIN2-CA היא התעודה של ה-CA שהנפיקה את התעודה עבור win2.lab.int.

4. פתח כפול על אחת מהתעודות, ובחלון שנפתח, לחץ על הכפתור Install Certificate. מכיוון שהתעודה הזו תשמש על ידי השרת ולא על ידי משתמש ספציפי, שנה את האפשרות ל-Local Machine.

5. המשך דרך ההוראות, השאר הכל כברירת מחדל. ברירות המחדל אמורות לשים את התעודה באחסון התעודות של שרתי ה-WinRM.
6. כעת חזור על השלבים 3-5 עבור כל אחת מהתעודות האחרות ברשימה. אם יש לך יותר מתעודה אחת, וודא שכל התעודות האחרות מונחות באחסון התעודות האמצעיות.
צור והגדר את מאזין ה-WinRM דרך HTTPS
עכשיו שכל התעודות מותקנות, הגיע הזמן להגדיר את WinRM על השרת שלך להשתמש בתעודה זו עבור המאזין.
עם PowerShell פתוח בשרת WinRM:
- הריץ את הפקודה הבאה כדי להגדיר באופן אוטומטי את הסקור להאזנה של WinRM. הפקודה
winrm
עושה זאת על ידי חיפוש באחסון התעודות המקומי של המחשב עבור תעודה שמתאימה לדרישות WinRM.
2. חומת האש של Windows תחסום את פתח ה-HTTPS של WinRM שבנפותר במספר 5986
כברירת מחדל. כדי לוודא שחומת האש מאפשרת כניסה לפתח נכנס 5986
, הרץ את הפקודה הבאה בפוורשל:
בדיקת החיבור ל- WinRM SSL
בנקודה זו, אתה מוכן להתחבר. באמצעות הפקודות האהובות עליך להשתמש ב- PSRemoting כמו Invoke-Command
או Enter-PSSession
, התחבר לשרת והשתמש בפרמטר UseSSL
.
ודא תמיד שערך הפרמטר
ComputerName
מתאים בדיוק לשם המשותף המסופק במהלך יצירת התעודה. אם תנסה להתחבר לשם מחשב שונה או אולי לכתובת ה-IP של המארח, תקבל שגיאת התאמת תעודות שתגרום לכישלון בחיבור.
הגדרת אימות על בסיס תעודות
כעת, כבר עליך להגדיר מאזין WinRM להשתמש ב-HTTPS. אם כן, תוכל גם להשתמש בתעודת אימות משתמש כדי לאמת כמשתמש מקומי בשרת המרוחק. שימוש בתעודת משתמש הוא אחד הדרכים הבטוחות ביותר אך זה דורש זמן מה להגדיר. תגלה כי זה גם עבודה חוזרת הרבה כיוון שכל תעודה היא ייחודית למכונת הלקוח הפרטית.
אימות במבוסס תעודות פועל רק עם חשבונות משתמשים מקומיים ולא עם משתמשים בדומיין.
בהנחה שהגעת למדובר בקשת תעודה עבור אימות הלקוח כפי שמתואר בחלק יצירת בקשת התעודה, קרא כאן:
הפעלת אימות תעודה ומיפוי משתמש בשרת
- בשרת, הפעל את הפקודה
Set-Item
כדי לאפשר אימות על פי תעודה.
2. לאחר מכן, הרץ את הפקודה Get-ChildItem
כדי לראות את ספריית Trusted Root Certification Authorities ולמצוא את הטמבל המשויך לתעודת האימות של הלקוח. לעשות זאת, סנן את התעודות על פי הנושא שמכיל את שמו של ספק התעודות שלך.
3. הרץ את הפקודה למטה בה הפרמטר SubjectName
הוא הנושא של תעודת המשתמש שסיפקת כאשר יצרת את התעודה
הטמבל של ספק התעודות הוא הטמבל שנאסף עם הפקודה הקודמת, ואז שם המשתמש והסיסמה שנדרשים הם שם המשתמש והסיסמה המקומיים שיועשה בהם אימות על פי תעודה.
בדיקת אימות על פי תעודה
עכשיו שמיפוי התעודה למשתמש הוגדר, השתמש בתעודה על מכונת הלקוח כדי לאמת בלתי נדרשת תחתן נתוני הזיהוי.
ב- PowerShell של הלקוח, קבל את טמבל התעודה של הלקוח על ידי חיפוש באחסון התעודות האישיות.
עכשיו ציין את הטמבל בפרמטר CertificateThumbprint
לפקודת PSRemoting כמו בדוגמה למטה.
שים לב שמאחר ואימות על בסיס אישורים ניתן להשתמש בו רק עם מאזין HTTPS, השימוש ב־
-UseSSL
משמעי, להבדיל מאמצעי האימות האחרים בהם עליך לציין שימוש ב־SSL.
שלבים הבאים
עכשיו שלמדת כיצד להגדיר את WinRM על גבי SSL, למד עוד על PSRemoting בפוסט שלנו PSRemoting בפוורשל: המדריך האולטימטיבי!
רוצה ללמוד עוד על פוורשל באופן כללי, כולל המון דברים על PSRemoting? תבדוק פוורשל לסיסאדמינים, הספר!