Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Program PowerShell ma kilka funkcji zaprojektowanych w celu zwiększenia bezpieczeństwa środowiska skryptowego.
Zasady wykonywania
Zasady wykonywania programu PowerShell to funkcja bezpieczeństwa, która kontroluje warunki, w których program PowerShell ładuje pliki konfiguracji i uruchamia skrypty. Ta funkcja pomaga zapobiegać wykonywaniu złośliwych skryptów. Możesz użyć ustawienia zasad grupy, aby ustawić zasady wykonywania dla komputerów i użytkowników. Zasady wykonywania dotyczą tylko platformy Windows.
Aby uzyskać więcej informacji, przejdź do about_Execution_Policies.
Korzystanie z klasy SecureString
Program PowerShell ma kilka poleceń cmdlet, które obsługują użycie System.Security.SecureString klasy .
Podobnie jak w przypadku dowolnej klasy platformy .NET, możesz użyć funkcji SecureString we własnych skryptach. Firma Microsoft nie zaleca jednak używania funkcji SecureString do tworzenia nowych rozwiązań. Firma Microsoft zaleca unikanie używania haseł i poleganie na innych metodach uwierzytelniania, takich jak certyfikaty lub uwierzytelnianie systemu Windows.
Program PowerShell nadal obsługuje klasę SecureString w celu zapewnienia zgodności z poprzednimi wersjami. Korzystanie z protokołu SecureString jest nadal bezpieczniejsze niż używanie ciągu zwykłego tekstu. Program PowerShell nadal korzysta z typu SecureString , aby uniknąć przypadkowego ujawnienia zawartości konsoli lub w dziennikach. Ostrożnie używaj protokołu SecureString , ponieważ można go łatwo przekonwertować na zwykły ciąg tekstowy. Aby zapoznać się z pełną dyskusją na temat używania protokołu SecureString, zobacz dokumentację klasy System.Security.SecureString.
Rejestrowanie modułów i bloków skryptu
Rejestrowanie modułów umożliwia włączenie rejestrowania dla wybranych modułów programu PowerShell. To ustawienie jest skuteczne we wszystkich sesjach na komputerze. Program PowerShell rejestruje zdarzenia wykonywania potoku dla określonych modułów w dzienniku zdarzeń programu Windows PowerShell.
Rejestrowanie bloków skryptów umożliwia rejestrowanie na potrzeby przetwarzania poleceń, bloków skryptów, funkcji i skryptów — zarówno wywoływanych interakcyjnie, jak i za pośrednictwem automatyzacji. Program PowerShell rejestruje te informacje w dzienniku zdarzeń Microsoft-Windows-PowerShell/Operational .
Aby uzyskać więcej informacji, zobacz następujące artykuły:
Obsługa usługi AMSI
Windows Antimalware Scan Interface (AMSI) to interfejs API, który umożliwia aplikacjom przekazywanie akcji do skanera ochrony przed złośliwym kodem, takiego jak Windows Defender, w celu skanowania pod kątem złośliwych ładunków. Począwszy od programu PowerShell 5.1, program PowerShell uruchomiony w systemie Windows 10 (i nowszym) przekazuje wszystkie bloki skryptów do usługi AMSI.
Program PowerShell 7.3 rozszerza dane wysyłane do usługi AMSI w celu przeprowadzenia inspekcji. Teraz zawiera wszystkie wywołania metod platformy .NET.
Aby uzyskać więcej informacji o usłudze AMSI, zobacz Jak pomaga usługa AMSI.
Tryb języka ograniczonego
Tryb ConstrainedLanguage chroni system poprzez ograniczenie poleceń cmdlet i typów .NET dozwolonych w sesji programu PowerShell. Aby uzyskać pełny opis, zobacz about_Language_Modes.
Sterowanie aplikacjami
System Windows 10 zawiera dwie technologie: App Control for Business i AppLocker , których można użyć do sterowania aplikacjami. Program PowerShell wykrywa, czy są wymuszane zasady kontroli aplikacji dla całego systemu. Zasady stosują pewne zachowania podczas uruchamiania bloków skryptów, plików skryptów lub ładowania plików modułów, aby zapobiec dowolnemu wykonaniu kodu w systemie.
Usługa App Control dla firm jest zaprojektowana jako funkcja zabezpieczeń zgodnie z kryteriami obsługi zdefiniowanymi przez Centrum zabezpieczeń firmy Microsoft (MSRC). App Control for Business to preferowany system kontroli aplikacji dla systemu Windows. Aby uzyskać więcej informacji o tym, jak program PowerShell obsługuje funkcję AppLocker i kontrolę aplikacji dla firm, zobacz Zabezpieczanie programu PowerShell przy użyciu kontrolki aplikacji.
AppLocker to starszy system kontroli aplikacji, który jest nadal obsługiwany w systemach Windows 10 i Windows 11. Funkcja AppLocker nie jest funkcją zabezpieczeń w ramach kryteriów obsługi zdefiniowanych przez msRC. Aby uzyskać więcej informacji o kryteriach serwisowania, zobacz Kryteria serwisowania zabezpieczeń firmy Microsoft dla systemu Windows.
Tryb blokady systemu
W programie PowerShell tryb blokady systemu to abstrakcja zasad kontroli aplikacji dla całego systemu wymuszanych przez Windows za pomocą kontroli aplikacji dla firm lub funkcji AppLocker. Gdy zasady kontroli aplikacji są aktywne, program PowerShell przechodzi w tryb blokady systemu. W trybie blokady systemu zasady sterowania aplikacjami określają tryb językowy dla każdego obszaru uruchamiania.
Ważne
Bez trybu blokady systemu tryb językowy nie jest propagowany między obszarami uruchamiania. Każda przestrzeń uruchomieniowa niezależnie odpytuje zasady kontroli aplikacji Windows w celu określenia trybu języka.
Ustawienie trybu języka w jednej przestrzeni uruchomieniowej nie ma wpływu na inne przestrzenie uruchomieniowe. Bez aktywnej zasady kontroli aplikacji nowe przestrzenie uruchomieniowe domyślnie działają w trybie FullLanguage.
Wykaz Materiałów Oprogramowania (SBOM)
Począwszy od programu PowerShell 7.2, wszystkie pakiety instalacyjne zawierają pakiet Software Bill of Materials (SBOM). Zespół PowerShell tworzy również SBOM-y dla modułów, których jest właścicielem, ale które są udostępniane niezależnie od programu PowerShell.
Pliki SBOM można znaleźć w następujących lokalizacjach:
- W programie PowerShell znajdź element SBOM pod adresem
$PSHOME/_manifest/spdx_2.2/manifest.spdx.json. - W przypadku modułów plik SBOM znajdziesz w folderze modułu, w folderze
_manifest/spdx_2.2/manifest.spdx.json.
Tworzenie i publikowanie SBOM jest pierwszym krokiem do modernizacji cyberbezpieczeństwa rządu federalnego i zwiększenia bezpieczeństwa łańcucha dostaw oprogramowania. Aby uzyskać więcej informacji na temat tej inicjatywy, zobacz wpis na blogu Generowanie SBOM-ów przy użyciu SPDX w Microsoft.
Bezpieczny transfer danych w zdalnym zarządzaniu programem PowerShell
Przed PowerShell w wersji 7.6-preview5, Session_Key jest używany do szyfrowania SecureString przed wysłaniem go w sesji zdalnej PowerShell. Protokół komunikacji zdalnej programu PowerShell (PSRP) wykonuje wymianę kluczy między klientem a serwerem SecureString , gdy należy przenieść obiekt. Wymiana obejmuje następujące kroki:
- Po stronie klienta jest generowana para kluczy publicznych/prywatnych i wysyła klucz publiczny do serwera.
- Serwer generuje klucz sesji na potrzeby szyfrowania symetrycznego.
- Serwer używa klucza publicznego do szyfrowania klucza sesji i wysyła go do klienta.
- Zarówno klient, jak i serwer używają nowego klucza sesji do szyfrowania obiektu SecureString .
Protokół komunikacji zdalnej programu PowerShell (PSRP) używa RSAEncryptionPadding.Pkcs1 algorytmu podczas wymiany kluczy. Algorytm nie jest bezpieczny, więc wymiana kluczy nie zapewnia żadnych dodatkowych zabezpieczeń.
Ważne
Aby zapewnić bezpieczny transfer danych za pośrednictwem protokołu PSRP, należy użyć bezpiecznej warstwy transportu.
Począwszy od programu PowerShell w wersji 7.6-preview.5, wymiana kluczy została uznana za przestarzałą. Wersja psRP została zwiększona do wersji 2.4 i zawiera następujące zmiany:
Następujące komunikaty PSRP są przestarzałe, gdy zarówno klient, jak i serwer są w wersji 2.4 lub nowszej:
- klucz publiczny
- ŻĄDANIE_KLUCZA_PUBLICZNEGO
- ZASZYFROWANY_KLUCZ_SESJI
Kroki szyfrowania i odszyfrowywania dla
SecureStringprogramu są pomijane, gdy zarówno klient, jak i serwer są w wersji 2.4 lub nowszej.
Ta zmiana jest wstecznie kompatybilna.
- W przypadku starych klientów lub serwerów (wersja 2.3 lub niższa) wymiana kluczy jest nadal używana w razie potrzeby.
- PSRP może używać zdalnych sesji z użyciem nazwanych potoków, gdy zarówno klient, jak i serwer znajdują się na tej samej maszynie.
Ponieważ zdalny klient może nawiązać połączenie z nazwanym potokiem, a dane nie są już szyfrowane przy użyciu klucza sesji, nazwany potok (używany dla
Enter-PSHostProcess) odrzuca zdalnego klienta.
Kryteria obsługi zabezpieczeń
Granica zabezpieczeń zapewnia logiczne rozdzielenie kodu i danych domen zabezpieczeń o różnych poziomach zaufania. Funkcje zabezpieczeń opierają się na granicach zabezpieczeń, aby zapewnić niezawodną ochronę przed określonymi zagrożeniami. W przypadku funkcji zabezpieczeń w tej kategorii Microsoft zamierza rozwiązać zgłoszone luki w zabezpieczeniach za pośrednictwem obsługi.
Funkcje zabezpieczeń programu PowerShell
- Blokada systemu za pomocą kontroli aplikacji dla firm
- Tryb ograniczonego języka z Kontrolą aplikacji dla firm
Aby uzyskać więcej informacji, zobacz dokumentację Kryteria obsługi zabezpieczeń firmy Microsoft dla systemu Windows.
W niektórych przypadkach funkcja zabezpieczeń może zapewnić ochronę przed zagrożeniem bez możliwości zapewnienia niezawodnej ochrony. Te funkcje zabezpieczeń są zwykle określane jako funkcje ochrony w głębi systemu lub środki zaradcze, ponieważ zapewniają dodatkowe zabezpieczenia, ale mogą mieć ograniczenia dotyczące projektowania, które uniemożliwiają całkowite ograniczenie zagrożenia. Obejście funkcji zabezpieczeń w głębi systemu ochrony nie stanowi bezpośredniego zagrożenia, ponieważ osoba atakująca musi również znaleźć lukę w zabezpieczeniach, która wpływa na granicę zabezpieczeń, lub musi polegać na dodatkowych technikach, takich jak inżynieria społeczna, aby osiągnąć początkowy etap naruszenia zabezpieczeń urządzenia.
Funkcje szczegółowe ochrony programu PowerShell
- Tryb języka ograniczonego przy użyciu AppLocker lub skonfigurowany za pomocą konfiguracji sesji albo przez ręczne ustawienie
$ExecutionContext.SessionState.LanguageMode - Blokada systemu za pomocą funkcji AppLocker
- Zasady wykonywania