PowerShell güvenlik özellikleri
PowerShell, komut dosyası oluşturma ortamınızın güvenliğini artırmak için tasarlanmış çeşitli özelliklere sahiptir.
Yürütme politikası
PowerShell'in yürütme ilkesi, PowerShell'in yapılandırma dosyalarını yüklediği ve komut dosyalarını çalıştırdığı koşulları denetleyen bir güvenlik özelliğidir. Bu özellik, kötü amaçlı komut dosyalarının yürütülmesini önlemeye yardımcı olur. Bilgisayarlar ve kullanıcılar için yürütme ilkelerini ayarlamak üzere bir Grup İlkesi ayarını kullanabilirsiniz. Yürütme ilkeleri yalnızca Windows platformu için geçerlidir.
Daha fazla bilgi için bkz. about_Execution_Policies.
SecureString sınıfının kullanımı
PowerShell'de System.Security.SecureString sınıfının kullanımını destekleyen çeşitli cmdlet'ler bulunur. Ve herhangi bir .NET sınıfında olduğu gibi SecureString'i kendi komut dosyalarınızda kullanabilirsiniz. Ancak Microsoft, yeni geliştirme için SecureString'in kullanılmasını önermez. Microsoft, parola kullanmaktan kaçınmanızı ve kimlik doğrulama için sertifikalar veya Windows kimlik doğrulaması gibi diğer yöntemlere güvenmenizi önerir.
PowerShell, geriye dönük uyumluluk için SecureString sınıfını desteklemeye devam ediyor. SecureString kullanmak, düz metin dizesi kullanmaktan hala daha güvenlidir. Varsayılan olarak PowerShell, SecureString nesnesinin korunmayan değerini göstermez. Ancak SecureString kolaylıkla düz metin dizesine dönüştürülebilir. SecureString kullanımına ilişkin tam bir tartışma için System.Security.SecureString sınıfı belgelerine bakın.
Modül ve komut dosyası blok günlüğü kaydı
Modül Günlüğü, seçilen PowerShell modülleri için günlüğe kaydetmeyi etkinleştirmenize olanak tanır. Bu ayar bilgisayardaki tüm oturumlarda etkilidir. Belirtilen modüller için işlem hattı yürütme olayları, Olay Görüntüleyicisi'ndeki Windows PowerShell günlüğüne kaydedilir.
Komut Dosyası Blok Günlüğü, ister etkileşimli olarak ister otomasyon yoluyla çağrılsın, komutların, komut dosyası bloklarının, işlevlerin ve komut dosyalarının işlenmesi için günlüğe kaydetmeyi sağlar. Bu bilgiler Microsoft-Windows-PowerShell/Operational olay günlüğüne kaydedilir.
Daha fazla bilgi için aşağıdaki makalelere bakın:
- about_Group_Policy_Settings
- about_Logging_Windows
- about_Logging_Windows Dışı
AMSI Desteği
Windows Kötü Amaçlı Yazılımdan Koruma Tarama Arayüzü (AMSI), uygulama eylemlerinin, kötü amaçlı yüklere karşı taranmak üzere Windows Defender gibi bir kötü amaçlı yazılımdan koruma tarayıcısına aktarılmasına olanak tanıyan bir API'dir. PowerShell 5.1'den başlayarak, Windows 10 (ve üzeri) üzerinde çalışan PowerShell, tüm komut dosyası bloklarını AMSI'ye aktarır.
PowerShell 7.3, inceleme için AMSI'ye gönderilen verileri genişletir. Artık .NET yöntemi üyelerinin tüm çağrılarını içeriyor.
AMSI hakkında daha fazla bilgi için bkz. AMSI nasıl yardımcı olur?
Kısıtlanmış dil modu
ConstrainedLanguage modu, PowerShell oturumunda kullanılabilecek cmdlet'leri ve .NET türlerini sınırlayarak sisteminizi korur. Tam açıklama için bkz. about_Language_Modes.
Uygulama Kontrolü
Windows 10, uygulamaları kontrol etmek için kullanabileceğiniz Windows Defender Uygulama Denetimi (WDAC) ve AppLocker olmak üzere iki teknoloji içerir. PowerShell ortamınızın güvenliğinin sağlanmasına yardımcı olacak bir kilitleme deneyimi oluşturmanıza olanak tanır.
PowerShell'in AppLocker ve WDAC'yi nasıl desteklediği hakkında daha fazla bilgi için bkz. Windows Defender Uygulama Denetimini Kullanma.
PowerShell 7.4'teki değişiklikler
Windows'ta PowerShell, Windows Defender Uygulama Denetimi (WDAC) ilkesi altında çalıştığında, davranışını tanımlanan güvenlik ilkesine göre değiştirir. Bir WDAC ilkesi kapsamında PowerShell, ilkenin izin verdiği güvenilir komut dosyalarını ve modülleri Tam Dil modunda çalıştırır. Diğer tüm komut dosyaları ve komut dosyası blokları güvenilir değildir ve Kısıtlı Dil modunda çalıştırılır. Güvenilmeyen komut dosyaları izin verilmeyen eylemleri gerçekleştirmeye çalıştığında PowerShell hatalar atar. Bir betiğin Kısıtlı Dil modunda neden düzgün çalışmadığını bilmek zordur.
PowerShell 7.4 artık Denetim modunda WDAC politikalarını destekliyor. Denetim modunda, PowerShell güvenilmeyen komut dosyalarını Kısıtlanmış Dil modunda çalıştırır ancak hata atmak yerine mesajları olay günlüğüne kaydeder. Günlük mesajları, politikanın Zorunlu kıl modunda olması durumunda hangi kısıtlamaların uygulanacağını açıklar.
PowerShell 7.3'teki değişiklikler
- PowerShell 7.3 artık WDAC API aracılığıyla PowerShell betik dosyalarını engelleme veya bunlara izin verme özelliğini destekliyor.
PowerShell 7.2'deki değişiklikler
AppLocker'da yalnızca Reddet kurallarına sahip olduğunuz ve yürütme politikasını atlamanıza izin veren politikayı uygulamak için kısıtlı modun kullanılmadığı bir köşe senaryosu vardı. PowerShell 7.2'den başlayarak, AppLocker kurallarının
Set-ExecutionPolicy -ExecutionPolicy Bypasskomutuna göre öncelikli olmasını sağlamak için bir değişiklik yapıldı.PowerShell 7.2 artık kilitli bir makinede NoLanguage modundaki PowerShell oturumunda
Add-Typecmdlet'inin kullanılmasına izin vermiyor.PowerShell 7,2 artık komut dosyalarının AppLocker sistemi kilitleme koşullarında COM nesnelerini kullanmasına izin vermiyor. COM veya DCOM'u dahili olarak kullanan cmdlet'ler etkilenmez.
Güvenlik Hizmeti Kriterleri
PowerShell, Windows için Microsoft Güvenlik Hizmeti Kriterlerine uyar. Aşağıdaki tabloda servis kriterlerini karşılayan ve karşılamayan özellikler özetlenmektedir.
- System Lockdown - with WDAC
Güvenlik Özelliği
- Constrained language mode - with WDAC
Güvenlik Özelliği
- System Lockdown - with AppLocker
Derinlemesine Savunma
- Constrained language mode - with AppLocker
Derinlemesine Savunma
- Execution Policy
Derinlemesine Savunma
Yazılım Malzeme Listesi (SBOM)
PowerShell 7.2'den itibaren tüm kurulum paketleri bir Yazılım Malzeme Listesi (SBOM) içerir. SBOM, $PSHOME/_manifest/spdx_2.2/manifest.spdx.json adresinde bulunur. SBOM'un oluşturulması ve yayınlanması, Federal Hükümetin siber güvenliğini modernleştirmenin ve yazılım tedarik zinciri güvenliğini geliştirmenin ilk adımıdır.
PowerShell ekibi ayrıca sahip oldukları ancak PowerShell'den ayrı olarak gönderdikleri modüller için SBOM'lar üretiyor. SBOM'lar modülün bir sonraki sürümüne eklenecektir. Modüller için SBOM, _manifest/spdx_2.2/manifest.spdx.json altındaki modülün klasörüne yüklenir.
Bu girişim hakkında daha fazla bilgi için Microsoft'ta SPDX ile Yazılım Malzeme Listeleri (SBOM) Oluşturma blog gönderisine bakın.