Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, İş İçin Uygulama Denetimi ilkesinin nasıl ayarlanacağı açıklanmaktadır. İlkeyi, ilkenin kuralını zorunlu kılacak veya denetleyecek şekilde yapılandırabilirsiniz. Denetim modunda PowerShell davranışı değişmez ancak Olay Kimliği 16387 iletilerini PowerShellCore/Analytic
olay günlüğüne kaydeder. PowerShell, zorlama modunda ilkenin kısıtlamalarını uygular.
Bu makalede, ilkeyi ortamınıza dağıtmadan önce makine genelinde bir Uygulama Denetimi ilkesi altında PowerShell davranışını test edebilmeniz için bir test makinesi kullandığınız varsayılır.
Uygulama Denetimi ilkesi oluşturma
Uygulama Denetimi ilkesi, ilke seçenekleri, izin verilen dosyalar ve ilke tarafından tanınan imzalama sertifikaları hakkında bilgi içeren bir XML dosyasında açıklanmıştır. İlke uygulandığında yalnızca onaylanan dosyaların yüklenmesine ve çalıştırılmasına izin verilir. PowerShell, onaylanmamış betik dosyalarının çalıştırılmasını engeller veya ilke seçeneklerine bağlı olarak bu dosyaları modda ConstrainedLanguage
çalıştırır.
Uygulama Denetimi ilkesini, desteklenen tüm Windows sürümlerinde kullanılabilen ConfigCI modülünü kullanarak oluşturur ve işleyebilirsiniz. Bu Windows PowerShell modülü, Windows PowerShell 5.1'de veya Windows Uyumluluk katmanı aracılığıyla PowerShell 7'de kullanılabilir. Bu modülü Windows PowerShell'de kullanmak daha kolaydır. Oluşturduğunuz ilke, PowerShell'in herhangi bir sürümüne uygulanabilir.
Uygulama Denetimi ilkesi oluşturma adımları
Test etmek için bir varsayılan ilke ve otomatik olarak imzalanan bir kod imzalama sertifikası oluşturmanız yeterlidir.
Varsayılan ilke oluşturma
New-CIPolicy -Level PcaCertificate -FilePath .\SystemCIPolicy.xml -UserPEs
Bu komut, tüm Microsoft kodla imzalanan dosyaların çalıştırılmasına izin veren adlı
SystemCIPolicy.xml
bir varsayılan ilke dosyası oluşturur.Not
Test makinesinin tamamını taraması gerektiğinden bu komutun çalıştırılması iki saate kadar sürebilir.
Varsayılan ilkede Denetim Modu'nu devre dışı bırakma
Yeni bir ilke her zaman
Audit
modunda oluşturulur. İlke zorlamasını test etmek için, ilkeyi uygularken Denetim modunu devre dışı bırakmanız gerekir.SystemCIPolicy.xml
veya Visual Studio Code (VS Code) gibinotepad.exe
bir metin düzenleyicisi kullanarak dosyayı düzenleyin. "Audit mode
" seçeneğini yorum satırı haline getirin.<!-- <Rule> <Option>Enabled:Audit Mode</Option> </Rule> -->
Kendinden imzalı kod imzalama sertifikası oluşturma
Test makinenizde çalıştırmak istediğiniz test ikili dosyalarını veya betik dosyalarını imzalamak için bir kod imzalama sertifikasına ihtiyacınız vardır.
New-SelfSignedCertificate
, PKI modülü tarafından sağlanır. En iyi sonuçlar için bu komutu Windows PowerShell 5.1'de çalıştırmanız gerekir.$newSelfSignedCertificateSplat = @{ DnsName = $Env:COMPUTERNAME CertStoreLocation = "Cert:\CurrentUser\My\" Type = 'CodeSigningCert' } $cert = New-SelfSignedCertificate @newSelfSignedCertificateSplat Export-Certificate -Cert $cert -FilePath C:\certs\signing.cer Import-Certificate -FilePath C:\certs\signing.cer -CertStoreLocation "Cert:\CurrentUser\Root\" $cert = Get-ChildItem Cert:\CurrentUser\My\ -CodeSigningCert dir C:\bin\PowerShell\pwsh.exe | Set-AuthenticodeSignature -Certificate $cert
kod imzalama sertifikasını ilkeye ekleme
İlkeye yeni kod imzalama sertifikasını eklemek için aşağıdaki komutu kullanın.
Add-SignerRule -FilePath .\SystemCIPolicy.xml -CertificatePath C:\certs\signing.cer -User
XML politika dosyasını politika uygulama ikili dosyasına dönüştürme
Son olarak, XML dosyasını bir ilke uygulamak için Uygulama Denetimi tarafından kullanılan ikili dosyaya dönüştürmeniz gerekir.
ConvertFrom-CIPolicy -XmlFilePath .\SystemCIPolicy.xml -BinaryFilePath .\SIPolicy.p7b
Uygulama Denetimi ilkesini uygulama
İlkeyi test makinenize uygulamak için, dosyayı gerekli sistem konumuna kopyalayın
SIPolicy.p7b
C:\Windows\System32\CodeIntegrity
.Not
Bazı ilke tanımı gibi
C:\Windows\System32\CodeIntegrity\CiPolicies
bir alt klasöre kopyalanmalıdır. Daha fazla bilgi için bkz . Uygulama Denetimi Yönetici İpuçları ve Bilinen Sorunlar.Uygulama Denetimi ilkesini devre dışı bırakma
İlkeyi devre dışı bırakmak için dosyayı yeniden adlandırın
SIPolicy.p7b
. Daha fazla test yapmanız gerekiyorsa, ilkeyi yeniden etkinleştirmek için adı yeniden değiştirebilirsiniz.Rename-Item -Path .\SIPolicy.p7b -NewName .\SIPolicy.p7b.off
Uygulama Denetimi ilkesi denetimini kullanarak test etme
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.
Denetim olaylarını görüntüleme
PowerShell denetim olaylarını PowerShellCore/Analytic olay günlüğüne kaydeder. Kayıt varsayılan olarak etkinleştirilmemiştir. Günlüğü etkinleştirmek için Windows Olay Görüntüleyicisi açın, PowerShellCore/Analytic günlüğüne sağ tıklayın ve Günlüğü Etkinleştir'i seçin.
Alternatif olarak, yükseltilmiş bir PowerShell oturumundan aşağıdaki komutu çalıştırabilirsiniz.
wevtutil.exe sl PowerShellCore/Analytic /enabled:true /quiet
Windows Olay Görüntüleyicisi olayları görüntüleyebilir veya cmdlet'ini Get-WinEvent
kullanarak olayları alabilirsiniz.
Get-WinEvent -LogName PowerShellCore/Analytic -Oldest |
Where-Object Id -EQ 16387 | Format-List
TimeCreated : 4/19/2023 10:11:07 AM
ProviderName : PowerShellCore
Id : 16387
Message : App Control Audit.
Title: Method or Property Invocation
Message: Method or Property 'WriteLine' on type 'System.Console' invocation will not
be allowed in ConstrainedLanguage mode.
At C:\scripts\Test1.ps1:3 char:1
+ [System.Console]::WriteLine("pwnd!")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FullyQualifiedId: MethodOrPropertyInvocationNotAllowed
Olay iletisi, kısıtlamanın uygulanacağı betik konumunu içerir. Bu bilgiler, betiğinizi Uygulama Denetimi ilkesi altında çalıştırmak için değişiklik yapmanız gereken alanları anlamanıza yardımcı olur.
Önemli
Denetim olaylarını gözden geçirdikten sonra Analiz günlüğünü devre dışı bırakmanız gerekir. Analiz günlükleri hızla büyür ve büyük miktarda disk alanı kullanır.
PowerShell hata ayıklayıcısında denetim olaylarını görüntüleme
Değişkeni $DebugPreference
etkileşimli bir PowerShell oturumu için Break
olarak ayarlarsanız, PowerShell, denetim olayının meydana geldiği betikteki mevcut konumda komut satırı betik hata ayıklayıcısına girer. Kesme noktası, kodunuzun hatalarını ayıklamanıza ve betiğin geçerli durumunu gerçek zamanlı olarak incelemenize olanak tanır.
PowerShell