PowerShell Script İmzalama Neden Önemli?
PowerShell, Windows sistemlerinde güçlü bir otomasyon aracıdır ancak aynı zamanda saldırı vektörü olarak da kullanılabilir. Script imzalama, yalnızca güvenilir kaynaklardan gelen scriptlerin çalıştırılmasını sağlar.
Windows Execution Policy ayarları, imzalı ve imzasız scriptlerin çalıştırılmasını kontrol eder:
- Restricted: Hiçbir script çalışmaz (varsayılan)
- AllSigned: Sadece imzalı scriptler çalışır
- RemoteSigned: İnternetten indirilen scriptler imzalı olmalı
- Unrestricted: Tüm scriptler çalışır (güvensiz)
Kurumsal ortamlarda AllSigned politikası tercih edilmelidir.
Set-AuthenticodeSignature ile İmzalama
Sertifikayı Yükleme
# Certificate Store'dan sertifika seçme
$cert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | Select-Object -First 1
# Veya PFX dosyasından
$cert = Get-PfxCertificate -FilePath "sertifika.pfx"
Script İmzalama
# Timestamp ile imzalama
Set-AuthenticodeSignature -FilePath "script.ps1" -Certificate $cert -TimestampServer "http://timestamp.digicert.com" -HashAlgorithm SHA256
Toplu İmzalama
Get-ChildItem -Path "C:\Scripts" -Filter "*.ps1" -Recurse | ForEach-Object {
Set-AuthenticodeSignature -FilePath $_.FullName -Certificate $cert -TimestampServer "http://timestamp.digicert.com" -HashAlgorithm SHA256
}
İmza Doğrulama
Get-AuthenticodeSignature -FilePath "script.ps1" | Format-List
Group Policy ile Zorunlu İmzalama
Active Directory ortamlarında Group Policy ile tüm bilgisayarlarda script imzalama zorunlu kılınabilir:
- Group Policy Management Console'u açın
- Computer Configuration Administrative Templates Windows Components Windows PowerShell
- "Turn on Script Execution" "Allow only signed scripts" seçin
Yorumlar
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yaz