Kaip valdyti kompiuterį iš mobiliojo telefono naudojant „PowerShell Remoting“

Paskutiniai pakeitimai: 15/10/2025

  • Nuotolinis valdymas naudoja „WinRM“ / „WS-Man“ (HTTP / HTTPS) ir leidžia 1 su 1, 1 su daugeliu ir nuolatinius seansus su saugumo valdikliais.
  • „Enable-PSRemoting“ konfigūruoja paslaugą, klausytojus ir užkardą; HTTPS reikalauja galiojančio sertifikato ir CN/SAN atitikmens.
  • Rezultatai grąžinami deserializuoti; metodai iškviečiami nuotoliniame scenarijų bloke, o pasirinktiniai galiniai taškai naudojami smulkiam delegavimui.
„PowerShell“ nuotolinis valdymas

Galbūt jau automatizuojate daugelį užduočių naudodami „PowerShell“ lokaliai, bet kur jūs iš tikrųjų... „PowerShell“ nuotolinis valdymas daro skirtumą Tai yra tada, kai vykdote komandas nuotoliniuose kompiuteriuose, nesvarbu, keliuose ar šimtuose, interaktyviai arba lygiagrečiai. Ši technologija, prieinama nuo „Windows PowerShell 2.0“ ir patobulinta nuo „3.0“, yra pagrįsta WS-Management (WinRM) ir konvertuoja PowerShell " patikimame, keičiamo dydžio ir saugiame nuotolinio valdymo kanale.

Visų pirma, svarbu suprasti dvi pagrindines idėjas: cmdlet'us su -Kompiuterio pavadinimo parametras (pvz., „Get-Process“ arba „Get-Service“) nėra ilgalaikis kelias, kurį rekomenduoja „Microsoft“, o „PowerShell Remoting“ neveikia kaip „įsilaužimas“. Tiesą sakant, vykdo abipusį autentifikavimą, audito žurnalus ir atsižvelgia į jūsų įprastus leidimus, neišsaugodami prisijungimo duomenų ir stebuklingai nepaleisdami nieko su super privilegijomis.

Kas yra „PowerShell Remoting“ ir kodėl jį naudoti?

su „PowerShell“ nuotolinis valdymas Jums gali vykdyti beveik bet kokią komandą nuotoliniu būdu kuriuos galėtumėte paleisti vietinėje sesijoje, pradedant paslaugų užklausomis ir baigiant konfigūracijų diegimu, ir tai daryti šimtuose kompiuterių vienu metu. Skirtingai nuo cmdlet, kurie priima -ComputerName (daugelis naudoja DCOM/RPC), nuotolinis valdymas keliauja per WS-Man (HTTP/HTTPS), kuris yra labiau palankus užkardai, leidžia lygiagretumą ir perkelia darbą į nuotolinį kompiuterį, o ne į klientą.

Tai reiškia tris praktinius privalumus: geresnį našumą atliekant didelio masto operacijas, mažesnė trintis tinkluose su ribojančiomis taisyklėmis ir saugumo modeliu, atitinkančiu „Kerberos“ / „HTTPS“. Be to, kadangi kiekviena cmdlet neįdiegia savo nuotolinio valdymo, nuotolinis valdymas Tai tinka bet kokiam scenarijui ar vaidmeniui kuris yra prieinamas paskirties vietoje.

Pagal numatytuosius nustatymus naujausiuose „Windows“ serveriuose įjungtas nuotolinis valdymas; „Windows 10/11“ jūs jį aktyvuojate su viena cmdlet. Taip, galite naudoti alternatyvius kredencialus, nuolatinius seansus, pasirinktinius galinius taškus ir kt.

Pastaba: Nuotolinis valdymas nereiškia visko atidarymo. Pagal numatytuosius nustatymus tik administratoriai Jie gali prisijungti, o veiksmai vykdomi naudojant jų tapatybę. Jei jums reikia tikslaus delegavimo, pasirinktiniai galiniai taškai leidžia jums atskleisti tik pagrindines komandas.

„PowerShell“ nuotolinio valdymo architektūra

Kaip tai veikia viduje: „WinRM“, „WS-Man“ ir prievadai

„PowerShell“ nuotolinis valdymas veikia kliento-serverio modelyje. Klientas siunčia WS-Management užklausas per HTTP (5985/TCP) arba HTTPS (5986/TCP)Tiksliniame įrenginyje „Windows Remote Management“ (WinRM) tarnyba klausosi, nustato galinį tašką (seanso konfigūracija) ir fone palaiko „PowerShell“ seansą (procesas wsmprovhost.exe). serializuotų rezultatų grąžinimas klientui XML formatu per SOAP.

Pirmą kartą įjungus nuotolinį darbą, sukonfigūruojami klausytojai, atidaroma atitinkama užkardos išimtis ir sukuriamos sesijos konfigūracijos. Nuo „PowerShell 6+“ versijose egzistuoja keli leidimai ir Enable-PSRemoting Registruoja galinius taškus pavadinimais, kurie atspindi versiją (pvz., „PowerShell.7“ ir „PowerShell.7.xy“).

Išskirtinis turinys – spustelėkite čia  Visuotinis įspėjimas apie kritinį „Google Chrome“ pažeidžiamumą: ką reikia žinoti ir kaip apsisaugoti

Jei savo aplinkoje leidžiate tik HTTPS, galite sukurti saugus klausytojas su patikimos CA išduotu sertifikatu (rekomenduojama). Kita alternatyva – naudoti „TrustedHosts“ ribotai, atsižvelgiant į riziką, darbo grupių scenarijams arba ne domeno kompiuteriams.

Atkreipkite dėmesį, kad „Powershell Remoting“ gali veikti kartu su cmdlet su -ComputerName, bet „Microsoft“ stumia „WS-Man“ kaip standartinis ir ateičiai atsparus nuotolinio administravimo būdas.

„PowerShell“ nuotolinio valdymo ir naudingų parametrų įjungimas

„Windows“ sistemoje tiesiog atidarykite „PowerShell“ kaip administratorius ir paleiskite Enable-PSRemotingSistema paleidžia „WinRM“, sukonfigūruoja automatinį paleidimą, įjungia klausytoją ir sukuria atitinkamas užkardos taisykles. Klientams, turintiems viešojo tinklo profilį, galite tai sąmoningai leisti naudodami -SkipNetworkProfileCheck (ir tada sustiprinkite konkrečiomis taisyklėmis):

Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force

 

Sintaksė taip pat leidžia, -Patvirtinti y -Kas, jeigu pakeitimų valdymui. Atminkite: Tai galima tik „Windows“ sistemoje, ir turite paleisti padidintas konsolės teises. Sukurtos taisyklės skiriasi serverio ir kliento leidimuose, ypač viešuosiuose tinkluose, kur pagal numatytuosius nustatymus jos apsiriboja vietiniu potinkliu, nebent išplečiate taikymo sritį (pvz., naudodami „Set-NetFirewallRule“).

Norėdami išvardyti jau įrašytas sesijos konfigūracijas ir patvirtinti, kad viskas paruošta, naudokite Get-PSSessionConfigurationJei rodomi „PowerShell.x“ ir „Workflow“ galiniai taškai, nuotolinio valdymo sistema veikia.

Nuotolinė sesija su „PowerShell“

Naudojimo režimai: 1–1, 1–3 ir nuolatiniai seansai

Kai jums reikia interaktyvios konsolės viename kompiuteryje, kreipkitės į Enter-PSSessionPasirodys raginimas ir viskas, ką vykdysite, bus perduota nuotoliniam kompiuteriui. Galite pakartotinai naudoti kredencialus naudodami „Get-Credential“, kad nereikėtų jų nuolat įvesti iš naujo:

$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession

Jei norite siųsti komandas keliems kompiuteriams vienu metu, šis įrankis yra... "Invoke-Command" su scenarijų bloku. Pagal numatytuosius nustatymus jis paleidžia iki 32 lygiagrečių jungčių (reguliuojamas naudojant -ThrottleLimit). Rezultatai grąžinami kaip deserializuoti objektai (be „gyvų“ metodų):

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred

Reikia iškviesti tokį metodą kaip .Stop() arba .Start()? Padarykite tai. scenarijaus bloko viduje nuotoliniame kontekste, o ne vietiniame deserializuotame objekte, ir viskas. Jei yra lygiavertė cmdlet („Stop-Service“ / „Start-Service“), paprastai aiškumo dėlei geriau ją naudoti.

Kad išvengtumėte sesijų pradžios ir pabaigos išlaidų kiekviename skambutyje, sukurkite Nuolatinė PSSession ir pakartotinai naudoti jį keliuose iškvietimuose. Norėdami sukurti ryšį, naudokite komandą „New-PSSession“, o norėdami pakartotinai naudoti tunelį, naudokite komandą „Invoke-Command-Session“. Baigę nepamirškite jo uždaryti naudodami komandą „Remove-PSSession“.

Serializavimas, apribojimai ir geroji praktika

Svarbi detalė: keliaujant objektai „suplokštėja“ ir atvyksta kaip deserializuotos momentinės kopijos, su savybėmis, bet be metodų. Tai sąmoningai padaryta ir taupo pralaidumą, tačiau tai reiškia, kad negalite naudoti narių, kurie vykdo logiką (pvz., .Kill()) vietinėje kopijoje. Sprendimas akivaizdus: iškviesti šiuos metodus. nuotoliniu būdu ir jei jums reikia tik tam tikrų laukų, filtruokite naudodami „Select-Object“, kad išsiųstumėte mažiau duomenų.

Išskirtinis turinys – spustelėkite čia  Kaip išvengti failų sugadinimo?

Skriptuose venkite „Enter-PSSession“ (skirta interaktyviam naudojimui) ir naudokite „Invoke-Command“ su skriptų blokais. Jei numatote kelis iškvietimus arba reikia išsaugoti būseną (kintamuosius, importuotus modulius), naudoti nuolatinius seansus ir, jei taikoma, atjunkite / iš naujo prijunkite juos naudodami „Disconnect-PSSession“ / „Connect-PSSession“ „PowerShell 3.0+“ versijoje.

Autentifikavimas, HTTPS ir scenarijai ne domene

Domene gimtoji autentifikacija yra Kerberos Ir viskas vyksta sklandžiai. Kai įrenginys negali patvirtinti serverio pavadinimo arba jungiatės prie CNAME IP adreso ar slapyvardžio, jums reikia vieno iš šių dviejų variantų: 1) Klausytuvas HTTPS su sertifikatu išduotą patikimos CA, arba 2) pridėti paskirties vietą (pavadinimą arba IP adresą) prie „TrustedHosts“ ir naudoti prisijungimo duomenisAntrasis variantas išjungia abipusį to pagrindinio kompiuterio autentifikavimą, todėl aprėptis sumažinama iki minimumo.

Norint nustatyti HTTPS klausytoją, reikia sertifikato (idealiu atveju iš jūsų PKI arba viešosios CA), įdiegti jį komandos saugykloje ir susieti su „WinRM“. Tada užkardoje atidaromas 5986/TCP prievadas ir klientas jį naudoja. -Naudokite SSL nuotolinėse cmdlet'uose. Kliento sertifikato autentifikavimui galite susieti sertifikatą su vietine paskyra ir prisijungti prie -Sertifikato nykščio atspaudas (Enter-PSSession tiesiogiai to nepriima; pirmiausia sukurkite sesiją naudodami New-PSSession.)

Antras šuolis ir įgaliojimų delegavimas

Garsusis „dvigubas šuolis“ įvyksta, kai prisijungus prie serverio, jums reikia, kad tas serveris pasiektų trečias šaltinis jūsų vardu (pvz., SMB bendrinamas failas). Yra du būdai, kaip tai padaryti: „CredSSP“ ir ištekliais pagrįstas apribotas „Kerberos“ delegavimas.

su CredSSP Jūs suteikiate klientui ir tarpininkui galimybę aiškiai deleguoti kredencialus ir nustatote politiką (GPO), leidžiančią deleguoti duomenis konkretiems kompiuteriams. Tai greita konfigūruoti, bet mažiau saugu, nes kredencialai perduodami atviru tekstu užšifruotame tunelyje. Visada apribokite šaltinius ir paskirties vietas.

Pageidaujama alternatyva domene yra apribota Kerberos delegacija (ištekliais pagrįstas apribotas delegavimas) šiuolaikinėje AD. Tai leidžia galiniam punktui pasikliauti gaunamu delegavimu iš tarpinio taško konkrečioms paslaugoms, taip išvengiant jūsų tapatybės atskleidimo pradinio ryšio metu. Reikalingi naujausi domeno valdikliai ir atnaujintas RSAT.

Pasirinktiniai galiniai taškai (sesijos konfigūracijos)

Vienas iš nuotolinio valdymo brangakmenių yra galimybė registruoti prisijungimo taškus su pritaikytos galimybės ir ribosPirmiausia sugeneruojate failą su „New-PSSessionConfigurationFile“ (moduliai, kuriuos reikia iš anksto įkelti, matomos funkcijos, slapyvardžiai, „ExecutionPolicy“, „LanguageMode“ ir kt.), o tada jį užregistruojate su „Register-PSSessionConfiguration“, kur galite nustatyti RunAsCredential ir teises (SDDL arba GUI sąsaja su -ShowSecurityDescriptorUI).

Saugiam delegavimui naudokite tik būtiniausius parametrus, naudodami „-VisibleCmdlets/-VisibleFunctions“, o jei reikia, išjunkite nemokamus scenarijus. Kalbos režimas Apribota kalba arba „NoLanguage“. Jei paliksite „FullLanguage“, kažkas galėtų panaudoti scenarijaus bloką, kad iškviestų neatskleistas komandas, kurios kartu su „RunAs“ tai būtų skylėSmulkiomis šukomis suprojektuokite šiuos galinius taškus ir dokumentuokite jų apimtį.

Domenai, GPO ir grupinė programinė įranga

AD galite diegti „Powershell Remoting“ dideliu mastu su GPO: leisti automatinę „WinRM“ klausytojų konfigūraciją, nustatykite paslaugą į „Automatinis“ir sukurkite užkardos išimtį. Atminkite, kad GPO keičia nustatymus, bet ne visada įjungia paslaugą akimirksniu; kartais reikia paleisti iš naujo arba priverstinai atlikti „gpupdate“.

Išskirtinis turinys – spustelėkite čia  Kaip naudoti „Norton Mobile Security“?

Darbo grupėse (ne domeno) konfigūruokite nuotolinį valdymą su Enable-PSRemoting, nustatykite „TrustedHosts“ kliento serveryje („winrm set winrm/config/client @{TrustedHosts=»host1,host2″}“) ir naudokite vietinius kredencialus. HTTPS atveju galite prijungti savarankiškai pasirašytus sertifikatus, nors rekomenduojama naudoti patikimą CA ir patvirtinti vardą kurį naudosite sertifikate kaip „-ComputerName“ (CN/SAN atitikmuo).

Pagrindinės cmdlet'ai ir sintaksė

Saujelė komandosų dengia 90 % kasdienių scenarijųNorėdami įjungti / išjungti:

Enable-PSRemoting    
Disable-PSRemoting

Interaktyvus užsiėmimas 1 prieš 1 ir išėjimas:

Enter-PSSession -ComputerName SEC504STUDENT 
Exit-PSSession

1 su daugeliu, su paralelizmu ir įgaliojimais:

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred

Nuolatiniai seansai ir pakartotinis naudojimas:

$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s

Testavimas ir WinRM naudinga:

Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https

Praktinės pastabos apie užkardą, tinklą ir prievadus

Atidarykite 5985/TCP HTTP ir 5986/TCP HTTPS tikslo kompiuteryje ir bet kokia tarpinė užkarda„Windows“ klientų sistemose „Enable-PSRemoting“ sukuria taisykles domeno ir privatiems profiliams; viešiesiems profiliams tai taikoma tik vietiniam potinkliui, nebent modifikuojate taikymo sritį naudodami „Set-NetFirewallRule -RemoteAddress Any“ (reikšmę galite įvertinti atsižvelgdami į savo riziką).

Jei naudojate SOAR/SIEM integracijas, kurios vykdo nuotolines komandas (pvz., iš XSOAR), įsitikinkite, kad serveris turi DNS sprendimas prie pagrindinių kompiuterių, ryšys su 5985/5986 ir prisijungimo duomenys su pakankamomis vietinėmis teisėmis. Kai kuriais atvejais NTLM/Basic autentifikavimą gali reikėti pakoreguoti (pvz., naudoti vietinį vartotoją Basic serveryje su SSL).

„Enable-PSRemoting“ parametrai (veiklos santrauka)

-Patvirtinti prašo patvirtinimo prieš vykdant; -Priversti ignoruoja įspėjimus ir atlikite reikiamus pakeitimus; - „SkipNetworkProfileCheck“ įgalina nuotolinį valdymą viešuosiuose klientų tinkluose (pagal numatytuosius nustatymus apribotas vietiniu potinkliu); - „WhatIf“ parodo, kas nutiktų netaikant pakeitimų. Be to, kaip ir bet kuri standartinė cmdlet, ji palaiko bendri parametrai (-Darbus, -KlaidosVeiksmas ir kt.).

Atminkite, kad „Įjungti“ nesukuria jums HTTPS klausytojų ar sertifikatų; jei jums reikia nuo pat pradžių šifruoti nuo galo iki galo ir autentifikuoti pagal sertifikatai, sukonfigūruokite HTTPS klausytoją ir patikrinkite CN/SAN pagal pavadinimą, kurį naudosite lauke „-ComputerName“.

Naudingos „WinRM“ ir „PowerShell“ nuotolinio valdymo komandos

Kai kurie būtini naktiniai reikmenys kasdienai:

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

Valdant „Windows“ dideliu mastu, nuotolinis valdymas leidžia pereiti nuo „kompiuterio su kompiuteriu“ prie deklaratyvaus ir saugaus požiūrio. Derinant nuolatinius seansus, stiprų autentifikavimą („Kerberos“ / HTTPS), apribotus galinius taškus ir aiškius diagnostikos pėdsakus, įgyjate greitį ir kontrolę neaukojant saugumo ar audito. Jei taip pat standartizuosite GPO aktyvinimą ir įvaldysite specialius atvejus („TrustedHosts“, dvigubas šuolis, sertifikatai), turėsite patikimą nuotolinę platformą kasdienėms operacijoms ir incidentų reagavimui.

nematoma kenkėjiška programa
Susijęs straipsnis:
Kaip apsaugoti kompiuterį nuo nematomų kenkėjiškų programų, tokių kaip „XWorm“ ir „NotDoor“