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.
Funkcja AppLocker bazuje na funkcjach kontroli aplikacji zasad ograniczeń 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 zasady dotyczące funkcji AppLocker, jak i kontroli aplikacji dla firm. 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/__PSAppLockerTest__<random-8dot3-name>.ps1
$env:TEMP/__PSAppLockerTest__<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 zasad kontroli aplikacji program PowerShell uruchamia zaufane skrypty i moduły dozwolone przez zasady w FullLanguage
trybie. Wszystkie inne skrypty i bloki skryptów są niezaufane i uruchamiane w ConstrainedLanguage
trybie. 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 mają być stosowane, jeśli zasady były 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 zasad kontroli aplikacji program PowerShell uruchamia zaufane skrypty i moduły dozwolone przez zasady w FullLanguage
trybie. Wszystkie inne skrypty i bloki skryptów są niezaufane i uruchamiane w ConstrainedLanguage
trybie. 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 mają być stosowane, jeśli zasady były 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 przypadków narożnych, w którym reguły odmowy i tryb ograniczony nie są używane do wymuszania zasad, które umożliwiają obejście zasad 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
.Program PowerShell 7.2 nie zezwala teraz na używanie
Add-Type
polecenia cmdlet wNoLanguage
trybie sesji programu PowerShell na zablokowanej maszynie.Program PowerShell 7.2 nie zezwala teraz skryptom na używanie obiektów COM w warunkach blokady systemu funkcji AppLocker. Nie ma to wpływu na polecenia cmdlet używające modelu COM lub DCOM wewnętrznie.
Dalsze informacje
- Aby uzyskać więcej informacji na temat działania kontrolki aplikacji i wymuszanych ograniczeń, zobacz How App Control works with PowerShell (Jak działa kontrolka aplikacji w programie PowerShell).
- Aby uzyskać więcej informacji na temat zabezpieczania programu PowerShell za pomocą kontrolki aplikacji, zobacz How to use App Control (Jak używać kontrolki aplikacji).