Sdílet prostřednictvím


Důležité informace o zabezpečení vzdálené komunikace PowerShellu s využitím WinRM

Vzdálená správa PowerShellu je doporučený způsob správy systémů Windows. Vzdálená komunikace PowerShellu je ve výchozím nastavení zapnutá ve Windows Serveru 2012 R2 a novějších verzích. Tento dokument se zabývá aspekty zabezpečení, doporučeními a osvědčenými postupy při používání vzdálené komunikace PowerShellu.

Co je vzdálené ovládání PowerShellu?

PowerShell Remoting používá vzdálenou správu systému Windows (WinRM), aby uživatelé mohli spouštět příkazy PowerShellu na vzdálených počítačích. WinRM je implementace webových služeb pro správu (WS-Management) protokolu Microsoft. Další informace o používání PowerShell Remoting najdete v části Running Remote Commands.

PowerShell Remoting není totéž jako použití parametru ComputerName cmdletu ke spuštění na vzdáleném počítači, které jako základní protokol používá vzdálené volání procedur (RPC).

Výchozí nastavení vzdálené komunikace PowerShellu

Vzdálená správa PowerShellu (a WinRM) se používají na následujících portech:

  • HTTP: 5985
  • HTTPS: 5986

Ve výchozím nastavení povoluje PowerShell Remoting pouze připojení členů skupiny Administrators. Relace jsou spuštěny v uživatelském kontextu, takže všechna řízení přístupu operačního systému použitá pro jednotlivé uživatele a skupiny na ně nadále platí při připojení přes PowerShell Remoting.

Výchozí pravidlo brány Windows Firewall pro vzdálené komunikace PowerShellu v privátních sítích přijímá všechna připojení. Ve veřejných sítích umožňuje výchozí pravidlo brány firewall Windows připojení PowerShell Remoting pouze ze stejné podsítě. Toto pravidlo musíte explicitně změnit, abyste otevřeli vzdálené komunikace PowerShellu pro všechna připojení ve veřejné síti.

Varování

Pravidlo brány firewall pro veřejné sítě je určené k ochraně počítače před potenciálně škodlivými pokusy o externí připojení. Při odebírání tohoto pravidla buďte opatrní.

Izolace procesů

Vzdálené prostředí PowerShell používá WinRM pro komunikaci mezi počítači. WinRM běží jako služba pod účtem síťové služby a vytváří izolované procesy spuštěné jako uživatelské účty pro hostování instancí PowerShellu. Instance PowerShellu spuštěné jako jeden uživatel nemá přístup k procesu, na kterém běží instance PowerShellu jako jiný uživatel.

Protokoly událostí generované vzdálenou správou v PowerShellu

FireEye poskytuje dobrý přehled protokolů událostí a dalších důkazů zabezpečení generovaných relacemi vzdálené komunikace PowerShellu, které jsou k dispozici v vyšetřování útoků PowerShellu.

Šifrování a přenosové protokoly

Je užitečné zvážit zabezpečení vzdáleného připojení PowerShellu ze dvou pohledů: počáteční ověřování a nepřetržitá komunikace.

Bez ohledu na použitý přenosový protokol (HTTP nebo HTTPS) WinRM vždy šifruje veškerou vzdálenou komunikaci PowerShellu po počátečním ověření.

Počáteční ověřování

Ověřování potvrzuje identitu klienta serveru – a v ideálním případě – server klientovi.

Když se klient připojí k doménovému serveru pomocí názvu počítače, výchozí ověřovací protokol je kerberos. Kerberos zaručuje identitu uživatele i identitu serveru bez odeslání jakéhokoli druhu opakovaně použitelných přihlašovacích údajů.

Když se klient připojí k doménovému serveru pomocí jeho IP adresy nebo se připojí k serveru pracovní skupiny, ověřování kerberos není možné. V takovém případě se vzdálené komunikace PowerShellu spoléhá na protokol ověřování NTLM. Ověřovací protokol NTLM zaručuje identitu uživatele bez odeslání jakéhokoli druhu delegovatelných přihlašovacích údajů. K prokázání identity uživatele vyžaduje protokol NTLM, aby klient i server počítaly klíč relace z hesla uživatele bez nutnosti výměny samotného hesla. Server obvykle nezná heslo uživatele, takže komunikuje s řadičem domény, který zná heslo uživatele a vypočítá klíč relace pro server.

Protokol NTLM však nezaručuje identitu serveru. Stejně jako u všech protokolů, které k ověřování používají protokol NTLM, by útočník s přístupem k účtu počítače připojenému k doméně mohl vyvolat řadič domény pro výpočet klíče relace NTLM a tím zosobnit server.

Ověřování založené na protokolu NTLM je ve výchozím nastavení zakázané, ale může být povoleno konfigurací SSL na cílovém serveru nebo konfigurací nastavení Důvěryhodné hostitele WinRM v klientovi.

Použití certifikátů SSL k ověření identity serveru během připojení založených na protokolu NTLM

Vzhledem k tomu, že ověřovací protokol NTLM nemůže zajistit identitu cílového serveru (pouze to, že už zná vaše heslo), můžete cílové servery nakonfigurovat tak, aby používaly PROTOKOL SSL pro vzdálenou komunikace PowerShellu. Přiřazení certifikátu SSL k cílovému serveru (pokud je vydáno certifikační autoritou, které klient důvěřuje) umožňuje ověřování založené na protokolu NTLM, které zaručuje identitu uživatele i identitu serveru.

Ignorování chyb identit serveru založených na protokolu NTLM

Pokud je nasazení certifikátu SSL na server pro připojení NTLM neproveditelné, můžete potlačit chyby týkající se identity přidáním serveru do seznamu TrustedHosts. Upozorňujeme, že přidání názvu serveru do seznamu TrustedHosts by nemělo být považováno za žádnou formu prohlášení o důvěryhodnosti samotných hostitelů – protože ověřovací protokol NTLM nezaručuje, že se ve skutečnosti připojujete k hostiteli, ke kterému se chcete připojit. Místo toho byste měli zvážit nastavení TrustedHosts jako seznam hostitelů, pro které chcete potlačit chybu vygenerovanou nemožností ověřit identitu serveru.

Průběžná komunikace

Po dokončení počátečního ověřování zašifruje WinRM probíhající komunikaci. Při připojování přes PROTOKOL HTTPS se protokol TLS používá k vyjednání šifrování používaného k přenosu dat. Při připojování přes protokol HTTP se šifrování na úrovni zpráv určuje počátečním ověřovacím protokolem.

  • Základní ověřování neposkytuje žádné šifrování.
  • Ověřování NTLM používá šifru RC4 s 128bitovým klíčem.
  • Šifrování autentizace Kerberos je určeno hodnotou etype v lístku TGS. Jedná se o AES-256 v moderních systémech.
  • Šifrování CredSSP používá šifrovací sadu PROTOKOLU TLS, která byla vyjednána metodou handshake.

Vytvoření druhého přeskoku

Ve výchozím nastavení používá dálkovou komunikaci prostředí PowerShell k ověřování protokol Kerberos (pokud je k dispozici) nebo NTLM. Oba tyto protokoly se ověřují na vzdáleném počítači bez odeslání přihlašovacích údajů. Jedná se o nejbezpečnější způsob ověřování, ale protože vzdálený počítač nemá přihlašovací údaje uživatele, nemůže přistupovat k jiným počítačům a službám jménem uživatele. To se označuje jako "problém druhého skoku".

Existuje několik způsobů, jak se tomuto problému vyhnout. Popisy těchto metod a výhody a nevýhody jednotlivých metod najdete v tématu Vytvoření druhého skoku v PowerShellu pro vzdálenou komunikaci.

Odkazy