Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PowerShell má několik funkcí navržených ke zlepšení zabezpečení skriptovacího prostředí.
Zásada provádění
Zásady spouštění PowerShellu jsou bezpečnostní funkce, která řídí podmínky, za kterých PowerShell načítá konfigurační soubory a spouští skripty. Tato funkce pomáhá zabránit spuštění škodlivých skriptů. Nastavení zásad skupiny můžete použít k nastavení zásad spouštění pro počítače a uživatele. Zásady spouštění se vztahují pouze na platformu Windows.
Další informace naleznete v části about_Execution_Policies.
Použití třídy SecureString
PowerShell obsahuje několik rutin, které podporují použití System.Security.SecureString třídy.
A stejně jako u jakékoli třídy .NET můžete použít SecureString ve vlastních skriptech. Microsoft však nedoporučuje používat SecureString pro nový vývoj. Společnost Microsoft doporučuje vyhnout se používání hesel a spoléhat se na jiné prostředky ověřování, jako jsou certifikáty nebo ověřování systému Windows.
PowerShell nadále podporuje třídu SecureString kvůli zpětné kompatibilitě. Použití řetězce SecureString je stále bezpečnější než použití řetězce prostého textu. PowerShell stále spoléhá na typ SecureString , aby se zabránilo náhodnému vystavení obsahu konzole nebo v protokolech. Řetězec SecureString používejte pečlivě, protože jej lze snadno převést na řetězec ve formátu prostého textu. Úplnou diskuzi o používání secureString naleznete v dokumentaci ke třídě System.Security.SecureString.
Protokolování modulů a bloků skriptů
Protokolování modulů umožňuje zapnout protokolování pro vybrané moduly PowerShellu. Toto nastavení platí pro všechny relace v tomto počítači. PowerShell zaznamenává události spuštění kanálu pro zadané moduly v protokolu událostí Windows PowerShellu.
Protokolování bloků skriptů umožňuje zaznamenávat zpracování příkazů, bloků skriptů, funkcí a skriptů – ať už jsou spouštěny interaktivně, nebo automatizovaně. PowerShell tyto informace protokoluje do protokolu událostí Microsoft-Windows-PowerShell/Operational .
Další informace najdete v následujících článcích:
Podpora AMSI
Rozhraní AMSI (Windows Antimalware Scan Interface) je rozhraní API, které umožňuje aplikacím předávat akce antimalwarovým skenerům, jako je Windows Defender, a prohledávat škodlivé datové části. Počínaje PowerShellem 5.1 předá PowerShell spuštěný ve Windows 10 (a novějším) všechny bloky skriptů do AMSI.
PowerShell 7.3 rozšiřuje data, která odesílá do AMSI za účelem kontroly. Teď obsahuje všechny vyvolání metod .NET.
Další informace o AMSI najdete v tématu Jak AMSI pomáhá.
Režim omezeného jazyka
Režim ConstrainedLanguage chrání váš systém omezením rutin a typů .NET povolených v relaci PowerShellu. Úplný popis najdete v tématu about_Language_Modes.
Řízení aplikace
Windows 10 obsahuje dvě technologie, Řízení aplikací pro firmy a AppLocker , které můžete použít k řízení aplikací. PowerShell zjistí, jestli se vynucuje zásada řízení aplikací pro celý systém. Zásady použijí určité chování při spouštění bloků skriptů, souborů skriptů nebo načítání souborů modulů, aby se zabránilo libovolnému spuštění kódu v systému.
Řízení aplikací pro firmy je navržené jako funkce zabezpečení v rámci kritérií údržby definovaných centrem Microsoft Security Response Center (MSRC). Řízení aplikací pro firmy je upřednostňovaným systémem řízení aplikací pro Windows. Další informace o tom, jak PowerShell podporuje AppLocker a Řízení aplikací pro firmy, najdete v tématu Použití řízení aplikací k zabezpečení PowerShellu.
AppLocker je starší systém pro řízení aplikací, který je stále podporován ve Windows 11. AppLocker není funkce zabezpečení v rámci kritérií údržby definovaných nástrojem MSRC. Další informace o kritériích údržby najdete v tématu zabezpečení od Microsoftu Kritéria údržby pro Windows.
Režim uzamčení systému
V PowerShellu je režim Uzamčení systému abstrakcí zásad řízení aplikací pro celý systém vynucených Windows prostřednictvím Řízení aplikací pro firmy nebo AppLockeru. Když je zásada řízení aplikací aktivní, PowerShell přejde do režimu Uzamčení systému. V režimu Uzamčení systému určují zásady řízení aplikací režim jazyka pro každý runspace.
Důležité
Bez režimu Uzamčení systému se režim jazyka nerozšíruje mezi runspaces. Každý runspace se nezávisle dotazuje na zásady řízení aplikací systému Windows, aby určil svůj jazykový režim.
Nastavení jazykového režimu v jednom runspace neovlivní ostatní runspace. Bez aktivní zásady řízení aplikací se nové prostředí Runspaces ve výchozím nastavení nastaví do FullLanguage režimu.
Seznam softwarových součástí (SBOM)
Počínaje PowerShellem 7.2 všechny instalační balíčky obsahují SBOM (Software Bill of Materials). Tým PowerShellu také vytváří SBOM pro moduly, které vlastní, ale dodává nezávisle na PowerShellu.
Soubory SBOM najdete v následujících umístěních:
- V PowerShellu najděte SBOM na adrese
$PSHOME/_manifest/spdx_2.2/manifest.spdx.json. - Pro moduly najděte SBOM ve složce modulu v části
_manifest/spdx_2.2/manifest.spdx.json.
Vytvoření a publikování SBOM je prvním krokem k modernizaci kybernetické bezpečnosti federální vlády a zlepšení zabezpečení softwarového dodavatelského řetězce. Další informace o této iniciativě najdete v blogovém příspěvku Generování SBOM pomocí SPDX ve společnosti Microsoft.
Zabezpečený přenos dat ve vzdálených relacích PowerShellu
Před verzí PowerShellu v7.6-preview5 se k zašifrování objektu Session_Key před jeho odesláním do vzdálené relace PowerShellu používá . Protokol vzdálené komunikace PowerShellu (PSRP) provádí výměnu klíčů mezi klientem a serverem, když je třeba přenést objekt SecureString. Výměna zahrnuje následující kroky:
- Na straně klienta se vygeneruje pár veřejného a privátního klíče a odešle veřejný klíč na server.
- Server vygeneruje klíč relace pro symetrické šifrování.
- Server pomocí veřejného klíče zašifruje klíč relace a odešle ho klientovi.
- Klient i server používají nový klíč relace k šifrování objektu SecureString .
Protokol PowerShell Remoting Protocol (PSRP) používá při výměně klíčů algoritmus RSAEncryptionPadding.Pkcs1. Algoritmus není zabezpečený, takže výměna klíčů neposkytuje žádné další zabezpečení.
Důležité
K zajištění zabezpečeného přenosu dat přes PSRP musíte použít zabezpečenou přenosovou vrstvu.
Počínaje PowerShellem v7.6-preview.5 byla výměna klíčů označena jako zastaralá. Verze PSRP se navýšila na verzi 2.4 a zahrnuje následující změny:
Následující zprávy PSRP jsou zastaralé, pokud jsou klient i server verze 2.4 nebo vyšší:
- PUBLIC_KEY
- PUBLIC_KEY_REQUEST
- ENCRYPTED_SESSION_KEY
Kroky šifrování a dešifrování pro
SecureStringse přeskočí, pokud mají klient i server verzi 2.4 nebo vyšší.
Tato změna je zpětně kompatibilní.
- Pro staré klienty nebo servery (v2.3 nebo nižší) se výměna klíčů stále používá v případě potřeby.
- PSRP může používat vzdálené relace prostřednictvím pojmenované roury, pokud jsou klient i server na stejném počítači.
Vzhledem k tomu, že je možné, aby se vzdálený klient připojil k pojmenovaným kanálu a data se už nešifrují pomocí klíče relace, pojmenovaný kanál (použitý pro
Enter-PSHostProcess) vzdálený klient odmítne.
Kritéria údržby zabezpečení
Hranice zabezpečení poskytuje logické oddělení mezi kódem a daty domén zabezpečení s různými úrovněmi důvěryhodnosti. Funkce zabezpečení vycházejí z hranic zabezpečení, které poskytují robustní ochranu před konkrétními hrozbami. U funkcí zabezpečení v této kategorii Microsoft hodlá řešit nahlášená ohrožení zabezpečení prostřednictvím údržby.
Funkce zabezpečení PowerShellu
- Uzamčení systému s kontrolou aplikací pro firmy
- Omezený jazykový režim s funkcí Řízení aplikací pro firmy
Další informace najdete v dokumentaci Kritéria údržby zabezpečení společnosti Microsoft pro Windows.
V některých případech může funkce zabezpečení poskytnout ochranu před hrozbou, aniž by mohla poskytovat robustní obranu. Tyto funkce zabezpečení se obvykle označují jako podrobné funkce ochrany nebo omezení rizik, protože poskytují další zabezpečení, ale mohou mít omezení návrhu, která jim brání v úplném zmírnění hrozby. Obejití bezpečnostního prvku vícevrstvé ochrany samo o sobě nepředstavuje přímé riziko, protože útočník musí také nalézt zranitelnost, která narušuje bezpečnostní hranici, nebo se musí spoléhat na další techniky, jako je sociální inženýrství, aby dosáhl počáteční fáze kompromitace zařízení.
Podrobné funkce PowerShellu pro ochranu
- Režim omezeného jazyka pomocí AppLockeru nebo nakonfigurovaný prostřednictvím konfigurace relace nebo ručního nastavení
$ExecutionContext.SessionState.LanguageMode - Uzamčení systému pomocí AppLockeru
- Zásady spouštění