Dacă luați aceste măsuri de securitate, excludeți posibilitatea de a executa scenarii care nu sunt autentificate de semnătura dvs. digitală în mediul PowerShell și, astfel, împiedicați atacurile atacatorilor de pe sistem. Vorbind despre acest lucru, am pornit de la faptul că cititorul este deja familiarizat cu mediul PowerShell
ARUBA INSTANT WI-FI: SIMPLĂ, PUTERNICĂ, DISPONIBILĂ
Unul dintre considerațiile importante care trebuie luate în considerare la implementarea scripturilor Windows PowerShell în contextul securității este necesitatea de a împiedica rularea neautorizată a scripturilor în sistem. În mod implicit, nu se efectuează niciun script în mediul PowerShell. Cu toate acestea, scripturile sunt un instrument eficient de administrare Windows, deci dacă utilizați PowerShell, este foarte probabil să le utilizați.
Scriptul PowerShell este un fișier text simplu cu extensie. PS1. Fișierul conține una sau mai multe instrucțiuni PowerShell care sunt executate atunci când fișierul script este apelat din consola. PowerShell oferă utilizatorului posibilitatea de a determina dacă script-urile sunt permise și, dacă da, care script-uri pot fi executate. Pentru a gestiona execuția scenariilor și a oferi un nivel mai ridicat de securitate a sistemului, trebuie:
- să genereze o politică de execuție PowerShell;
- creați un certificat X.509;
- certificați scriptul digital.
Formarea politicii de implementare
Politica de rulare PowerShell determină dacă script-urile sunt permise și dacă fișierele de configurare vor fi încărcate la pornirea shell-ului PowerShell. Pentru a forma o politică de execuție, trebuie să utilizați comanda compusă Set-ExecutionPolicy și să specificați cu ea unul dintre următorii parametri de execuție.
- Restricționat: fișierele de configurare PowerShell nu sunt încărcate și script-urile nu sunt executate. Acest parametru care oferă parametrii cei mai restrictivi se aplică în mod implicit. Ca urmare, după ce instalați PowerShell, execuția neintenționată a scripturilor, precum și încărcarea datelor de configurare sunt excluse. În același timp, puteți rula comenzi separate din consola PowerShell.
- AllSigned: toate scripturile și fișierele de configurare trebuie să fie certificate cu semnătura digitală a unui editor de încredere. Pentru a semna scriptul, trebuie să utilizați certificatul de semnare a codului. Așa cum se va arăta mai jos, un astfel de certificat poate fi creat independent.
- RemoteSigned: Toate scripturile și fișierele de configurare descărcate de pe Internet trebuie semnate digital. Cu toate acestea, script-urile stocate pe computerul dvs. pot fi executate, iar fișierele de configurare locale pot fi de asemenea descărcate dacă nu au o semnătură digitală.
- Fără restricții: toate scripturile sunt executate și toate fișierele de configurare sunt descărcate. Această opțiune este asociată cu cele mai puține restricții și, prin urmare, este asociată cu cel mai mare risc.
Astfel, dacă doriți să protejați sistemul, dar în același timp să oferiți posibilitatea de a rula scripturi și de a încărca fișiere de configurare, trebuie să definiți politica de execuție ca AllSigned. Pentru aceasta, tastați următoarea comandă în comanda PowerShell:
Crearea unui certificat X.509
Dacă parametrul AllSigned este specificat pentru politica de execuție, înseamnă că trebuie să semnați fișierele; cu alte cuvinte, aveți nevoie de un certificat de semnare a codului X.509. X.509 este un standard criptografic care definește formatul pentru astfel de dispozitive legate de securitate, cum ar fi certificate de chei publice și liste de certificate de revocare. Puteți achiziționa fie un certificat X.509 emis de un centru public de autentificare, fie puteți crea un centru de certificare și un certificat propriu. O descriere completă a standardelor X.509 și CA nu este direct legată de subiectul acestui articol. Cu toate acestea, vă voi explica cum vă puteți crea propriul centru de identitate locală și certificat.
Ca orice alt utilitar de linie de comandă, puteți rula programul Makecert pe o linie cu instrucțiuni PowerShell. De exemplu, când creați o autoritate de certificare (pe care trebuie să o faceți înainte de a începe să creați un certificat), trebuie să specificați numele utilitarului (Makecert), precum și setările necesare. În exemplul următor, creez un CA cu numele PowerShell CA din magazinul de certificate de bază:
Această comandă include un număr de parametri. Tabelul de mai jos conține o scurtă descriere.
Tabel. Parametrii comenzii Makecert utilizați în exemplu
Când executați această comandă, caseta de dialog Creare parolă cheie privată (ecranul 1) se deschide cu o solicitare de introducere a parolei.
Ecranul 1. Caseta de dialog Creare parolă cheie privată
După ce introduceți parola de două ori și apăsați butonul OK, se afișează ecranul Enter caseta de dialog cheie privată Parola (ecranul 2) pentru a introduce parola pe care tocmai l-ați introdus în caseta de dialog Creare parolă Codul privat.
Ecranul 2. Introduceți caseta de dialog Parolă cheie cheie privată
Când faceți clic pe OK în fereastra de avertizare Mesaj de securitate (cum ar fi cel prezentat în figura 3), apare pe ecran care conține un avertisment pe care aveți de gând să instalați autoritatea de certificare PowerShell CA.
Ecranul 3. Fereastra de avertizare de securitate
Când faceți clic pe Da, utilitarul Makecert va crea un centru de autentificare în magazinul local de certificate.
Ca și în cazul comenzii anterioare, această comandă include un număr de opțiuni Makecert. Descrierile acestor parametri sunt de asemenea prezentate în tabel. Trebuie remarcat faptul că am setat opțiunea -ss (care definește magazinul de certificate) la My, not Root, pe care l-am folosit la crearea autorității de certificare. Valoarea Me indică faptul că certificatul va fi plasat în magazinul de certificate din dosarul de stocare personal al utilizatorului curent. Stocarea utilizatorului curent este utilizată implicit. De asemenea, puteți utiliza opțiunea -sr LocalMachine pentru a plasa certificatul în magazinul de certificate pentru computerul local.
Când executați comanda Makecert pentru a crea un certificat, sistemul din nou solicită o parolă. Este vorba despre parola cheie privată pe care ați setat-o, creând un centru de certificare. Apoi, se creează un certificat în magazinul autorităților de certificare a certificatelor de încredere de la utilizatorul curent.
Puteți vizualiza certificatul în modulul de completare Certificări din Consola de administrare Microsoft (MMC; consultați ecranul 4).
Ecranul 4. Snap-in Certificatele MMC
Verificați scripturile PowerShell cu o semnătură
Afirmarea scenariului cu o semnătură este un proces simplu. Trebuie să luați comanda compusă Set-AuthenticodeSignature și să specificați fișierul de script care urmează să fie verificat, precum și certificatul de semnare a codului care va fi folosit pentru a valida fișierul. De exemplu, doriți să asigurați fișierul script C: \ Audit \ SecurityAudit.ps1, reprezentat în lista de fragmente A. Acest script afișează ultimele 20 de evenimente listate în jurnalul de securitate.
Următoarele instrucțiuni indică mai întâi fișierul script și certificatul, apoi execută comanda compusă Set-AuthenticodeSignature:
În prima instrucțiune, atribuim numele de fișier complet ca un șir de fișier $ variabilă. În a doua declarație, am folosi comanda Get-ChildItem pentru a citi certificatul de cod de semnare de la depozitul de certificate, și atribuie-l la $ CertificatAcreditat. Pentru a citi certificatul, specific cert ca ruta: \ CurrentUser \ My. Prefixul cert: este unitatea utilizată pentru a accesa magazinul de certificate. Următorul este CurrentUser, care indică directorul din interiorul magazinului de certificate. Parametrul meu specifică certificatele din dosarul Personal. Când se utilizează comanda compus Get-ChildItem pentru a citi certificatul, trebuie să includă, de asemenea parametru comutator -CodeSigningCert pentru a citi numai acele certificate care au autorizație de a semna codul.
În cazul în care depozitul de certificate meu conține mai mult de un certificat de cod de semnare, de $ variabila CertificatAcreditat va conține aceste certificate; În acest caz, va trebui să specificați certificatul dorit când se face trimitere la variabila $ cert. O modalitate de a face acest lucru este să adăugați indexul de obiect după numele variabilei. De exemplu, atunci când apelați primul certificat de cod de semnare este necesar să se utilizeze un link $ CertificatAcreditat [0], atunci când apelați al doilea certificat - .. Link $ CertificatAcreditat [1], etc. Dar dacă știți că există doar un singur certificat de cod de semnare, indicii în pătrat nu trebuie incluse paranteze.
Când executați un script care este semnat digital, sistemul vă va solicita să verificați securitatea executării acestuia. Puteți da o comandă care să nu execute niciodată acest fișier, să nu o executați de data aceasta, să o executați o dată sau întotdeauna. Dacă dați o comandă care să nu execute niciodată acest fișier sau să îl executați întotdeauna, atunci când încercați să porniți scriptul, sistemul nu vă va cere să verificați securitatea. În alte cazuri, atunci când încercați să rulați scriptul, veți primi o astfel de propunere.
Semnarea scriptului utilizând fișierul .pfx
Dacă utilizați un certificat personal pentru a semna fișiere, este posibil ca un program rău intenționat să semneze scenariul cu acesta, iar un script nedorit va fi executat. Puteți evita acest lucru și puteți oferi sistemului dvs. o protecție și mai fiabilă exportând certificatul de semnare a codului într-un fișier .pfx pentru a utiliza acest fișier mai târziu pentru a semna scriptul.
Pentru a exporta certificatul, deschideți modulul snap-in Certificate și găsiți certificatul (ecranul 4). Faceți clic dreapta pe certificatul de semnare a codului și selectați Toate sarcinile din meniul derulant, apoi faceți clic pe Export. Aceasta va lansa expertul Export Export. Pentru a exporta fișierul, urmați instrucțiunile expertului. Nu uitați să exportați cheia privată împreună cu certificatul și să furnizați protecție fiabilă. De asemenea, puteți specifica dacă să includeți toate certificatele în rută de certificare, să ștergeți cheia privată și să exportați proprietățile extinse. De asemenea, va trebui să specificați parola și locația fișierului. Pentru exemplele în cauză, am salvat fișierul în directorul C: \ Audit \ PS_Cert.pfx. După finalizarea procedurii de exportare a certificatului, asigurați-vă că îl eliminați din depozitul de certificate și asigurați-vă că fișierul .pfx se află într-un loc sigur.
După executarea instrucțiunilor expertului, totul va fi gata să semneze fișierul. Ca și înainte, primele două instrucțiuni trebuie să determine variabilele necesare - de exemplu, ca în fragmentul de cod următor:
În prima declarație, atribuie locației fișierului script variabilei $ fișier. Apoi, folosesc comanda Get-PfxCertificate pentru a citi fisierul .pfx si a-l stoca in variabila $ cert.
Când porniți a doua instrucțiune, sistemul vă solicită parola. Este vorba de parola pe care ați specificat-o când ați exportat certificatul într-un fișier. Ca și înainte, utilizați comanda Set-AuthenticodeSignature pentru a semna fișierul. Când executați comanda, specificați fișierele script și .pfx, ca în exemplul următor:
Asta-i tot ce se poate spune despre certificarea dosarului cu o semnătură digitală. După cum puteți vedea, după crearea scriptului și, eventual, exportul acestuia într-un fișier. pfx, procedura de autentificare a fișierelor nu trebuie să genereze probleme. Între timp, aceasta este o modalitate eficientă de a asigura securitatea sistemului. Orice administrator știe că nu puteți exagera, mai ales când vine vorba de protejarea scripturilor PowerShell.
Listarea. Semnarea fișierului script SecurityAudit.ps1
Distribuiți materialul împreună cu colegii și prietenii