Adam the Automator

jos suoritat jo etäkomentoja PowerShell Remoting (Psmoting) – komennolla, tiedät kuinka kätevä ominaisuus on. Voit muodostaa yhteyden yhteen tai useampaan etätietokoneeseen ja hallita niitä kuin ne olisivat paikallisia. Psremotointi riippuu Windows Remote Management (WinRm) tehdä se tapahtuu, ja jos et käytä WinRM yli SSL, saatat avata itsesi jopa joitakin tietoturvaongelmia.

tässä käytännön opetusohjelmassa opit, miten Windows määritetään asiakkaalle ja palvelimelle WinRM: n käyttämiseksi HTTPS: n (SSL) kautta ja miten varmenteita käytetään todennettaessa, kun WinRM: ää käytetään HTTPS: n kautta.

Sisällysluettelo

Edeltävät opinnot

jos haluat seurata tämän opetusohjelman ohessa läpivalaisua, varmista, että sinulla on seuraavat tiedot:

  • asiakaskoneena toimiva Windows 7 + tai Server 2008 R2-kone. Tämä opetusohjelma käyttää Windows 10.
  • Windows 7+ tai Server 2008 R2+ – kone palvelinkoneeksi. Tämä opetusohjelma käyttää Windows Server 2019.
  • pääsy paikalliseen hallinnolliseen tiliin tai tiliin, jolla on paikalliset hallinnolliset oikeudet sekä asiakas-että palvelinkoneissa.
  • Active Directory-varmennepalvelut (ADCS) julkisen avaimen infrastruktuuri (PKI). Se auttaisi, jos toteutat ADCS tuotannon toteutuksia, mutta se on valinnainen Tämän opetusohjelma ja testaus. Opetusohjelma olettaa PKI on perustettu yritys tai itsenäinen CA.

Miksi käyttää WinRM: ää SSL: n kautta?

psmoting, Out of the box, käyttää WinRM: ää ja mahdollistaa asiakaskoneiden etähallinnan. Kun Psmoting perustaa istunnon WinRM, se sitten salaa kaikki viestintä asiakkaalta palvelimelle. Myös, määritysmenettely toteuttaa Psmoting ilman HTTPS on melko yksinkertainen.

jos Psmoting jo salaa istuntoviestinnän, miksi mennä läpi vaivaa perustaa jotain ADCS ja hallita varmenteita, kun se on jo salattu?

koska tunnistamisen aikana tunnistetiedot voidaan lähettää epävarmassa muodossa riippuen käytetystä todennustyypistä.

yksi helpoimmista tavoista tehdä Psremotointi turvallisemmaksi on WinRM: n käyttäminen HTTPS: n sijaan HTTP: n sijaan. HTTPS koteloi koko yhteysvirtasi, mukaan lukien todennus WinRM: n jo käyttämässä salauskerroksessa. HTTPS tarjoaa myös samanaikaisesti tavan vahvistaa palvelin, johon yhdistät on mitä luulet sen olevan.

Winrmin määrittäminen itse allekirjoitetulla sertifikaatilla

hypätään nyt demonstraatioihin. Ensimmäinen temppu, aiot oppia, miten perustaa salaa psmoting viestintä WinRm SSL kautta itse allekirjoitettu varmenne.

itse allekirjoitetun sertifikaatin käyttäminen on loistava tapa luoda testiympäristö ilman ADCS: n kaltaista PKI: tä. Kun käytät itse allekirjoitettua varmennetta, luot varmenteen, jonka palvelin itse allekirjoittaa ja joka periaatteessa takaa itsensä.

varmenteet ovat olemassa suorittamaan tyypillisesti kahta tehtävää; todentamaan yhteys ja salaamaan se. Käyttämällä itse allekirjoitettua varmennetta toteutuu vain jälkimmäinen. Vahvistaaksesi palvelimen henkilöllisyyden sinun on aina käytettävä PKI: n tarjoamia varmenteita. PKI: n tarjoamat varmenteet tarjoavat yhden luottamuksen lähteen, kun taas jokaiseen itse allekirjoitettuun varmenteeseen on luotettava erikseen manuaalisesti.

WinRM: n määrittäminen SSL: n kautta itse allekirjoitetulla varmenteella vaatii neljä korkean tason vaihetta:

  1. itse allekirjoitetun varmenteen luominen kohdekoneessa.
  2. palvelimen WinRM-verkkopalvelimen (kuuntelija) määrittäminen käyttämään itse allekirjoitettua varmennetta todennukseen.
  3. sopivien porttien avaaminen kohdekoneen Windowsin palomuurissa.
  4. suoritetaan komento etäyhteyden aloittamiseksi asiakkaaseen käyttäen PowerShell cmdletiä, kuten Enter-PSSession.

käydään nyt jokainen vaihe läpi.

itse allekirjoitetun varmenteen luominen

ensimmäinen vaihe on itse allekirjoitetun varmenteen luominen palvelimelle. Kun muodostat yhteyden, psmoting käyttää tätä varmennetta salatakseen kaiken viestinnän.

kun olet Serverbissä Windows PowerShell-konsolin ollessa auki järjestelmänvalvojana, suorita New-SelfSignedCertificate cmdlet kuten alla. Alla olevan komennon suorittaminen luo varmenteen ServerB.domain.com paikallisen koneen henkilökohtaisessa varmennekaupassa.

New-SelfSignedCertificate -Subject 'CN=ServerB.domain.com' -TextExtension '2.5.29.37={text}1.3.6.1.5.5.7.3.1'
luodaan itse allekirjoitettu varmenne.
luodaan itse allekirjoitettu todistus.

parametrin Subject tulee olla palvelimen täysin pätevä toimialueen nimi. WinRm käyttää aihetta vahvistaakseen palvelimen henkilöllisyyden.

vaikka palvelin olisi työryhmässä, anna aina verkkotunnus, esim. domain.com tai labraan.paikallinen. Kun yhteyden Kohdekone, DNS-nimi yhteyden on täsmälleen sama tämän kohteen nimi, yhteys epäonnistuu.

TextExtension voit määritellä varmenteen avainkäytön (2.5.29.37), joka määrittelee mihin varmennetta saa käyttää. Määritä avaimen käyttö palvelimen todennukselle ({text}1.3.6.1.5.5.7.3.1) varmistaaksesi, että varmennetta voidaan käyttää vain palvelimen henkilöllisyyden todentamiseen.

kun New-SelfSignedCertificates juoksee, se palauttaa luomansa sertifikaatin peukalonjäljen. Tallenna tämä, koska tarvitset sitä seuraavaan komentoon.

WinRM-kuuntelijan määrittäminen

kun olet luonut itse allekirjoitetun varmenteen palvelimeen, määritä WinRm-kuuntelija käyttämään varmennetta todennukseen. Voit tehdä sen käyttämällä winrm create – komentoa, kuten alla on esitetty.

alla olevassa komennossa oleva Address=* kehottaa kuuntelijaa kuuntelemaan palvelimelle asetettua IP-osoitetta. Jos palvelimelle on määritetty useita IP-osoitteita, voit määrittää tietyn IP-osoitteen tässä.

muista korvata <cert thumbprint here> paikkamerkki viimeisessä vaiheessa palautetulla peukalonjäljellä.

winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="ServerB.domain.com"; CertificateThumbprint="<cert thumbprint here>"}'
luodaan WinRM-kuuntelija itse allekirjoitetulla sertifikaatilla.
luodaan WinRM-kuuntelija itse allekirjoitetulla todistuksella.

WinRM SSL-Palomuuriportin

avaaminen seuraavaksi, jos käytät Windowsin palomuuria, sinun on sallittava HTTPS-liikenteen saapuminen palvelimelle HTTPS-oletusportin 5986kautta.

avaa WinRM: n palomuuriportti HTTPS: n yli Powershellilla ajamalla alla oleva komento.

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

yhteyden muodostaminen palvelimeen SSL: n kautta

olet määrittänyt Windows-etäpalvelimen hyväksymään WinRM-yhteydet SSL: n kautta. Tällä hetkellä, tule takaisin asiakkaan ja aloittaa kaikki PSRemoting komennot haluat testata. Voit kokeilla esimerkiksi Enter-PSSession tai Invoke-Command cmdlet. Vain nyt, yhdistät hieman erilainen kuin oletuksena HTTP-yhteys.

yhdistäminen HTTPS: n yli vaatii tyypillisesti yhden parametrin UseSSL. Tämä parametri kertoo komennon etsiä HTTPS WinRM kuuntelija vs. HTTP kuuntelija kuin se olisi oletuksena. Parametri UseSSL on käytettävissä useammissa Psremotointikomennoissa.

testausta varten aja Enter-PSSession tarjoamalla itse allekirjoitetun varmenteen kohteen määrittelemä palvelimen FQDN, Pscredentiaalinen objekti käyttäjätunnuksen ja salasanan määrittelemiseksi ja lopuksi UseSSL switch-parametri.

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

jos suoritat yllä olevan komennon, saat virheilmoituksen, koska olet määrittänyt WinRM-kuuntelijan palvelimella käyttämään itse allekirjoitettua varmennetta. Aina kun psremotoiva asiakas yrittää todentaa palvelimelle, se yrittää vahvistaa varmenteen, ja se ei voi. Itse allekirjoitetulla varmenteella ei ole luottamusketjua, jota komento voi seurata, ja se epäonnistuu.

jos varmenneviranomaisen luottamus tarkistetaan itse allekirjoitetulla varmenteella.
epäonnistuneen varmenneviranomaisen luottamuksen tarkistus itse allekirjoitetulla varmenteella.

jos haluat muodostaa yhteyden palvelimeen itse allekirjoitetulla varmenteella, sinun on ohitettava varmenteen luottamustarkistus. Voit tehdä sen luomalla SkipCACheck – nimisen PSSessionOption käyttäen New-PSSessionOption cmdletiä ja siirtämällä sen alla olevaan komentoon.

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

voit määrittää monia erilaisia pssessionoption-objekteja lisätäksesi vaihtoehtoja etäyhteydellesi, jotka eivät sisälly suoraan Enter-PSSession cmdletiin.

yritä muodostaa yhteys uudelleen ja PowerShell pyytää nyt käyttäjätiedot. Kun olet antanut, sinun pitäisi nyt muodostaa yhteys palvelimeen WinRM SSL!

WinRM: n määrittäminen CA-allekirjoitetulla varmenteella

jos aiot käyttää psremotointia WinRM: n avulla tuotannossa ja haluat pysyä mahdollisimman turvallisena, sinun on keskityttävä WinRM: ään SSL: n kautta varmenneviranomaisen (CA) allekirjoittamalla varmenteella.

CA-allekirjoitetut varmenteet ylläpitävät luottamusketjua ja ovat turvallisempia kuin yksinkertaiset itse allekirjoitetut varmenteet, koska ne vahvistavat varmenteen myöntäjän henkilöllisyyden.

jos olet Active Directory-ympäristössä, yksi yleisimmistä tavoista luoda CA on ADCS. ADCS: n avulla voit ottaa varmenteet käyttöön laitteisiin ja määrittää WinRM: n käyttämään kyseisiä varmenteita.

tämä opetusohjelma olettaa, että sinulla on jo ADCS, joka toimii ympäristössäsi.

nopeaa asennusta varten voit seurata Microsoftin dokumentaatiota, mutta tuotannon käyttöönottoa varten konfiguraatiota kannattaa tutkia voimakkaasti, sillä varmenneviranomainen on organisaation salauspyrkimysten keskiössä.

varmennepyynnön luominen

ensimmäinen vaihe varmenteen myöntäjän myöntämän varmenteen käytössä on varmenteen luominen. Luodaksesi varmenteen sinun on ensin tehtävä varmennepyyntö varmenteen allekirjoituspyynnöllä (CSR). Kun tämä yhteiskuntavastuu on luotu, se voidaan lähettää varmenteiden myöntäjälle varmenteen myöntämistä varten.

tämän osion vaiheet toimivat ADCS-asennuksissa, kun kyseessä on yrityksen varmentaja tai itsenäinen varmentaja. Jos käytät AD-integrated enterprise CA-järjestelmää, voit nopeuttaa varmenteiden rekisteröintijärjestelmää käymättä läpi tämän osion vaiheita varmenteiden automaattisen rekisteröinnin tai varmennemallien avulla.

kun olet palvelimella (ServerB tässä opetusohjelmassa), luo CSR:

  1. Run certlm.msc Avaa Windows certificate manager.

2. Napsauta hiiren kakkospainikkeella henkilökohtaista säilöä ja valitse Kaikki tehtävät —> kehittyneet toiminnot —> Luo mukautettu pyyntö.

3. Jätä tässä opetusohjelmassa kaikki kentät oletukseksi, kunnes pääset alla näkyvälle varmenteen tietosivulle. Kun pääset tänne, klikkaa tiedot-pudotusvalikosta ja valitse Ominaisuudet.

luodaan mukautettu varmennepyyntö.
muokatun varmennepyynnön luominen.

4. Napsauta aihe-välilehteä ja vaihda Tyyppi yleisnimeksi.

5. Anna nyt palvelimen täysin pätevä toimialueen nimi, jos se on liitetty toimialueeseen, tai vain palvelinnimi, jos se ei ole, ja valitse Lisää.

varmennepyynnön kohteen määrittäminen.
varmennepyynnön aihe täsmennetään.

huomaa, että käytettäväksi WinRM SSL kuuntelija, sinun täytyy käyttää yhteistä nimeä. Luettelon muut vaihtoehdot voidaan ottaa mukaan, mutta niitä ei tarvita tähän käyttöönottoon.

6. Napsauta laajennus-välilehteä.

7. Jos et käytä varmennepohjaista todennusta, joka katetaan myöhemmin, Laajenna laajennetun avaimen käyttöotsikkoa ja lisää palvelimen todennus. Tämä avaimen Käyttötyyppi kertoo Windowsille, että varmennetta tulisi käyttää palvelimen todentamiseen. Muita vaihtoehtoja ovat asiakkaan todennus, koodin allekirjoitus ja asiakirjojen salaus.

8. Jos haluat määrittää varmennepohjaisen todennuksen, varmista, että valitset asiakkaan todennuksen, kuten alla on esitetty.

pyydämme asiakkaan todennusvarmentetta.
pyydetään asiakkaan todentamisvarmennetta.

9. Seuraava, klikkaa yksityinen avain-välilehteä ja huomaa avainasetukset. Muuta oletusnäppäimen kokoa 1024: stä vähintään 2048: aan avainparin turvallisuuden vahvistamiseksi.

Windowsissa on myös vahvempia salauksen tarjoajia, mutta saatat kohdata yhteensopimattomuutta vanhempien ohjelmistojen kanssa.

10. Sulje varmenteen Ominaisuudet-ikkuna ja tallenna asetukset valitsemalla OK ja valitsemalla Seuraava jatkaaksesi kehotteilla.

11. Anna nyt polku varmennepyynnön tulostamiseen, josta voit hakea sen myöhemmin ja valitse Valmis.

kun olet valmis, sinulla pitäisi olla varmennepyyntötiedosto.

varmenteen pyytäminen

kun pyyntö on luotu, sinun on nyt lähetettävä kyseinen pyyntö varmenteen myöntäjälle, joka luo varmenteen. Tehdä niin:

  1. Siirry ADCS-palvelimelle osoitteeseen http://<server name FQDN>/certsrv / certrqxt.asp.
varmennepyynnön verkkosivu.
varmennepyynnön verkkosivu.

2. Avaa aiemmin luotu varmennepyyntötiedosto muistilehtiöllä ja kopioi teksti varmennepyyntötiedostosta pyyntö-ruutuun. Tämän varmenteen Lisäominaisuuksilta ei vaadita Mitään.

3. Napsauta Lähetä. Tämä lähettää pyyntösi CA. Sen pitäisi sitten näyttää pyynnön ID, joka vaaditaan myöhemmin. Säästä tämä! Tarvitset sitä myöhemmin.

4. Yhdistä nyt CA-palvelimeen, joka on osa ADCS-ympäristöäsi käyttämällä Windows Certificate Manageria paikallisessa tietokoneessa tai RDP: n kautta ajamalla certsrv.msc.

5. Napsauta vireillä olevia pyyntöjä.

todistuksen antaminen vireillä olevasta pyynnöstä.
todistuksen antaminen vireillä olevasta pyynnöstä.

6. Napsauta vireillä olevaa pyyntöä hiiren kakkospainikkeella, valitse Kaikki tehtävät ja napsauta asiaa. Tämä hyväksyy pyynnön, että olet juuri lähettänyt pyynnön ID aiemmasta vaiheesta.

varmenteen rekisteröinti

nyt kun olet myöntänyt varmenteen varmenteiden myöntäjälle, on aika rekisteröidä varmenne palvelimelle, jolla määrität WinRM: ää. Tehdä niin:

  1. palvelimelta, jonka määrität WinRM: n SSL: n kautta, siirry kohtaan http://<server name FQDN>/certckpn.asp. Sinun pitäisi nähdä yksi vireillä oleva varmennepyyntö.
vireillä olevan varmennepyynnön tilan katselu.
vireillä olevan varmennepyynnön Katselutilanne.

voit hakea julkisen varmenteen eri koneelta tarvittaessa, mutta alkaen palvelimesta, jonka olet määrittämässä WinRM over HTTPS yksinkertaistaa prosessia.

2. Valitse luettelosta lähettämäsi pyyntö ja lataa varmenneketju. Sinun pitäisi ladata koko varmenneketju, jos palvelin, jota määrität WinRM: n HTTPS: n päälle, ei ole CA: si juuripalvelimena.

Ladataan varmenneketjua.
Ladataan varmenneketjua.

3. Avaa varmenneketjun tiedosto. Sinun pitäisi nähdä varmenne palvelimellesi, ja kaikki varmenneviranomaisen varmenteet ylempänä ketjussa. Alla win2.Lab.int on pyydetty varmenne, ja WIN2-CA on varmenne varmenteen myöntäneelle VARMENTAJALLE win2.lab.int.

näytetään varmenteet varmenneketjun sisällä.
todistukset todistusketjun sisällä.

4. Kaksoisnapsauta yhtä varmenteista ja napsauta avautuvassa ruudussa asenna varmenne-painiketta. Koska tätä varmennetta käyttää palvelin eikä tietty käyttäjä, vaihda vaihtoehto paikalliselle koneelle.

tuodaan varmenne paikalliseen konetodistuskauppaan.
tuo varmennetta paikalliseen konetodistuskauppaan.

5. Jatka kautta pikainen jättäen kaiken oletuksena. Oletusarvojen pitäisi sijoittaa varmenne luotettujen juurien sertifikaattien säilöön.

6. Toista nyt vaiheet 3-5 jokaiselle luettelon muille varmenteille. Jos sinulla on useampi kuin yksi varmenne, varmista, että kaikki muut varmenteet sijoitetaan varmenneviranomaisten Välisäilöön.

luo ja määritä WinRM HTTPS-kuuntelija

nyt kun kaikki varmenteet on asennettu, on aika määrittää WinRM palvelimellesi käyttämään kyseistä varmennetta kuuntelijalle.

Powershellilla avoinna WinRm-palvelimella:

  1. suorita alla oleva komento määrittää WinRm kuuntelija automaattisesti. Komento winrm tekee tämän etsimällä paikallisen koneen varmennesäilöstä varmenteen, joka vastaa WinRM: n vaatimuksia.
winrm quickconfig -transport:https

2. Windowsin palomuuri estää oletusarvoisesti 5986 WinRM HTTPS-portin. Varmistaaksesi, että palomuuri sallii saapuvan portin 5986, suorita seuraava PowerShell-komento:

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

testaamalla WinRM SSL-yhteyttä

tässä vaiheessa olet valmis muodostamaan yhteyden. Käyttämällä suosimiasi psremotoivia cmdletejä, kuten Invoke-Command tai Enter-PSSession, muodosta yhteys palvelimeen ja käytä UseSSL – parametria.

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

Varmista aina, että parametrin ComputerName arvo vastaa täsmälleen varmenteen luomisen yhteydessä annettua yleisnimeä. Jos yrität muodostaa yhteyden toiseen palvelinnimeen tai ehkä palvelimen IP-osoitteeseen, saat varmenteen yhteensopimattomuusvirheen, joka aiheuttaa yhteyden pettämisen.

Varmennepohjaisen todennuksen määrittäminen

tähän mennessä pitäisi jo olla WinRM-kuuntelija määritettynä käyttämään HTTPS: tä. Jos näin on, Voit myös todentaa etäpalvelimen paikallisena käyttäjänä käyttäjän todennusvarmenteella. Käyttäjävarmenteen käyttäminen on yksi turvallisimmista, mutta sen käyttöönotto kestää jonkin aikaa. Huomaat, että se on myös paljon toistuvaa työtä, koska jokainen sertifikaatti on yksilöllinen yksittäiselle asiakaskoneelle.

Varmennepohjainen todennus toimii vain paikallisilla käyttäjätileillä eikä toimialueen käyttäjillä.

olettaen, että olet pyytänyt varmennetta asiakkaan todennukseen varmennepyynnön luominen-osion mukaisesti, Lue:

varmenteen käyttöönotto-todennus ja käyttäjän yhdistäminen palvelimella

  1. palvelimella, suorita Set-Item – komento varmennepohjaisen todennuksen sallimiseksi.
Set-Item WSMan:\localhost\Service\Auth\Certificate -Value $true

2. Aja seuraavaksi Get-ChildItem tarkastellaksesi luotettujen Juurivarmentajien varastoa, niin löydät varmentajan peukalonjäljen, joka antoi asiakkaan todennusvarmenteen. Voit tehdä tämän suodattamalla varmenteet kohteen mukaan, joka sisältää varmenteiden myöntäjän nimen.

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

3. Suorita alla oleva komento, jossa SubjectName on sen käyttäjävarmenteen kohteena, jonka annoit luodessasi varmennetta

CAThumbprint on varmentajan peukalonjälki, joka on kerätty edellisellä komennolla.tämän jälkeen pyydetään tunnistetietoja paikallisen käyttäjän käyttäjätunnuksesta ja salasanasta, joita käytetään varmennepohjaisessa todennuksessa.

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

Testing Certificate-Based Authentication

Now when the certificate to user mapping is setup use the certificate on the customer machine to authenticate without providing käyttäjätiedot.

On the client in PowerShell, get the client certificate ‘ s thumbprint by looking in the Personal certificate store.

Get-ChildItem Cert:\CurrentUser\My

Määritä nyt CertificateThumbprint – parametrin peukalonjälki Psremotoivalle komennolle kuten alla.

Enter-PSSession -ComputerName ServerName -CertificateThumbprint <Thumbprint>

huomaa, että koska varmennepohjainen todennus on käyttökelpoinen vain HTTPS-kuuntelijalla -UseSSL, on implisiittinen, toisin kuin muissa todennusmenetelmissä, joissa on määritettävä SSL: n käyttö.

nyt kun olet oppinut, miten WinRM otetaan käyttöön SSL: n kautta, Lue lisää Psmotingista PowerShell Remoting: The Ultimate Guide post!

Haluatko oppia lisää Powershellista yleisesti, mukaan lukien paljon Psremotoinnista? Katso PowerShell for sysadmins, the book!

Leave a Reply