Udostępnij za pomocą


Zabezpieczanie programu PowerShell przy użyciu kontrolki aplikacji

System Windows 10 zawiera dwie technologie: App Control for Business i AppLocker, których można użyć do kontrolowania aplikacji. Umożliwiają one utworzenie środowiska blokady w celu zabezpieczenia środowiska programu PowerShell.

AppLocker bazuje na funkcjach kontroli aplikacji zasad ograniczania oprogramowania. Funkcja AppLocker umożliwia tworzenie reguł zezwalania lub odrzucania aplikacji dla określonych użytkowników lub grup. Identyfikujesz aplikacje na podstawie unikatowych właściwości plików.

Kontrola aplikacji dla firm, wprowadzona w systemie Windows 10 jako Windows Defender Application Control (WDAC), umożliwia kontrolowanie, które sterowniki i aplikacje mogą być uruchamiane w systemie Windows.

Wykrywanie zasad blokady

Program PowerShell wykrywa zarówno systemowe zasady AppLocker, jak i App Control for Business. Funkcja AppLocker nie ma możliwości wykonywania zapytań dotyczących stanu wymuszania zasad. Aby wykryć, czy zasady kontroli aplikacji dla całego systemu są wymuszane przez funkcję AppLocker, program PowerShell tworzy dwa pliki tymczasowe i testuje, czy można je wykonać. Nazwy plików używają następującego formatu nazwy:

  • $Env:TEMP/__PSScriptPolicyTest_<random-8dot3-name>.ps1
  • $Env:TEMP/__PSScriptPolicyTest_<random-8dot3-name>.psm1

App Control for Business to preferowany system kontroli aplikacji dla systemu Windows. Funkcja App Control udostępnia interfejsy API, które umożliwiają odnajdywanie konfiguracji zasad. Kontrola aplikacji jest zaprojektowana jako funkcja zabezpieczeń zgodnie z kryteriami obsługi zdefiniowanymi przez Centrum zabezpieczeń firmy Microsoft (MSRC). Aby uzyskać więcej informacji, zobacz Application Controls for Windows and App Control and AppLocker feature availability (Kontrolki aplikacji dla systemu Windows i kontroli aplikacji oraz dostępności funkcji AppLocker).

Uwaga

Podczas wybierania między kontrolką aplikacji lub funkcją AppLocker zalecamy zaimplementowanie kontroli aplikacji przy użyciu kontroli aplikacji dla firm, a nie funkcji AppLocker. Firma Microsoft nie inwestuje już w funkcję AppLocker. Mimo że funkcja AppLocker może nadal otrzymywać poprawki zabezpieczeń, nie będzie otrzymywać ulepszeń funkcji.

Wymuszanie zasad kontroli aplikacji

Gdy program PowerShell działa w ramach zasad kontroli aplikacji, jego zachowanie zmienia się na podstawie zdefiniowanych zasad zabezpieczeń. W ramach polityki kontroli aplikacji program PowerShell uruchamia zaufane skrypty i moduły dozwolone przez politykę w trybie FullLanguage. Wszystkie inne skrypty i bloki skryptów są niezaufane i uruchamiane w trybie ConstrainedLanguage. Program PowerShell zgłasza błędy, gdy niezaufane skrypty próbują wykonać akcje, które nie są dozwolone w ConstrainedLanguage trybie. Trudno jest wiedzieć, dlaczego skrypt nie mógł działać poprawnie w ConstrainedLanguage trybie.

Inspekcja zasad kontroli aplikacji

Program PowerShell 7.4 dodał nową funkcję do obsługi zasad kontroli aplikacji w trybie inspekcji . W trybie inspekcji program PowerShell uruchamia niezaufane skrypty w ConstrainedLanguage trybie bez błędów, ale zamiast tego rejestruje komunikaty w dzienniku zdarzeń. Komunikaty dziennika opisują, jakie ograniczenia byłyby stosowane, jeśli zasady byłyby w trybie wymuszania.

Historia zmian

Program Windows PowerShell 5.1 był pierwszą wersją programu PowerShell do obsługi kontroli aplikacji. Funkcje zabezpieczeń kontroli aplikacji i funkcji AppLocker są ulepszane dzięki każdej nowej wersji programu PowerShell. W poniższych sekcjach opisano sposób zmiany tej obsługi w każdej wersji programu PowerShell. Zmiany są skumulowane, więc funkcje opisane w nowszych wersjach obejmują te z wcześniejszych wersji.

Zmiany w programie PowerShell 7.4

W systemie Windows, gdy program PowerShell działa w ramach zasad kontroli aplikacji, jego zachowanie zmienia się na podstawie zdefiniowanych zasad zabezpieczeń. W ramach polityki kontroli aplikacji program PowerShell uruchamia zaufane skrypty i moduły dozwolone przez politykę w trybie FullLanguage. Wszystkie inne skrypty i bloki skryptów są niezaufane i uruchamiane w trybie ConstrainedLanguage. Program PowerShell zgłasza błędy, gdy niezaufane skrypty próbują wykonać niedozwolone akcje. Trudno jest wiedzieć, dlaczego skrypt nie działa poprawnie w ConstrainedLanguage trybie.

Program PowerShell 7.4 obsługuje teraz zasady kontroli aplikacji w trybie inspekcji . W trybie inspekcji program PowerShell uruchamia niezaufane skrypty w ConstrainedLanguage trybie, ale rejestruje komunikaty w dzienniku zdarzeń zamiast zgłaszać błędy. Komunikaty dziennika opisują, jakie ograniczenia byłyby stosowane, jeśli zasady byłyby w trybie wymuszania.

Zmiany w programie PowerShell 7.3

  • Program PowerShell 7.3 obsługuje teraz możliwość blokowania lub zezwalania na pliki skryptów programu PowerShell za pośrednictwem interfejsu API sterowania aplikacjami.

Zmiany w programie PowerShell 7.2

  • W funkcji AppLocker wystąpił scenariusz wyjątkowego przypadku, w którym masz tylko reguły odmowy, a tryb ograniczony nie jest używany do wymuszania polityki, co umożliwia obejście polityki wykonywania. Począwszy od programu PowerShell 7.2, wprowadzono zmianę, aby upewnić się, że reguły funkcji AppLocker mają pierwszeństwo przed poleceniem Set-ExecutionPolicy -ExecutionPolicy Bypass .

  • PowerShell 7.2 nie zezwala teraz na używanie polecenia cmdlet Add-Type w trybie sesji PowerShell NoLanguage na zablokowanej maszynie.

  • Program PowerShell 7.2 nie zezwala teraz skryptom na używanie obiektów COM w warunkach blokady systemu funkcji AppLocker. Na polecenia cmdlet, które wewnętrznie korzystają z modelu COM lub DCOM, nie ma to wpływu.

Dalsze informacje