Adam Automator

dacă rulați deja comenzi la distanță cu PowerShell Remoting (PSRemoting), știți cât de convenabilă este caracteristica. Vă puteți conecta la unul sau mai multe computere la distanță și le puteți gestiona ca și cum ar fi locale. PSRemoting depinde de Windows Remote Management (WinRm) pentru a face acest lucru și, dacă nu utilizați WinRM peste SSL, este posibil să vă deschideți la unele probleme de securitate.

în acest tutorial practic, veți învăța cum să configurați Windows pe client și server pentru a utiliza WinRM prin HTTPS (SSL) și cum să utilizați certificatele pentru a vă autentifica atunci când utilizați WinRM prin HTTPS.

cuprins

cerințe preliminare

dacă doriți să urmați împreună cu acest tutorial walkthrough, asigurați-vă că aveți următoarele:

  • o mașină Windows 7 + sau Server 2008 R2 pentru a servi ca mașină client. Acest tutorial va folosi Windows 10.
  • o mașină Windows 7 + sau Server 2008 R2 + pentru a servi ca mașină server. Acest tutorial va folosi Windows Server 2019.
  • accesul la un cont administrativ local sau la un cont cu drepturi administrative locale atât pe mașinile client, cât și pe cele server.
  • o infrastructură de chei publice Active Directory Certificate Services (ADCS) înființat. Ar ajuta dacă ați implementat ADC-uri pentru implementări de producție, dar este opțional pentru acest tutorial și testare. Tutorialul va presupune că PKI este configurat ca o întreprindere sau ca independentă.

de ce să folosiți WinRM peste SSL?

PSRemoting, scos din cutie, folosește WinRM și vă permite să gestionați mașinile client de la distanță. Odată ce PSRemoting stabilește o sesiune peste WinRM, apoi criptează toate comunicările de la client la server. De asemenea, procedura de configurare pentru implementarea PSRemoting fără HTTPS este destul de simplă.

dacă PSRemoting criptează deja comunicarea sesiunii, de ce să treci prin dificultatea de a configura ceva de genul ADC-urilor și de a gestiona certificatele atunci când este deja criptat?

deoarece în timpul procesului de autentificare, acreditările pot fi trimise în formate nesigure, în funcție de tipul de autentificare utilizat.

una dintre cele mai simple modalități de a face PSRemoting mai sigur este utilizarea WinRM peste HTTPS în loc de HTTP. HTTPS cuprinde întregul flux de conexiune, inclusiv autentificarea în stratul de criptare pe care WinRM îl folosește deja. HTTPS oferă, de asemenea, simultan o modalitate de a valida serverul la care vă conectați este ceea ce credeți că este.

Configurarea WinRM cu un certificat auto-semnat

să trecem acum la demonstrații. Pentru primul truc, veți învăța cum să configurați criptați comunicarea psremoting cu WinRm prin SSL printr-un certificat auto-semnat.

utilizarea unui certificat auto-semnat este o modalitate excelentă de a configura un mediu de testare fără a vă îngrijora de un PKI precum ADCS. Când utilizați un certificat auto-semnat, generați un certificat pe care serverul însuși îl semnează, care garantează practic pentru sine.

există certificate pentru a efectua în mod tipic două sarcini; autentificați o conexiune și criptați-o. Utilizarea unui certificat auto-semnat îl implementează numai pe acesta din urmă. Pentru a valida identitatea unui server, trebuie să utilizați întotdeauna certificate furnizate de PKI. Certificatele furnizate de PKI oferă o singură sursă de încredere vs.necesitatea de a avea încredere în fiecare certificat auto-semnat individual manual.

Configurarea WinRM prin SSL cu un certificat auto-semnat necesită patru pași la nivel înalt:

  1. crearea certificatului auto-semnat pe mașina de destinație.
  2. configurarea serverului Web WinRM al serverului (ascultător) pentru a utiliza certificatul auto-semnat pentru autentificare.
  3. deschiderea porturilor corespunzătoare pe Paravanul de protecție Windows al mașinii de destinație.
  4. executarea unei comenzi pentru a iniția o conexiune la distanță pe client folosind un cmdlet PowerShell ca Enter-PSSession.

să trecem acum prin fiecare pas.

crearea unui certificat auto-semnat

primul pas este generarea unui certificat auto-semnat pe server. La conectare, PSRemoting va utiliza acest certificat pentru a cripta toate comunicațiile.

în timp ce vă aflați pe ServerB cu o consolă Windows PowerShell deschisă ca administrator, rulați cmdletul New-SelfSignedCertificate așa cum se arată mai jos. Rularea comenzii de mai jos generează un certificat pentru ServerB.domain.com în magazinul de certificate personale al mașinii locale.

New-SelfSignedCertificate -Subject 'CN=ServerB.domain.com' -TextExtension '2.5.29.37={text}1.3.6.1.5.5.7.3.1'
crearea certificatului auto-semnat.
crearea certificatului auto-semnat.

parametrul Subject ar trebui să fie numele de domeniu complet calificat al serverului. WinRm utilizează subiectul pentru a valida identitatea serverului.

chiar dacă serverul se află într-un grup de lucru, furnizați întotdeauna un nume de domeniu, de ex., domain.com sau laborator.local. Când vă conectați la mașina de destinație, numele DNS la care vă conectați trebuie să se potrivească exact cu acest nume de subiect, conexiunea va eșua.

TextExtension vă permite să definiți Utilizarea cheii certificatului (2.5.29.37), care definește pentru ce este permis să fie utilizat certificatul. Definiți Utilizarea cheii pentru autentificarea serverului ({text}1.3.6.1.5.5.7.3.1) pentru a vă asigura că certificatul poate fi utilizat numai pentru autentificarea identității unui server.

după ce New-SelfSignedCertificates rulează, va returna amprenta certificatului pe care l-a generat. Salvați acest lucru, deoarece veți avea nevoie de el pentru următoarea comandă.

Configurarea ascultătorului WinRM

după ce ați creat certificatul auto-semnat pe server, configurați ascultătorul WinRm pentru a începe să utilizați acel certificat pentru autentificare. Pentru a face acest lucru, utilizați comanda winrm create așa cum se arată mai jos.

Address=* din comanda de mai jos informează ascultătorul să asculte pe orice adresă IP configurată pe server. Dacă serverul are configurate mai multe adrese IP, puteți defini aici o anumită adresă IP.

asigurați-vă că înlocuiți substituentul <cert thumbprint here> cu amprenta returnată în ultimul pas.

winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="ServerB.domain.com"; CertificateThumbprint="<cert thumbprint here>"}'
crearea WinRM ascultător cu certificat de auto-semnat.
crearea WinRM ascultător cu certificat de auto-semnat.

deschiderea portului Firewall WinRM SSL

apoi, dacă utilizați paravanul de protecție Windows, va trebui să permiteți traficul HTTPS care intră pe server prin portul HTTPS implicit 5986.

deschideți portul firewall pentru WinRM prin HTTPS utilizând PowerShell executând comanda de mai jos.

$FirewallParam = @{ DisplayName = 'Windows Remote Management (HTTPS-In)' Direction = 'Inbound' LocalPort = 5986 Protocol = 'TCP' Action = 'Allow' Program = 'System'}New-NetFirewallRule @FirewallParam

conectarea la Server prin SSL

acum ați configurat serverul Windows la distanță pentru a accepta conexiuni WinRM prin SSL. În acest moment, reveniți la client și inițiați orice comenzi PSRemoting pe care doriți să le testați. De exemplu, puteți încerca cmdletul Enter-PSSession sau Invoke-Command . Numai acum, vă conectați un pic diferit decât cu conexiunea HTTP implicită.

conectarea prin HTTPS necesită de obicei un singur parametru UseSSL. Acest parametru spune comanda să caute un ascultător https WinRM vs. un ascultător HTTP așa cum ar fi în mod implicit. Parametrul UseSSL este disponibil pe mai multe comenzi PSRemoting.

pentru testare, rulați Enter-PSSession furnizând FQDN-ul serverului așa cum este definit de subiectul certificatului auto-semnat, un obiect Pscredențial pentru a defini numele de utilizator și parola și, în final, parametrul de comutare UseSSL.

Enter-PSSession -ComputerName ServerB.domain.com -Credential (Get-Credential) -UseSSL

dacă executați comanda de mai sus, veți primi un mesaj de eroare deoarece ați configurat ascultătorul WinRM pe server pentru a utiliza un certificat auto-semnat. Ori de câte ori clientul PSRemoting încearcă să se autentifice pe server, va încerca să valideze certificatul și nu poate. Un certificat auto-semnat nu are un lanț de încredere pe care comanda îl poate urma și nu reușește.

verificarea încrederii autorității de certificare în caz de eșec cu certificat auto-semnat.
verificarea încrederii Autorității de certificare în caz de eșec cu certificat auto-semnat.

pentru a vă conecta la server cu un certificat auto-semnat, trebuie să înlocuiți verificarea de încredere a certificatului. Puteți face acest lucru prin crearea unui PSSessionOption numit SkipCACheck folosind New-PSSessionOption cmdlet și trecând-o la comanda așa cum se arată mai jos.

$PSSessionOption = New-PSSessionOption -SkipCACheckEnter-PSSession -ComputerName ServerB -Credential (Get-Credential) -SessionOption $PSSessionOption -UseSSL

puteți defini multe obiecte PSSessionOption diferite pentru a adăuga opțiuni pentru conexiunea la distanță care nu sunt incluse direct în cmdletul Enter-PSSession.

încercați să vă conectați din nou și PowerShell ar trebui să vă solicite acum acreditările. Odată furnizat, ar trebui să vă conectați acum la server cu WinRM peste SSL!

Configurarea WinRM cu un certificat semnat CA

Dacă intenționați să utilizați PSRemoting folosind WinRM în producție și doriți să rămâneți cât mai sigur posibil, trebuie să vă concentrați asupra WinRM peste SSL utilizând un certificat semnat de Autoritatea de certificare (CA).

certificatele semnate CA mențin un lanț de încredere și sunt mai sigure decât certificatele simple auto-semnate, deoarece validează identitatea emitentului unui certificat.

dacă vă aflați într-un mediu Active Directory, una dintre cele mai comune modalități de a configura un CA este cu ADCS. Cu ADCS, puteți implementa certificate pe dispozitive și puteți configura WinRM pentru a utiliza aceste certificate.

acest tutorial va presupune că aveți deja ADC-uri configurate și care lucrează în mediul dvs.

pentru o configurare rapidă, puteți urmări documentația Microsoft, dar pentru o implementare de producție, ar trebui să cercetați puternic configurația, deoarece o autoritate de certificare se află în centrul eforturilor de criptare ale unei organizații.

crearea cererii de certificat

primul pas în utilizarea unui certificat emis de CA este crearea certificatului. Pentru a crea certificatul, trebuie mai întâi să emiteți o cerere de certificat utilizând o cerere de semnare a certificatului (CSR). Odată generat, acest CSR poate fi apoi trimis la CA pentru a emite certificatul.

pașii acestei secțiuni vor funcționa la implementările ADCS atunci când este un ca de întreprindere sau un CA independent. Dacă utilizați un ca de întreprindere integrat în anunțuri, puteți accelera înscrierea certificatelor fără a parcurge pașii din această secțiune utilizând șabloane de înscriere automată a certificatelor sau șabloane de certificate.

în timp ce pe server (ServerB în acest tutorial), creați CSR:

  1. rulați certlm.msc pentru a deschide managerul de certificate Windows.

2. Faceți clic dreapta pe magazinul Personal și selectați toate sarcinile —> operații avansate —> creare solicitare personalizată.

3. Pentru acest tutorial, lăsați toate câmpurile ca implicite până când ajungeți la pagina cu informații despre certificat văzută mai jos. Când ajungeți aici, faceți clic pe meniul derulant Detalii și selectați Proprietăți.

crearea unei cereri de certificat personalizat.
crearea unei cereri de certificat personalizat.

4. Faceți clic pe fila subiect și schimbați tipul în nume comun.

5. Acum introduceți numele de domeniu complet calificat al serverului dacă este alăturat unui domeniu sau doar numele de gazdă dacă nu este și faceți clic pe Adăugare.

specificarea subiect pentru Cererea de certificat.
specificarea subiectului pentru Cererea de certificat.

rețineți că pentru utilizarea cu un ascultător WinRM SSL, trebuie să utilizați numele comun. Celelalte opțiuni din listă pot fi incluse, dar nu sunt necesare pentru această implementare.

6. Faceți clic pe fila extensie.

7. Dacă nu utilizați autentificarea bazată pe certificate, care va fi acoperită mai târziu, extindeți antetul de utilizare a cheii extinse și adăugați autentificarea serverului. Acest tip de utilizare cheie indică Windows că certificatul trebuie utilizat pentru autentificarea unui server. Alte opțiuni includ autentificarea clientului, semnarea codului și criptarea documentelor.

8. Dacă doriți să configurați autentificarea bazată pe certificate, asigurați-vă că alegeți autentificarea clientului, așa cum se arată mai jos.

solicitarea unui certificat de autentificare client.
solicitarea unui certificat de autentificare client.

9. Apoi, faceți clic pe fila cheie privată și observați opțiunile cheie. Modificați dimensiunea implicită a cheii de la 1024 la cel puțin 2048 pentru a consolida securitatea perechii de chei.

există, de asemenea, furnizori criptografici mai puternici disponibili în Windows, dar este posibil să vă confruntați cu incompatibilitatea cu software-ul mai vechi.

10. Închideți fereastra Proprietăți certificat și salvați setările făcând clic pe OK și faceți clic pe Următorul pentru a continua cu solicitările.

11. Acum furnizați o cale de ieșire a cererii de certificat de unde o puteți recupera mai târziu și faceți clic pe Finalizare.

odată finalizat, ar trebui să aveți un fișier de solicitare a certificatului.

solicitarea unui certificat

după ce ați creat solicitarea, va trebui să trimiteți solicitarea către CA, care va genera certificatul. Pentru a face asta:

  1. navigați la serverul ADCS la http://<servernume FQDN> /certsrv/certrqxt.asp.
pagina web de depunere a cererii de certificat.
pagina web de depunere a cererii de certificat.

2. Deschideți fișierul de solicitare a certificatului creat anterior cu notepad și copiați textul din fișierul de solicitare a certificatului în caseta de solicitare. Nimic nu este necesar pentru atribute suplimentare pentru acest certificat.

3. Faceți Clic Pe Trimiteți. Aceasta va trimite cererea dvs. la CA. Apoi ar trebui să vă arate ID-ul de solicitare, care va fi necesar mai târziu. Salvează asta! O să ai nevoie mai târziu.

4. Acum conectați-vă la serverul CA care face parte din mediul ADCS utilizând Managerul de Certificate Windows de pe computerul local sau prin RDP rulând certsrv.msc.

5. Faceți clic pe cereri în așteptare.

eliberarea certificatului de la cererea în așteptare.
eliberarea certificatului de la cererea în așteptare.

6. Faceți clic dreapta pe solicitarea în așteptare, faceți clic pe toate sarcinile și faceți clic pe problemă. Aceasta va aproba solicitarea pe care tocmai ați trimis-o pe baza ID-ului de solicitare din pasul anterior.

înscrierea certificatului

acum că ați emis un certificat pe CA, este timpul să înscrieți certificatul pe serverul pe care configurați WinRM. Pentru a face asta:

  1. de pe serverul pe care configurați WinRM prin SSL, navigați la http://<servernume FQDN> /certckpn.asp. Ar trebui să vedeți o singură cerere de certificat în așteptare.
vizualizarea stării cererii de certificat în așteptare.
starea de vizualizare a cererii de certificat în așteptare.

puteți prelua certificatul public de la o altă mașină, dacă este necesar, dar pornind de la serverul pe care îl configurați pentru WinRM prin HTTPS simplifică procesul.

2. Selectați solicitarea pe care ați trimis-o din listă și descărcați lanțul de certificate. Ar trebui să descărcați întregul lanț de certificate dacă serverul pe care îl configurați WinRM prin HTTPS are CA-ul dvs. ca server rădăcină.

descărcarea lanțului de certificate.
descărcarea lanțului de certificate.

3. Deschideți fișierul lanțului de certificate. Ar trebui să vedeți un certificat pentru serverul dvs. și orice certificate de autoritate de certificare mai mari în lanț. Sub win2.laborator.INT este certificatul solicitat, iar WIN2-ca este certificatul pentru CA care a emis certificatul pentru win2.lab.int.

afișarea certificatelor în interiorul lanțului de certificate.
afișarea certificatelor în interiorul lanțului de certificate.

4. Faceți dublu clic pe unul dintre certificate, iar în caseta care se deschide, faceți clic pe butonul Instalare certificat. Deoarece acest certificat va fi utilizat de server și nu de un anumit utilizator, schimbați opțiunea la mașină locală.

importarea certificatului în magazinul local de certificate de mașină.
importul certificatului în magazinul local de certificate de mașină.

5. Continuați prin prompt lăsând totul ca implicit. Valorile implicite ar trebui să plaseze certificatul în Trusted Root Certifications Store.

6. Acum repetați pașii 3-5 pentru fiecare dintre celelalte certificate din listă. Dacă aveți mai multe certificate, asigurați-vă că toate celelalte certificate sunt plasate în depozitul autorităților de Certificare intermediare.

creați și configurați ascultătorul WinRM HTTPS

acum că toate certificatele sunt instalate, este timpul să configurați WinRM pe serverul dvs. pentru a utiliza acel certificat pentru ascultător.

cu PowerShell deschis pe serverul WinRm:

  1. rulați comanda de mai jos pentru a configura automat ascultătorul WinRm. Comanda winrm face acest lucru căutând în magazinul de certificate de mașină locală un certificat care corespunde cerințelor pentru WinRM.
winrm quickconfig -transport:https

2. Paravanul de protecție Windows va bloca în mod implicit portul WinRM HTTPS 5986. Pentru a vă asigura că firewall-ul permite portul de intrare 5986, executați următoarea comandă PowerShell:

$FirewallParam = @{ DisplayName = 'Windows Remote Management (HTTPS-In)' Direction = 'Inbound' LocalPort = 5986 Protocol = 'TCP' Action = 'Allow' Program = 'System' } New-NetFirewallRule @FirewallParam

testarea conexiunii SSL WinRM

în acest moment, sunteți gata să vă conectați. Folosind cmdleturile PSRemoting preferate, cum ar fi Invoke-Command sau Enter-PSSession, conectați-vă la server și utilizați parametrul UseSSL.

Enter-PSSession -ComputerName ServerB.domain.com -UseSSL -Credential (Get-Credential)

asigurați – vă întotdeauna că valoarea pentru parametrul ComputerName se potrivește exact cu numele comun furnizat în timpul creării certificatului. Dacă încercați să vă conectați la un alt nume de gazdă sau poate la adresa IP a gazdei, veți primi o eroare de nepotrivire a certificatului care provoacă o eroare de conexiune.

Configurarea autentificării bazate pe Certificate

până acum, ar trebui să aveți deja un ascultător WinRM configurat pentru a utiliza HTTPS. Dacă da, puteți utiliza, de asemenea, un certificat de autentificare a utilizatorului pentru a vă autentifica ca utilizator local pe serverul de la distanță. Utilizarea unui certificat de utilizator este una dintre cele mai sigure, dar durează ceva timp pentru a configura. Veți găsi că este, de asemenea, o mulțime de muncă repetate, deoarece fiecare certificat este unic pentru mașina client individual.

autentificarea bazată pe Certificate funcționează numai cu conturi de utilizator locale și nu cu utilizatori de domeniu.

presupunând că ați solicitat un certificat pentru autentificarea clientului așa cum este acoperit în secțiunea crearea cererii de certificat, citiți mai departe:

activarea autentificării certificatului și maparea utilizatorului pe Server

  1. pe server, executați comanda Set-Item pentru a permite autentificarea bazată pe certificat.
Set-Item WSMan:\localhost\Service\Auth\Certificate -Value $true

2. Apoi, executați Get-ChildItem pentru a vă uita la magazinul autorităților de certificare rădăcină de încredere pentru a găsi amprenta CA care a emis certificatul de autentificare client. Pentru a face acest lucru, filtrați certificatele după subiectul care conține numele CA.

Get-ChildItem Cert:\LocalMachine\Root | Where-Object {$_.Subject -like 'CA-Name'}

3. Rulați comanda de mai jos unde SubjectName este subiectul certificatului de utilizator pe care l-ați furnizat la crearea certificatului

CAThumbprint este amprenta degetului CA colectată cu comanda anterioară și apoi vi se solicită acreditările sunt numele de utilizator și parola utilizatorului local care vor fi utilizate pentru autentificarea bazată pe certificat.

New-Item WSMan:\localhost\ClientCertificate -Subject SubjectName -URI * -Issuer CAThumbprint -Credential (Get-Credential)

testarea autentificării bazate pe Certificate

acum că maparea certificat la utilizator este configurată, utilizați certificatul de pe mașina client pentru a vă autentifica fără a furniza acreditări.

pe clientul din PowerShell, obțineți amprenta certificatului clientului căutând în magazinul de certificate personale.

Get-ChildItem Cert:\CurrentUser\My

acum specificați amprenta în parametrul CertificateThumbprint la o comandă PSRemoting ca mai jos.

Enter-PSSession -ComputerName ServerName -CertificateThumbprint <Thumbprint>

rețineți că, deoarece autentificarea bazată pe certificate este utilizabilă numai cu un ascultător HTTPS -UseSSL este implicită, spre deosebire de alte metode de autentificare în care trebuie să specificați utilizarea SSL.

acum că ați învățat cum să configurați WinRM peste SSL, aflați mai multe despre PSRemoting în PowerShell Remoting: the ultimate guide post!

doriți să aflați mai multe despre PowerShell în general, inclusiv multe despre PSRemoting? Check out PowerShell pentru Sysadmins, cartea!

Leave a Reply