- A távelérés WinRM/WS-Man (HTTP/HTTPS) protokollt használ, és lehetővé teszi az 1-az-1-hez, 1-a-többhöz és az állandó munkameneteket biztonsági vezérlőkkel.
- Az Enable-PSRemoting konfigurálja a szolgáltatást, a figyelőket és a tűzfalat; a HTTPS érvényes tanúsítványt és CN/SAN egyezést igényel.
- Az eredményeket deszerializáltan adja vissza a rendszer; a metódusokat a távoli szkriptblokkon belül hívja meg, és egyéni végpontokat használ a részletes delegáláshoz.
Lehet, hogy már számos feladatot automatizálsz helyben PowerShell-lel, de hol is csinálod valójában? A PowerShell távoli hozzáférése számít Ez akkor történik, amikor távoli gépeken futtatsz parancsokat, legyenek azok néhány vagy több száz, interaktívan vagy párhuzamosan. Ez a technológia, amely a Windows PowerShell 2.0 óta elérhető és a 3.0 óta továbbfejlesztett, a WS-Management (WinRM) alapú, és a következőt konvertálja: PowerShell egy robusztus, skálázható és biztonságos távoli felügyeleti csatornán.
Először is fontos megérteni két kulcsfontosságú fogalmat: a cmdleteket a következővel: -Számítógépnév paraméter (pl. Get-Process vagy Get-Service) nem a Microsoft által ajánlott hosszú távú útvonal, és a PowerShell Remoting nem működik „hackként”. Valójában kölcsönös hitelesítést érvényesít, naplózza az auditokat, és tiszteletben tartja a szokásos engedélyeidet anélkül, hogy hitelesítő adatokat tárolna, vagy bármit is varázslatosan szuper jogosultságokkal futtatna.
Mi a PowerShell távelérés és miért érdemes használni?
Con PowerShell távoli tudod szinte bármilyen parancs végrehajtása távolról amelyeket egy helyi munkamenetben elindíthat, a szolgáltatások lekérdezésétől a konfigurációk telepítéséig, és ezt egyszerre több száz számítógépen is megteheti. A -ComputerName parancsmagokkal ellentétben (sokan DCOM/RPC-t használnak), a Távoli hozzáférés WS-Man-en (HTTP/HTTPS) keresztül utazikA tűzfalbarátabb , amely lehetővé teszi a párhuzamosságot, és a munkát a távoli gépre, nem pedig a kliensre terheli.
Ez három gyakorlati előnyt jelent: jobb teljesítmény nagy mennyiségű végrehajtás esetén, kisebb súrlódás a hálózatokban korlátozó szabályokkal és a Kerberos/HTTPS-sel konzisztens biztonsági modellel. Továbbá, mivel nem minden parancsmagra van szükség a saját távoli elérésének megvalósításához, a Távoli elérésű Bármely forgatókönyvhöz vagy szerephez működik ami a célállomáson elérhető.
Alapértelmezés szerint a legújabb Windows szerverek engedélyezve vannak a Távoli elérés funkcióval; Windows 10/11 rendszerben te aktiválod egyetlen parancsmaggal. És igen, használhat alternatív hitelesítő adatokat, állandó munkameneteket, egyéni végpontokat és egyebeket.
Megjegyzés: A távoli hozzáférés nem jelenti azt, hogy mindent meg kell nyitni. Alapértelmezés szerint csak rendszergazdák Csatlakozhatnak, és a műveletek az identitásuk alatt hajtódnak végre. Ha részletes delegálásra van szüksége, az egyéni végpontok lehetővé teszik, hogy csak a lényeges parancsokat tegye elérhetővé.

Hogyan működik belül: WinRM, WS-Man és portok
A PowerShell távoli elérés kliens-szerver modellben működik. Az ügyfél a WS-Management kéréseket a következőn keresztül küldi: HTTP (5985/TCP) vagy HTTPS (5986/TCP)A célgépen a Windows Remote Management (WinRM) szolgáltatás figyeli, feloldja a végpontot (munkamenet-konfiguráció), és a háttérben futtatja a PowerShell-munkamenetet (wsmprovhost.exe folyamat). szerializált eredmények visszaküldése az ügyfélnek XML-ben SOAP-on keresztül.
A távoli elérési út első engedélyezésekor a figyelők konfigurálódnak, megnyílik a megfelelő tűzfalkivétel, és létrejönnek a munkamenet-konfigurációk. A PowerShell 6+ verziójától kezdve több kiadás is létezik egyszerre, és Enable-PSRemoting A verziót tükröző nevekkel regisztrálja a végpontokat (például PowerShell.7 és PowerShell.7.xy).
Ha csak a HTTPS-t engedélyezi a környezetében, létrehozhat egy biztonságos hallgató megbízható hitelesítésszolgáltató által kiállított tanúsítvánnyal (ajánlott). Alternatív megoldásként egy másik lehetőség a TrustedHosts korlátozott, kockázattudatos használata munkacsoportos forgatókönyvek vagy nem tartományi számítógépek esetén.
Vegye figyelembe, hogy a Powershell távoli kezelése együtt működhet a -ComputerName paraméterrel rendelkező parancsmagokkal, de A Microsoft terjeszti a WS-Man-t mint a távadminisztráció szabványos és jövőbiztos módja.
PowerShell távoli hozzáférés engedélyezése és hasznos paraméterek
Windows rendszeren csak nyissa meg a PowerShellt rendszergazdaként, és futtassa Enable-PSRemotingA rendszer elindítja a WinRM-et, konfigurálja az automatikus indítást, engedélyezi a figyelőt, és létrehozza a megfelelő tűzfalszabályokat. Nyilvános hálózati profillal rendelkező klienseken ezt szándékosan is engedélyezheti a következővel: -SkipNetworkProfileCheck (és majd erősítsd meg konkrét szabályokkal):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
A szintaxis azt is lehetővé teszi, hogy -Megerősít y -Mi van ha a változáskezeléshez. Ne feledje: Csak Windows rendszeren érhető el, és futtatnia kell a megemelt jogú konzolt. A létrehozott szabályok a kiszolgáló és a kliens kiadás között eltérőek, különösen a nyilvános hálózatokon, ahol alapértelmezés szerint a helyi alhálózatra korlátozódnak, kivéve, ha kibővíti a hatókört (például a Set-NetFirewallRule paranccsal).
A már rögzített munkamenet-konfigurációk listázásához és annak megerősítéséhez, hogy minden készen áll, használja a Get-PSSessionConfigurationHa megjelennek a PowerShell.x és a Workflow végpontok, a Remoting keretrendszer működik.

Használati módok: 1 az 1-hez, 1 a sokhoz és állandó munkamenetek
Ha egyetlen számítógépen van szüksége interaktív konzolra, forduljon a következőhöz: Enter PSSessionMegjelenik a prompt, és minden, amit végrehajtasz, a távoli gépre kerül. A hitelesítő adatokat újra felhasználhatod a Get-Credential paranccsal, hogy elkerüld a folyamatos újbóli megadást:
$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession
Ha azt szeretnéd, hogy egyszerre több számítógépre küldj parancsokat, akkor ez az eszköz... Hivatkozhat-irányító egy szkriptblokkkal. Alapértelmezés szerint legfeljebb 32 egyidejű kapcsolatot indít (a -ThrottleLimit kapcsolóval állítható). Az eredmények a következőképpen adódnak vissza: deszerializált objektumok („élő” metódusok nélkül):
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred
Szükséged van egy olyan metódus meghívására, mint a .Stop() vagy a .Start()? Tedd meg. a szkriptblokkon belül a távoli kontextusban, nem a helyi deszerializált objektumban, és ennyi. Ha van egyenértékű parancsmag (Stop-Service/Start-Service), akkor általában célszerűbb azt használni az érthetőség kedvéért.
A munkamenetek hívásonkénti indításának és befejezésének költségeinek elkerülése érdekében hozzon létre egy Állandó PSSession és használd újra több hívás során. Használd a New-PSSession paranccsal a kapcsolatot, és használd az Invoke-Command-Session paranccsal az alagutat. Ne felejtsd el bezárni a Remove-PSSession paranccsal, ha kész vagy.
Sorosítás, korlátok és bevált gyakorlatok
Fontos részlet: utazás közben a tárgyak "+ellaposodnak" és úgy érkeznek meg, deszerializált pillanatképek, tulajdonságokkal, de metódusok nélkül. Ez szándékos és sávszélességet takarít meg, de azt jelenti, hogy nem használhatsz olyan tagokat, amelyek logikát hajtanak végre (mint például a .Kill()) a helyi példányon. A megoldás nyilvánvaló: meghívni ezeket a metódusokat. távoli és ha csak bizonyos mezőkre van szükséged, szűrj a Select-Object metódussal, hogy kevesebb adatot küldj.
Szkriptekben kerüld az Enter-PSSession használatát (ami interaktív használatra szánták), és használd az Invoke-Command kapcsolót szkriptblokkokkal. Ha több hívásra számítasz, vagy meg kell őrizned az állapotot (változók, importált modulok), állandó munkamenetek használata és ha alkalmazható, válassza le/csatlakoztassa újra őket a Disconnect-PSSession/Connect-PSSession paranccsal a PowerShell 3.0+ verziójában.
Hitelesítés, HTTPS és domainen kívüli forgatókönyvek
Egy tartományban a natív hitelesítés Kerberos És minden folyik. Amikor az eszköz nem tudja ellenőrizni a szerver nevét, vagy CNAME IP-címhez vagy aliashoz csatlakozik, akkor a következő két lehetőség egyikére van szüksége: 1) Figyelő HTTPS tanúsítvánnyal egy megbízható hitelesítésszolgáltató által kiadott, vagy 2) adja hozzá a célállomást (név vagy IP-cím) a TrustedHosts listához és hitelesítő adatok használataA második lehetőség letiltja a kölcsönös hitelesítést az adott gazdagépen, így a hatókört a szükséges minimumra csökkenti.
HTTPS-figyelő beállításához tanúsítványra van szükség (ideális esetben a PKI-tól vagy egy nyilvános hitelesítésszolgáltatótól), amelyet telepíteni kell a csapattárolóba, és a WinRM-hez kell kötni. Ezután a tűzfalon meg kell nyitni az 5986/TCP portot, és a kliens oldalról kell használni. -SSL használata távoli parancsmagokban. Klienstanúsítvány-hitelesítéshez leképezhet egy tanúsítványt egy helyi fiókhoz, és csatlakozhat hozzá -Tanúsítvány ujjlenyomata (Az Enter-PSSession paranccsal ezt nem fogadjuk el közvetlenül; először hozzuk létre a munkamenetet a New-PSSession paranccsal.)
A második ugrás és a megbízólevelek delegálása
A híres „dupla ugrás” akkor fordul elő, amikor egy szerverhez való csatlakozás után szükséged van arra a szerverre, hogy hozzáférjen egy harmadik erőforrás az Ön nevében (pl. egy SMB megosztás). Kétféleképpen lehet ezt engedélyezni: CredSSP és erőforrás-alapú korlátozott Kerberos delegálás.
Con CredSSP Lehetővé teszed az ügyfél és a közvetítő számára a hitelesítő adatok explicit delegálását, és beállítasz egy házirendet (csoportházirend-objektumot), amely lehetővé teszi a delegálást adott számítógépekre. Gyorsan konfigurálható, de kevésbé biztonságos, mivel a hitelesítő adatok egyszerű szövegként továbbítódnak a titkosított alagúton belül. Mindig korlátozd a forrásokat és a célhelyeket.
A domainben az előnyben részesített alternatíva a korlátozott Kerberos delegálás (erőforrás-alapú korlátozott delegálás) a modern AD-ben. Ez lehetővé teszi, hogy a végpont bizonyos szolgáltatások esetében a középső ponttól érkező delegálásra támaszkodjon, elkerülve az Ön személyazonosságának felfedését a kezdeti kapcsolaton. Új tartományvezérlőket és frissített RSAT-ot igényel.
Egyéni végpontok (munkamenet-konfigurációk)
A távoli munkavégzés egyik gyöngyszeme a csatlakozási pontok regisztrálásának lehetősége testreszabott képességek és korlátokElőször generálsz egy fájlt a New-PSSessionConfigurationFile paranccsal (előzetesen betöltendő modulok, látható függvények, aliasok, ExecutionPolicy, LanguageMode stb.), majd regisztrálod a Register-PSSessionConfiguration paranccsal, ahol beállíthatod a következőket: Futtatás hitelesítő adatként és jogosultságok (SDDL vagy grafikus felület a -ShowSecurityDescriptorUI kapcsolóval).
A biztonságos delegálás érdekében csak a legszükségesebbeket tegye elérhetővé a -VisibleCmdlets/-VisibleFunctions kapcsolóval, és szükség esetén tiltsa le a szabad szkripteket a Nyelvi mód Korlátozott nyelv vagy NoLanguage. Ha meghagyja a FullLanguage beállítást, valaki egy szkriptblokkot használhat nem látható parancsok meghívására, amelyek a RunAs függvényekkel kombinálva lyuk lenneTervezze meg ezeket a végpontokat egy finomfogú fésűvel, és dokumentálja a hatókörüket.
Tartományok, csoportházirendek és csoportmunka
Az AD-ben a Powershell Remoting nagy léptékben is telepíthető csoportházirenddel: lehetővé teszi a WinRM-figyelők automatikus konfigurálását, állítsd a szolgáltatást Automatikusra, és hozza létre a tűzfalkivételt. Ne feledje, hogy a csoportházirend-objektumok módosítják a beállításokat, de nem mindig kapcsolják be azonnal a szolgáltatást; néha újra kell indítani a rendszert, vagy ki kell kényszeríteni a gpupdate végrehajtását.
Munkacsoportokban (nem tartományi) konfigurálja a távoli elérést a következővel: Enable-PSRemoting, állítsd be a TrustedHosts-t a kliensen (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}), és használj helyi hitelesítő adatokat. HTTPS esetén csatolhatsz önaláírt tanúsítványokat, bár ajánlott megbízható hitelesítésszolgáltatót használni, és érvényesítse a nevet amelyet a tanúsítványban a -ComputerName paraméterben fog használni (CN/SAN egyezés).
Kulcsfontosságú parancsmagok és szintaxis
Egy maroknyi kommandós fedezi a A napi forgatókönyvek 90%-aAktiválás/deaktiválás:
Enable-PSRemoting
Disable-PSRemoting
Interaktív foglalkozás 1 az 1-hez és kilépés:
Enter-PSSession -ComputerName SEC504STUDENT
Exit-PSSession
1-től a sokig, párhuzamossággal és hitelesítő adatokkal:
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred
Állandó munkamenetek és újrafelhasználás:
$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s
Tesztelés és WinRM Hasznos:
Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https
Gyakorlati megjegyzések a tűzfalról, a hálózatról és a portokról
Nyissa meg az 5985/TCP protokollt HTTP és az 5986/TCP protokollt HTTPS protokollhoz a célszámítógépen és a bármilyen közbenső tűzfalWindows klienseken az Enable-PSRemoting szabályokat hoz létre a tartományi és a privát profilokhoz; nyilvános profilok esetén a helyi alhálózatra korlátozódik, kivéve, ha módosítja a hatókört a Set-NetFirewallRule -RemoteAddress Any paranccsal (egy érték, amelyet a kockázat alapján becsülhet meg).
Ha olyan SOAR/SIEM integrációkat használ, amelyek távoli parancsokat futtatnak (pl. az XSOAR-ból), győződjön meg arról, hogy a szerver rendelkezik a következővel: DNS felbontás a gazdagépekhez, csatlakozás az 5985/5986-hoz, és megfelelő helyi engedélyekkel rendelkező hitelesítő adatok. Bizonyos esetekben az NTLM/Basic hitelesítés módosításra szorulhat (pl. helyi felhasználó használata Basic módban SSL-lel).
Enable-PSRemoting paraméterek (működési összefoglaló)
-A Megerősítés megerősítést kér a végrehajtás előtt; -Kényszerít figyelmen kívül hagyja a figyelmeztetéseket és végezze el a szükséges módosításokat; - A SkipNetworkProfileCheck engedélyezi a távoli elérést nyilvános klienshálózatokon (alapértelmezés szerint a helyi alhálózatra korlátozódik); - A WhatIf megmutatja, mi történne a módosítások alkalmazása nélkül. Ezenkívül, mint bármely szabványos parancsmag, támogatja a következőket: közös paraméterek (-Verbose, -ErrorAction stb.).
Ne feledd, hogy az „Engedélyezés” opció nem hoz létre HTTPS-figyelőket vagy tanúsítványokat; ha végponttól végpontig terjedő titkosításra van szükséged a kezdetektől fogva, és hitelesítésre a következő alapján: hitelesített, konfigurálja a HTTPS-figyelőt, és ellenőrizze a CN/SAN értéket a -ComputerName paraméterben használni kívánt név alapján.
Hasznos WinRM és PowerShell távoli hozzáférési parancsok
néhány nélkülözhetetlen ágyneműk napról napra:
winrm get winrm/config
winrm enumerate winrm/config/listener
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Test-WSMan -ComputerName host -Authentication Default -Credential (Get-Credential)
New-PSSession -ComputerName host
Enter-PSSession -ComputerName host
Enable-PSRemoting -SkipNetworkProfileCheck -Force
A Windows nagyméretű kezelésekor a Remoting lehetővé teszi a „számítógép-számítógép” megközelítésről a deklaratív és biztonságos megközelítésre való áttérést. Az állandó munkamenetek, az erős hitelesítés (Kerberos/HTTPS), a korlátozott végpontok és a diagnosztikai nyomkövetések egyértelművé tételének kombinálásával... sebességet és irányítást nyersz a biztonság vagy az auditálás feláldozása nélkül. Ha szabványosítja a csoportházirend-objektumok aktiválását és elsajátítja a speciális eseteket (TrustedHosts, dupla ugrás, tanúsítványok), akkor szilárd távoli platformmal rendelkezik a napi műveletekhez és az incidensekre való reagáláshoz.
Technológiára és internetes kérdésekre szakosodott szerkesztő, több mint tíz éves tapasztalattal a különböző digitális médiában. Szerkesztőként és tartalomkészítőként dolgoztam e-kereskedelmi, kommunikációs, online marketing és reklámcégeknél. Írtam közgazdasági, pénzügyi és egyéb ágazati weboldalakra is. A munkám egyben a szenvedélyem is. Most a cikkeimen keresztül Tecnobits, Igyekszem minden újdonságot és új lehetőséget feltárni, amit a technológia világa kínál nekünk nap mint nap életünk javítása érdekében.