יום שלישי, 20 באוגוסט 2013

חתימה דיגיטלית על סקריפטים ב PowerShell

עומרי זכאי בלוג  עומרי זכאי בלוג  עומרי זכאי בלוג  עומרי זכאי בלוג  עומרי זכאי בלוג



שלום חברים,

היום נכיר את אפשרות האבטחה ששיכללו לנו ב- PowerShell לאחר הפגמים שנמצאו ב DOS, אך לפני שניגש לעבודה חשוב שנבין את המשמעות של Power Shell Execution Policy  :

The Get-ExecutionPolicy cmdlet simply tells you which of the four execution policies (policies that determine which Windows PowerShell scripts, if any, will run on your computer) is currently in-force
פקודה להגדרה:
על-מנת לשנות את רמת האבטחה להרצת סקריפטים חתומים בלבד:
Set-ExecutionPolicy – ExecutionPolicy  - AllSigned   
עכשיו לא ניתן לטעון סקריפטים מכיוון שהם עדיין לא חתומים דיגיטלית...

ניגש לעבודה... 

1. תחילה ניצור תעודה שאתה ניתן לחתום דיגיטלית. במקרה שלנו כמובן שלא נרכוש תעודה מCA  מוסמך על מנת שכל העולם יכיר בנו. אלא נגש ל :
 ActiveDirectory Certificate Services Role  
יש ליצור תעודה מסוג: Code Signing שכאמור בעזרתה נחתום דיגיטלית...
2. עם ה User שאמור לקבל את התעודה ניכנס ל—MMC—Cartifictes  --Personal ונגיש בקשה חדשה לתעודה מסוג Code Signing.
3. עכשיו כשי לנו תעודה נוכל לחתום על הסקריפטים.
4. הפקודה  Get-Help About_Signing תיתן לנו מידע מצוין ודוגמאות על חתימה דיגיטלית..
5. נכניס למשתנה את התעודה שלנו:
[$cert = @<Get-ChilItem cert:\CurrentUser\My –codesigning>[0
6. עכשיו נחתום על הסקריפט שלנו:
Set-AuthenticaticodeSignature script.ps1 $cert

זהו! חתמנו דיגיטלית על הסקריפט ונותר לנו לפתוח את הסקריפט החתום...

היבטים של אבטחה:
קבצים זדוניים/האקרים שינסו לערוך את הסקריפט שלנו, אפילו ינסו לשנות תו אחד 
הם יגרמו לכך שהחתימה הדיגיטלית לא תהיה תקפה, החתימה בעצם לא תהיה תואמת.  לגורמים זדוניים לא תהיה אפשרות לחתום על הקובץ שלנו ללא התעודה הדיגיטלית...
לשמור את התעודה במקום מבטחים.
בסביבה רגישה חשוב מאוד לעבוד עם PowerShell במצב AllSigned.
מצבי האבטחה שבהם ניתן לעבוד ב- PowerShell:

Restricted - No scripts can be run. Windows PowerShell can be used only in interactive mode
AllSigned - Only scripts signed by a trusted publisher can be run
RemoteSigned - Downloaded scripts must be signed by a trusted publisher before they can be run
Unrestricted - No restrictions; all Windows PowerShell scripts can be run


לא לשכוח לחתום על הסקריפט הדיפולטיבי שעולה בטעינת PowerShell
מיקומו:                               %windir%\system32\Windows¬PowerShell\v1.0\profile.ps1

ניתן לקרוא עוד על קיסטום הקובץ:
http://technet.microsoft.com/en-us/magazine/2008.10.windowspowershell.aspx

בהצלחה (:

עומרי זכאי בלוג    עומרי זכאי בלוג    עומרי זכאי בלוג     עומרי זכאי בלוג

אין תגובות:

הוסף רשומת תגובה

תודה על תגובתך (: