Weboldal keresés

A PowerShell Remoting (WinRM) konfigurálása HTTPS-en keresztül


Alapértelmezés szerint a PowerShell Remoting munkamenetben a forgalom titkosított, függetlenül attól, hogy HTTP (TCP/5985) vagy HTTPS (TCP/5986) szállítási protokollt használ-e. Egyébként minden forgalom AES-256 kulccsal titkosítva van. Ha azonban egy távoli számítógéphez csatlakozik az AD-erdőn kívül vagy egy munkacsoportban (a Kerberos nem tud bizalmi kapcsolatot kialakítani vele), fennáll a köztes támadások veszélye. A Microsoft azt javasolja, hogy mindig használjon HTTPS-átvitelt a PSRemotinghoz, amikor harmadik féltől származó számítógépekhez csatlakozik.

Ebben a cikkben bemutatjuk, hogyan konfigurálhatja a PowerShell Remoting protokollt HTTPS-en keresztül SSL-tanúsítvány használatával. A HTTPS-n keresztüli PSRemoting munkamenetek magasabb munkamenet-biztonsági szintet biztosítanak, amikor az AD-tartományon/erdőn kívüli számítógépekhez csatlakozik.

Az alábbi lépések leírják, hogyan konfigurálhat egy Windows rendszert futtató távoli eszközt, amelyhez csatlakozni kíván a PowerShell Remoting HTTPS-en keresztüli használatával.

Győződjön meg arról, hogy a Windows hálózati helye Privát vagy Domain értékre van állítva:

Get-NetConnectionProfile

A WinRM és a PSRemoting engedélyezése a következő paranccsal:

Enable-PSRemoting -Force

Egy tartományban a WinRM-et csoportházirend-objektum használatával konfigurálhatja.

A HTTPS WinRM-hez való konfigurálásához először létre kell hoznia egy SSL-tanúsítványt azon a számítógépen, amelyhez csatlakozni kíván. A tanúsítvány a WinRM forgalom titkosítására szolgál. A PowerShell segítségével egyszerűbb önaláírt tanúsítványt létrehozni. Tartományi környezetben automatikusan kiadhat WinRM-tanúsítványokat az automatikus regisztráció segítségével.

Adja meg a számítógép nevét és IP-címét a tanúsítvány DNS-neveként (kényelmes, ha a hálózat nem rendelkezik DNS-kiszolgálóval). Mindkét értéket beszerezheti a tanúsítvány alany alternatív nevéhez, és létrehozhat egy önaláírt tanúsítványt a PowerShell segítségével:

$hostName = $env:COMPUTERNAME
$hostIP=(Get-NetAdapter| Get-NetIPAddress).IPv4Address|Out-String
$srvCert = New-SelfSignedCertificate -DnsName $hostName,$hostIP -CertStoreLocation Cert:\LocalMachine\My
$srvCert

Az új SSL-tanúsítvány megjelenik a számítógép személyes tanúsítványtárolójában.

Alapértelmezés szerint két figyelő jön létre a Windows PowerShell Remoting számára különböző portokon:

  • HTTP az 5985-ös porton

  • HTTPS az 5986-os porton

Megtekintheti az aktív WSMan hallgatók listáját az alábbiak szerint:

Get-ChildItem wsman:\localhost\Listener

Az alapértelmezett HTTP és HTTPS figyelők eltávolítása:

Get-ChildItem wsman:\localhost\Listener\ | Where-Object -Property Keys -like 'Transport=HTTP*' | Remove-Item -Recurse

Hozzon létre egy új HTTPS-figyelőt, és kösse hozzá tanúsítványát:

New-Item -Path WSMan:\localhost\Listener\ -Transport HTTPS -Address * -CertificateThumbPrint $srvCert.Thumbprint -Force

Hozzon létre egy Windows tűzfalszabályt, amely engedélyezi a WinRM HTTPS-forgalmat, vagy győződjön meg arról, hogy az aktív:

New-NetFirewallRule -Displayname 'WinRM - Powershell remoting HTTPS-In' -Name 'WinRM - Powershell remoting HTTPS-In' -Profile Any -LocalPort 5986 -Protocol TCP

Indítsa újra a WinRM szolgáltatást:

Restart-Service WinRM

Ezzel a paranccsal ellenőrizheti, hogy egy WinRM HTTPS-figyelő melyik tanúsítvány ujjlenyomatához van kötve:

WinRM e winrm/config/listener

A távoli gazdagép konfigurálva van. Most exportálnia kell az SSL-tanúsítványt egy CER-fájlba:

Export-Certificate -Cert $srvCert -FilePath c:\PS\SSL_PS_Remoting.cer

Ne feledje, hogy a WinRM szerver és kliens konfigurációi nem engedélyezik a titkosítatlan kapcsolatokat (alapértelmezés szerint):

dir WSMan:\localhost\Service | ? Name -eq AllowUnencrypted
dir WSMan:\localhost\Client | ? Name -eq AllowUnencrypted

Ha szükséges, letilthatja a titkosítatlan kapcsolatokat az alábbiak szerint:

winrm set winrm/config/service '@{AllowUnencrypted="false"}'
winrm set winrm/config/client '@{AllowUnencrypted="false"}

‘

Másolja a CER-fájlt a rendszergazdai számítógépre, és importálja az alábbi paranccsal (vagy telepítse a tanúsítványt más számítógépekre a GPO használatával):

Import-Certificate -FilePath c:\PS\SSL_PS_Remoting.cer -CertStoreLocation Cert:\LocalMachine\root\

Ezután a távoli Windows gazdagéphez való csatlakozáshoz a WinRM HTTPS használatával a -UseSSL argumentumot kell használnia az Enter-PSSession és Invoke-Command parancsmagokban. A következő példában egy távoli gazdagéphez fogunk csatlakozni a PowerShell-konzolról annak IP-címe alapján (vegye figyelembe, hogy ezt az IP-címet nem adtuk hozzá a TrustedHostshoz):

$SessionOption = New-PSSessionOption -SkipCNCheck
Enter-PSSession -Computername 192.168.13.4 -UseSSL -Credential maxbak -SessionOption $SessionOption

Ha IP-címmel csatlakozik a SkipCNCheck opció nélkül, a következő hiba lép fel:

The SSL certificate contains a common name (CN) that does not match the hostname

Kapcsolódó cikkek