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 zorlama durumunu sorgulama yolu yoktur. Sistem genelinde uygulama denetim ilkesinin AppLocker tarafından zorlanıp zorlanmadığını algılamak için PowerShell iki geçici dosya oluşturur ve yürütülebilirse test eder. Dosya adları aşağıdaki ad biçimini kullanır:

  • $env:TEMP/__PSAppLockerTest__<random-8dot3-name>.ps1
  • $env:TEMP/__PSAppLockerTest__<random-8dot3-name>.psm1

İş İçin Uygulama Denetimi, Windows için tercih edilen uygulama denetim sistemidir. Uygulama Denetimi, ilke yapılandırmasını bulmanıza olanak sağlayan API'ler sağlar. 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 güvenlik düzeltmelerini almaya devam etse de özellik geliştirmeleri almaz.

Uygulama Denetimi ilkesi zorlama

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 ve modda ConstrainedLanguage çalışır. Güvenilmeyen betikler modda ConstrainedLanguage izin verilmeyen eylemler gerçekleştirmeye çalıştığında PowerShell hata oluşturur. Bir betiğin neden modda düzgün ConstrainedLanguage çalışamediğini bilmek 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ünde iyileştirir. 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ümlerden gelen özellikleri içerir.

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 ve modda ConstrainedLanguage çalışır. Güvenilmeyen betikler izin verilmeyen eylemler gerçekleştirmeye çalıştığında PowerShell hata oluşturur. Bir betiğin neden modda düzgün ConstrainedLanguage çalışamediğini 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 Reddetme kurallarına sahip olduğunuz ve yürütme ilkesini atlamanıza olanak tanıyan ilkeyi zorlamak için kısıtlanmış modun kullanılmadığı bir köşe örneği senaryosu vardı. 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 kilitli bir NoLanguage makinede mod PowerShell oturumunda cmdlet'in Add-Type kullanılmasına izin vermemektedir.

  • PowerShell 7.2 artık Betiklerin AppLocker sistem kilitleme koşullarında COM nesnelerini kullanmalarına izin vermemektedir. ŞIRKET içinde COM veya DCOM 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.