אפשר PSRemoting: טכניקות מקומיות ומרוחקות

אף על פי שב-Windows, PSRemoting מופעל כברירת מחדל, זה לא תמיד מופעל. אם יש לך צורך לבדוק אם PSRemoting מופעל או להפעיל אותו ב-Windows, הדרכון הזה בשבילך.

הדרכון הזה ילמד אותך דרכים שונות להפעיל את PSRemoting במחשבים מקומיים ומרוחקים הרצים גם ב-Windows.

בואו נתחיל!

הפעלת PSRemoting עושה הרבה

אם אתה לראשונה מתמקד ב-PowerShell Remoting, ייתכן שתחשוב שהפעלה היא פשוטה וחד משמעית. אולי ראית כמה התייחסויות ל-cmdlet PowerShell של Enable-PSRemoting וחשבת שכשתריץ את זה, זה פשוט מדליף משהו. אתה טועה.

כשאתה שומע על הפעלת PSRemoting, יש הרבה משימות שחייבות להתרחש ברקע כדי שזה יקרה. מכיוון ש-PowerShell Remoting תלוי במערכות אחרות להפעלה תקינה, יש לו כמה תלות.

לדוגמה, ב-Windows, כשאתה מריץ את ה-cmdlet Enable-PSRemoting בלעדיו פרמטרים, הוא מבצע את כל המשימות הבאות:

  1. שירות WinRM מתחיל ומוגדר להתחיל באופן אוטומטי.
  2. יוצר קולטן על פתחי ה- WinRM המוגדרים כברירת מחדל – 5985 לתעבורת HTTP.
  3. מפעיל חריצי חולמה עבור WS-Management.
  4. מרשה את הקבוצות של תצורת ההפעלה של PowerShell עם WS-Management.
  5. מפעיל את תצורות ההפעלה של PowerShell.
  6. הגדרות ישיבות מרוחקות של PowerShell כך שתאפשר גישה מרחוק.
  7. אתחל שוב את שרת WinRM כדי ליישם את כל השינויים.

אתה שמח שאין לך לעשות את כל זה באופן ידני? למה להזכיר זאת אם פקודת ה-Enable-PSRemoting עושה את זה לך? מכיוון שישנם פעמים בהן משהו לא עובד ונדרש לאתר את הבעיה.

הגדרות ברירת המחדל של PSRemoting ב-Windows

מאז שנוצר PSRemoting ב-Windows, הוא מופעל כברירת מחדל אך לא באופן אוניברסלי וגם לא לכל גרסת מערכת ההפעלה של Windows.

בכל מערכות ההפעלה של Windows ללקוח, PSRemoting תמיד מושבת.

בשרתי Windows, PSRemoting מופעל לעיתים אך לא תמיד, תלוי בפרופיל הרשת שבו פועלת מערכת ההפעלה של Windows. להלן טבלה מועילה שתעזור לך לקבוע האם PSRemoting מופעל או לא במערכת ההפעלה של Windows שלך.

Operating System Network Profile PSRemoting
Windows Server 2008 R2 Domain/Private Disabled
Windows Server 2008 R2 Public Disabled
Windows Server 2012 & Newer Domain/Private Enabled
Windows Server 2012 & Newer Public Enabled within the same subnet

לעומת זאת, ב-Linux זה קל. PSRemoting אפילו לא קיים! אפילו PowerShell אינו מותקן כברירת מחדל. אם ברצונך להפעיל PSRemoting ב-Linux, עליך להגדיר אותו.

די דיבור, בוא נראה לך איך להתחיל להשתמש באמת ב-PSRemoting!

דרישות מוקדמות

אם אתה מתכנן לעקוב אחר הדוגמאות בסעיף זה, אנא וודא שיש לך את הדברים הבאים:

  • A Windows Server 2008 R2 or later machine
  • A local or Active Directory domain user in the local administrators group

הפעלת PSRemoting באופן מקומי

אחת הדרכים הקלות ביותר להפעיל את PSRemoting היא להשתמש בפקודת הבנויה Enable-PSRemoting. פקודה זו, כפי שלמדתם לעיל, היא קיצור דרך להגדרת מגוון שירותים שונים כדי להתאים את המערכת ל- PowerShell Remoting.

שימוש ב- Enable-PSRemoting Cmdlet

כאשר אתה מפעיל את הפקודה הזו ללא פרמטרים, היא תבצע פעולות שונות בהתאם למערכת ההפעלה שבה אתה פועל. בכל מערכת הפעלה של Windows נוכל לראות את אותן השלבים הבסיסיים. ה- PSRemoting מופעל, האזנן WinRM HTTP נוצרת, וכללי האש מופעלים. ההבדל העיקרי הוא בטיפול ברשתות ציבוריות.

על מערכת ההפעלה של שרת, כמו Windows Server 2019, כללי האש מאפשרים חיבורים מרחוק ממכשירים אחרים באותה הרשת. במערכת ההפעלה של הלקוח, כמו Windows 10, תקבל שגיאה המציינה כי הינך ברשת ציבורית.

אם אינך בטוח בקרה מה הפרופיל של הרשת בו מריצה Windows, הריץ את הפקודה הבאה:

Get-NetConnectionProfile

עליך להשתמש רק ב- PSRemoting ברשת מהימנה מאחר ובעצם הוא מפעיל שרת אינטרנט להאזנה לחיבורים מרחוק.

Get-NetConnectionProfile

אם אתה מסכים להריץ את PSRemoting בפרופיל רשת שונה מאשר פרטי או דומיין, אתה יכול לדלג על בדיקת פרופיל הרשת על ידי שימוש בפרמטר SkipNetworkProfileCheck. שימוש בפרמטר זה יפתח את יציאות WinRM בכללי האש של Windows.

Enable-PSRemoting -SkipNetworkProfileCheck

שימוש בפרמטר SkipNetworkProfileCheck יפתח את כללי האש של Windows עבור פקודות רימוט בפרופיל הרשת הנוכחי שלך אך יאפשר חיבורים מרחוק רק ממכונות באותה תת-רשת.

שני הפרמטרים שניתן להשתמש בהם יחד עם Enable-PSRemoting עובדים בשותפות. אלו הם הפרמטרים -Force ו־-Confirm. תוכל להשתמש ב־-Force כדי לדלג על כל ההודעות שהפקודה Enable-PSRemoting תן לך בדרך כלל. תוכל גם להשתמש ב־-Confirm:$false כדי לקבל את אותו תוצאה.

בשימוש בפקודה winrm quickconfig

הפקודה winrm quickconfig הייתה דרך פופולרית להגדיר את PSRemoting לפני שנוצרה הפקודה Enable-PSRemoting, אך היא עדיין יכולה להיות שימושית. אם תריץ רק את winrm quickconfig, היא תאפשר את שירות WinRM, תיצור קורא HTTP, ותפעיל את כללי הגנה בקירוב. כל אלו הם דברים שכבר נעשים על ידי Enable-PSRemoting, אך היא אינה מגדירה את המחשב כך שיהיה יכול לטפל בסשנים של PowerShell מרחוק.

במקום שבו הפקודות winrm מתאימות היא בהגדרת קוראי HTTPS. בזמן שניתן לעשות זאת ידנית, אם יש לך תעוזה מתאימה לקורא HTTPS, תוכל פשוט להפעיל את winrm quickconfig -transport:https והקורא וכללי הגנה של HTTPS יוגדרו.

הפעלת PSRemoting מרחוק

עד כה, למדת שניתן להפעיל את PSRemoting על ידי הפעלת פקודה במחשב מקומי. זה מוביל אותנו לסיטואציה דומה לבעיה "הכרח וביצוי". PSRemoting מאפשרת לך להפעיל פקודות במחשבים מרוחקים אך איך נפעיל פקודה מרחוק בלעדי PSRemoting?

יש שלוש דרכים: אמצעי השירות PSexec, WMI ו־Group Policy.

בשימוש ב-Psexec

PSExec הוא יישום מועיל שמאפשר לך להריץ פקודות מרחוק כמו ש-PSRemoting עושה. אך, PSexec משתמש בשיטת תקשורת שונה שאתה יכול להשתמש בה לטובתך!

עם PSexec, אתה יכול להריץ Enable-PSRemoting מהמחשב המקומי שלך באמצעות הפקודה הבאה. הפקודה למטה קוראת ל-psexec ומתחברת לשרת ServerB. לאחר מכן היא מתחילה תהליך PowerShell ומבצעת את הפקודה Enable-PSRemoting עם המתג -Force כדי לדלג על הציונים הרגילים.

.\psexec.exe \ServerB -h -s powershell.exe Enable-PSRemoting -Force

אפשרות זו טובה למקרים חד-פעמיים בהם יש צורך להפעיל את PSRemoting על מערכת מרוחקת, אך היא לא מושלמת להפעלת PSRemoting על הרבה מערכות ודורשת ממך להוריד את psexec.

בשימוש ב-WMI

לפעמים PSexec לא יעבוד. הרבה תוכנות אבטחה חוסמות את psexec אבל אל תדאג, יש לך גם WMI!

בשימוש ב-PowerShell ובפקודת ה-cmdlet Invoke-CimMethod. באמצעות פקודת ה-cmdlet Invoke-CimMethod, אתה יכול להוריש ל-PowerShell להתחבר למחשב המרוחק דרך DCOM ולהוריש שיטות.

מזל טוב עליך, WMI כוללת מחלקת Win32_Process שמאפשרת לך להוריש תהליכים. על ידי הוראת שיטת Create נגד ה-Win32_Process, Invoke-CimMethod מתחבר למחשב המרוחק, משיב את PowerShell ומריץ את Enable-PSRemoting כמצוגם למטה.

הדוגמה למטה יוצרת טבלת גיבוב עבור חיבור ההפעלה בו מצויין שם השרת, פרטי הזיהוי והפרוטוקול. לאחר מכן, בטבלת הגיבוב הבאה, מוגדרים הפרמטרים עבור Invoke-CimMethod. לאחר הרצת הפקודות אלה, מתווצר סשן CIM על פי פרוטוקול DCOM שמפעיל תהליך PowerShell המפעיל בתורו את הפקודה Enable-PSRemoting.

$SessionArgs = @{
     ComputerName  = 'ServerB'
     Credential    = Get-Credential
     SessionOption = New-CimSessionOption -Protocol Dcom
 }
 $MethodArgs = @{
     ClassName     = 'Win32_Process'
     MethodName    = 'Create'
     CimSession    = New-CimSession @SessionArgs
     Arguments     = @{
         CommandLine = "powershell Start-Process powershell -ArgumentList 'Enable-PSRemoting -Force'"
     }
 }
 Invoke-CimMethod @MethodArgs

במקרה שאתה משתמש בזה בסביבת דומיין והמשתמש שמבצע את הפקודות מספק הרשאות מנהל על השרת היעד, ניתן להשמיט את השורה Credential = Get-Credential.

שימוש במדיניות קבוצה

האפשרות האחרונה, ואולי הטובה ביותר לאפשר WinRM במקום רחב של מחשבים היא דרך מדיניות קבוצה. כאשר משתמשים במדיניות קבוצה, ניתן ליצור אובייקט מדיניות קבוצה אחת ולהחיל את המדיניות הזו על אלפי מחשבים יחד תוך כדי.

כל המחשבים חייבים להיות בדומיין Active Directory כדי להשתמש במדיניות קבוצה.

כדי להשתמש במדיניות קבוצה כדי לאפשר WinRM במקביל על מספר רב של מחשבים, עליך להגדיר שלושה פריטי הגדרות שונים:

  1. אפשר את שירות WinRM.
  2. פתח את יצירת האש הגומלין של Windows עבור WinRM.
  3. יצירת מאזין WinRM ואפשר חיבורים אליו.

התחברות RDP ראשית לשרת ברשת או, טוב יותר, התקן את חבילת כלי הניהול הרחוק של שרתים (RSAT) בעבודת המחשב שהוצטרף לדומיין. עכשיו יש לך את תוכנת מנהל מדיניות הקבוצה (GPMC) זמינה.

הפעלת שירות WinRM

כדי להפעיל את שירות WinRM בכל המחשבים היעד:

  1. פתח את GPMC וצור קבוצת מדיניות חדשה. בתוך ה-GPO החדש, נווט אל תצורת המחשב —> הגדרות Windows —> הגדרות אבטחה —> שירותי מערכת
  2. בחר את מנהל המרחוק של Windows (WS-Management).
  3. בלוח ההגדרות סמן את התיבה למעלה של הגדר הגדרת מדיניות זו
  4. בחר את לחצן הרדיו לצד אוטומטי כדי להגדיר את WinRM להתחיל אוטומטית בעת האתחול.
  5. לחץ על אישור כדי לאשר את ההגדרה.

פתיחת פתח הגן של חומת האש של Windows

בשלב הבא, עליך לפתוח את פתח ה-WinRM בכל המחשבים היעד. בעודך עדיין עורך את ה-GPO שנוצר מקודם:

  1. נווט אל תצורת המחשב —> הגדרות Windows —> הגדרות אבטחה —> גן הגן הגדול של Windows עם אבטחה מתקדמת.

2. לחץ על חוק נכנס חדש כדי ליצור חוק נכנס חדש.

3. בדף הראשון בחר ב מוגדר מראש ובחר ב ניהול מרחוק של Windows כמופיע למטה.

Windows Remote Management

4. בדף הבא, בדוק את התיבה עבור חוק הרשת דומיין/רשת פרטית אלא אם כן אתה יודע שרשתות ציבוריות משמשות בסביבות שלך ותצטרך לאפשר חיבורים מרחוק מהן.

Domain/Private network rule

5. בדף הבא השאר את ברירת המחדל לאפשר את החיבור ולחץ על סיום כדי ליצור את החוק.

צור את המאזין WinRM ורשימת הסינון

הפריט הסופי לתצורה להוספה לקבוצת המדיניות הוא יצירת המאזין WinRM והתרוממת החיבורים למאזין WinRM. הגדרה זו יוצרת מאזין WinRM עבור HTTP ומאפשרת חיבורים אליו מכתובות IP מסוימות או טווחי IP מסוימים.

תוך עדיין עריכת מדיניות ה-WinRM:

  1. נווט אל תצורת המחשב —> תבניות מנהל —> רכיבי Windows —> ניהול מרחוק של Windows (WinRM) —> שירות WinRM.

2. בחר מופעל עבור ההגדרה אפשר ניהול שירות מרחוק דרך WinRM.

3. בתחתית ההגדרה אפשר ניהול שרת מרחוק דרך WinRM, הזן את האסטריסק (*) עבור שני הסינונים IPv4 ו IPv6 כמצויין למטה.

שים לב שניתן לציין מארחים מרובים מופרדים בפסיק בכל רשימת סינון אם ידוע מראש אילו מארחים יתחברו לכל מחשבי היעד.

Allow remote server management through WinRM

4. לחץ אישור כדי לאשר את הגדרת GPO החדשה ביותר.

יישום ה-GPO

בזמן זה, ה-GPO צריך להיות נוצר ומוכן לשימוש. המשימה הסופית שעליך לבצע כעת היא ליישם את ה-GPO הזה על כל מחשבי היעד שברצונך לאפשר WinRM עליהם. לא תלמד כיצד להקצות GPO למחשבי יעד במדריך זה.

אם אינך יודע כיצד להקצות GPO לקבוצת מחשבים בפעילות הניהולית, כדאי לך לבדוק את מאמרגן זה.

שלבים הבאים

במדריך זה, למדת כיצד לאפשר PSRemoting בדרכים רבות. כיצד תאפשר PSRemoting ייתן להשתנות מאוד על פי הסביבה שלך ואני מקווה שכיסיתי את התרחיש שלך כאן.

עכשיו קח את מה שלמדת, צא לשם והתחל להשתמש ב-PSRemoting בסביבתך!

Source:
https://adamtheautomator.com/enable-psremoting/