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-NetConnectionProfileA WinRM és a PSRemoting engedélyezése a következő paranccsal:
Enable-PSRemoting -ForceEgy 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
$srvCertAz ú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\ListenerAz 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 -ForceHozzon 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 TCPIndítsa újra a WinRM szolgáltatást:
Restart-Service WinRMEzzel a paranccsal ellenőrizheti, hogy egy WinRM HTTPS-figyelő melyik tanúsítvány ujjlenyomatához van kötve:
WinRM e winrm/config/listenerA 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.cerNe 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 AllowUnencryptedHa 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 $SessionOptionHa 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


