PowerShell'in güvenliğini sağlamak için Uygulama Denetimi'ni kullanma

Windows 10, uygulamaları denetlemek için kullanabileceğiniz İş için Uygulama Denetimi ve AppLocker olmak üzere iki teknoloji içerir. PowerShell ortamınızın güvenliğini sağlamaya yardımcı olmak için bir kilitleme deneyimi oluşturmanıza olanak tanır.

AppLocker , Yazılım Kısıtlama İlkeleri'nin uygulama denetimi özelliklerini oluşturur. AppLocker, belirli kullanıcılar veya gruplar için uygulamalara izin vermek veya uygulamaları reddetmek için kurallar oluşturmanıza olanak tanır. Uygulamaları, dosyaların benzersiz özelliklerine göre tanımlarsınız.

Windows 10'da Windows Defender Uygulama Denetimi (WDAC) olarak sunulan İş İçin Uygulama Denetimi, Windows'ta hangi sürücülerin ve uygulamaların çalışmasına izin verilip verilmeyebileceğinizi denetlemenize olanak tanır.

Kilitleme ilkesi algılama

PowerShell, hem AppLocker hem de İş için Uygulama Denetimi sistem genelinde ilkeleri algılar. AppLocker'ın ilke uygulama durumunu sorgulamanın bir yolu yoktur. AppLocker'ın bir ilkeyi zorunlu tutmasını algılamak için PowerShell iki geçici dosya oluşturur ve bunları çalıştırmayı dener. Dosya adları aşağıdaki ad biçimini kullanır:

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

İş İçin Uygulama Denetimi, Windows için tercih edilen uygulama denetim sistemidir. Uygulama Denetimi, sistemi Sistem Kilitleme moduna geçirir. Sistem Kilitleme modu, ilkeleri algılayan ve bir bağlamın başlatılması veya belirli bir dil moduna değiştirilmesi gerekip gerekmediğini belirleyen özelliktir.

Uygulama Denetimi, Microsoft Güvenlik Yanıt Merkezi (MSRC) tarafından tanımlanan hizmet verme ölçütleri kapsamında bir güvenlik özelliği olarak tasarlanmıştır. Daha fazla bilgi için bkz . Windows için Uygulama Denetimleri ve Uygulama Denetimi ve AppLocker özellik kullanılabilirliği.

Not

Uygulama Denetimi veya AppLocker arasında seçim yaparken , AppLocker yerine İş için Uygulama Denetimi kullanarak uygulama denetimi uygulamanızı öneririz. Microsoft artık AppLocker'a yatırım yapmaz. AppLocker yalnızca güvenlik düzeltmelerini alır.

Uygulama Denetimi ilkesinin uygulanması

PowerShell bir Uygulama Denetimi ilkesi altında çalıştığında, davranışı tanımlı güvenlik ilkesine göre değişir. Bir Uygulama Denetimi ilkesi altında PowerShell, ilke tarafından izin verilen güvenilen betikleri ve modülleri modda FullLanguage çalıştırır. Diğer tüm betikler ve betik blokları güvenilmez olarak kabul edilir ve ConstrainedLanguage modunda çalıştırılır. Güvenilmeyen betikler, ConstrainedLanguage modunda izin verilmeyen eylemleri gerçekleştirmeye çalıştığında PowerShell hatalar verir. Bir betiğin ConstrainedLanguage modunda neden düzgün çalışmadığını anlamak zor olabilir.

Uygulama Denetimi ilkesi denetimi

PowerShell 7.4, Denetim modunda Uygulama Denetimi ilkelerini desteklemek için yeni bir özellik ekledi. Denetim modunda PowerShell güvenilmeyen betikleri ConstrainedLanguage modda hatasız çalıştırır, ancak bunun yerine iletileri olay günlüğüne kaydeder. Günlük iletileri, ilke Zorla modundaysa hangi kısıtlamaların uygulanacağını açıklar.

Değişikliklerin geçmişi

Windows PowerShell 5.1, PowerShell'in Uygulama Denetimi'ni destekleyen ilk sürümüdür. Uygulama Denetimi ve AppLocker'ın güvenlik özellikleri, PowerShell'in her yeni sürümüyle birlikte gelişir. Aşağıdaki bölümlerde, bu desteğin PowerShell'in her sürümünde nasıl değiştiği açıklanmaktadır. Değişiklikler birikmeli olduğundan, sonraki sürümlerde açıklanan özellikler önceki sürümlerdeki değişiklikleri içerir.

PowerShell 7.7'deki değişiklikler

PowerShell 7.7-preview.4, PowerShell için FileOnlyEntryAppSetting desteği eklendi. Bu, PowerShell'i daha kısıtlı bir modda çalıştırmak için ek bir ayardır. Daha fazla bilgi için bkz. PowerShell'in güvenliğini sağlamak için AppControl'i kullanma.

PowerShell 7.4'teki değişiklikler

Windows'da, PowerShell bir Uygulama Denetimi ilkesi altında çalıştığında, davranışı tanımlı güvenlik ilkesine göre değişir. Bir Uygulama Denetimi ilkesi altında PowerShell, ilke tarafından izin verilen güvenilen betikleri ve modülleri modda FullLanguage çalıştırır. Diğer tüm betikler ve betik blokları güvenilmez kabul edilir ve ConstrainedLanguage modunda çalıştırılır. Güvenilmeyen betikler izin verilmeyen eylemler gerçekleştirmeye çalıştığında PowerShell hata oluşturur. Bir betiğin ConstrainedLanguage modunda neden düzgün çalışamadığını bilmek zordur.

PowerShell 7.4 artık Denetim modunda Uygulama Denetimi ilkelerini destekliyor. Denetim modunda PowerShell güvenilmeyen betikleri modda ConstrainedLanguage çalıştırır, ancak iletileri hata oluşturmak yerine olay günlüğüne kaydeder. Günlük iletileri, ilke Zorla modundaysa hangi kısıtlamaların uygulanacağını açıklar.

PowerShell 7.3'teki değişiklikler

  • PowerShell 7.3 artık Uygulama Denetimi API'sini kullanarak PowerShell betik dosyalarını engelleme veya izin verme özelliğini destekliyor.

PowerShell 7.2'deki değişiklikler

  • AppLocker'da, yalnızca Reddet kurallarının bulunduğu ve ilkeyi uygulamak için kısıtlanmış modun kullanılmadığı bir uç durum senaryosu vardı; bu durumda yürütme ilkesini atlamak mümkündü. PowerShell 7.2'den başlayarak, AppLocker kurallarının bir komut üzerinde öncelikli olmasını sağlamak için bir Set-ExecutionPolicy -ExecutionPolicy Bypass değişiklik yapıldı.

  • PowerShell 7.2 artık kısıtlanmış bir makinede, NoLanguage modundaki bir PowerShell oturumunda Add-Type cmdlet’inin kullanılmasına izin vermiyor.

  • PowerShell 7.2 artık Betiklerin AppLocker sistem kilitleme koşullarında COM nesnelerini kullanmalarına izin vermemektedir. COM veya DCOM'u dahili olarak kullanan cmdlet'ler etkilenmez.

Daha fazla bilgi

  • Uygulama Denetimi'nin nasıl çalıştığı ve hangi kısıtlamaları uyguladığı hakkında daha fazla bilgi için bkz . Uygulama Denetimi PowerShell ile nasıl çalışır?
  • Uygulama Denetimi ile PowerShell'in güvenliğini sağlama hakkında daha fazla bilgi için bkz . Uygulama Denetimi'ni kullanma.