about_Logging_Windows

Kısa açıklama

PowerShell altyapıdan, sağlayıcılardan ve cmdlet'lerden Windows olay günlüğüne iç işlemleri günlüğe kaydeder.

Uzun açıklama

PowerShell, altyapıyı ve sağlayıcıları başlatma ve durdurma ve PowerShell komutlarını yürütme gibi PowerShell işlemleriyle ilgili ayrıntıları günlüğe kaydeder.

Not

Windows PowerShell sürüm 3.0, 4.0, 5.0 ve 5.1, Windows olay günlükleri için EventLog cmdlet'lerini içerir. Bu sürümlerde, EventLog cmdlet'lerinin listesini görüntülemek için şunu yazın: Get-Command -Noun EventLog. Daha fazla bilgi için Windows PowerShell sürümünüz için cmdlet belgelerine ve about_EventLogs bakın.

Windows'da PowerShell olay sağlayıcısını kaydetme

Linux veya macOS'un aksine Windows, olayların olay günlüğüne yazılabilmesi için olay sağlayıcısının kaydedilmesini gerektirir. PowerShell olay sağlayıcısını etkinleştirmek için yükseltilmiş bir PowerShell isteminden aşağıdaki komutu çalıştırın.

$PSHOME\RegisterManifest.ps1

Windows'da PowerShell olay günlüğü girdilerini görüntüleme

PowerShell günlükleri Windows Olay Görüntüleyicisi kullanılarak görüntülenebilir. Olay günlüğü Uygulama ve Hizmet Günlükleri grubunda bulunur ve olarak adlandırılır PowerShellCore. İlişkili ETW sağlayıcısı GUID şeklindedir {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

Betik Bloğu Günlüğü etkinleştirildiğinde PowerShell aşağıdaki olayları günlüğe PowerShellCore/Operational kaydeder:

Alan Değer
EventId 4104 / 0x1008
Kanal Operational
Level Verbose
Işlem kodu Create
Görev CommandStart
Anahtar sözcük Runspace

Windows'da PowerShell olay sağlayıcısının kaydını kaldırma

Olay sağlayıcısının kaydedilmesi, olayların kodunu çözmek için kullanılan ikili kitaplığa bir kilit yerleştirir. Bu kitaplığı güncelleştirmek için, bu kilidi serbest bırakmak için sağlayıcının kaydının kaldırılmış olması gerekir.

PowerShell sağlayıcısının kaydını kaldırmak için yükseltilmiş bir PowerShell isteminden aşağıdaki komutu çalıştırın.

$PSHOME\RegisterManifest.ps1 -Unregister

PowerShell'i güncelleştirdikten sonra komutunu çalıştırarak $PSHOME\RegisterManifest.ps1 güncelleştirilmiş olay sağlayıcısını kaydedin.

Betik Bloğu Günlüğünü Etkinleştirme

Betik Bloğu Günlüğünü etkinleştirdiğinizde PowerShell, işlediği tüm betik bloklarının içeriğini kaydeder. Etkinleştirildikten sonra, tüm yeni PowerShell oturumları bu bilgileri günlüğe kaydeder.

Not

Tanılama dışında herhangi bir amaçla Betik Bloğu Günlüğü kullanılırken, aşağıda açıklandığı gibi Korumalı Olay Günlüğü'leri etkinleştirmeniz önerilir.

Betik Bloğu Günlüğü, grup ilkesi veya kayıt defteri ayarı aracılığıyla etkinleştirilebilir.

Grup İlkesi Kullanma

Otomatik transkripsiyonu etkinleştirmek için aracılığıyla grup ilkesi Administrative Templates -> Windows Components -> Windows PowerShellözelliğini etkinleştirinTurn on PowerShell Script Block Logging.

Kayıt Defterini Kullanma

Aşağıdaki işlevi çalıştırın:

function Enable-PSScriptBlockLogging
{
    $basePath = 'HKLM:\Software\Policies\Microsoft\Windows' +
      '\PowerShell\ScriptBlockLogging'

    if(-not (Test-Path $basePath))
    {
        $null = New-Item $basePath -Force
    }

    Set-ItemProperty $basePath -Name EnableScriptBlockLogging -Value "1"
}

Korumalı Olay Günlüğü

Sistemde günlüğe kaydetme düzeyini artırmak, günlüğe kaydedilen içeriğin hassas veriler içerme olasılığını artırır. Örneğin, betik günlüğü etkinleştirildiğinde, bir betik tarafından kullanılan kimlik bilgileri veya diğer hassas veriler olay günlüğüne yazılabilir. Hassas verileri günlüğe kaydeden bir makinenin güvenliği aşıldığında, günlükler saldırgana erişimlerini genişletmek için gereken bilgileri sağlayabilir.

Bu bilgileri korumak için Windows 10 Korumalı Olay Günlüğü'ne giriş yapılır. Korumalı Olay Günlüğü, katılan uygulamaların olay günlüğüne yazılan hassas verileri şifrelemesine olanak tanır. Daha sonra bu günlüklerin şifresini çözebilir ve daha güvenli ve merkezi bir günlük toplayıcı üzerinde işleyebilirsiniz.

Olay günlüğü içeriği, IETF Şifreleme İletisi Söz Dizimi (CMS) standardı kullanılarak korunur. CMS ortak anahtar şifrelemesi kullanır. İçeriği şifrelemek ve içeriğin şifresini çözmek için kullanılan anahtarlar ayrı tutulur.

Ortak anahtar yaygın olarak paylaşılabilir ve hassas veriler değildir. Bu ortak anahtarla şifrelenmiş tüm içeriğin şifresi yalnızca özel anahtarla çözülebilir. Ortak Anahtar Şifrelemesi hakkında daha fazla bilgi için bkz. Vikipedi - Ortak Anahtar Şifrelemesi.

Korumalı Olay Günlüğü ilkesini etkinleştirmek için, korunacak olay günlüğü verileri olan tüm makinelere bir ortak anahtar dağıtın. Karşılık gelen özel anahtar, olay günlüklerini merkezi bir olay günlüğü toplayıcısı veya SIEM toplayıcısı gibi daha güvenli bir konumda işlemek için kullanılır. SIEM'i Azure'da ayarlayabilirsiniz. Daha fazla bilgi için bkz. Genel SIEM tümleştirmesi.

grup ilkesi aracılığıyla Korumalı Olay Günlüğünü Etkinleştirme

Korumalı Olay Günlüğünü etkinleştirmek için aracılığıyla grup ilkesi Administrative Templates -> Windows Components -> Event Loggingözelliğini etkinleştirinEnable Protected Event Logging. Bu ayar, çeşitli biçimlerden birinde sağlayabileceğiniz bir şifreleme sertifikası gerektirir:

  • Base-64 ile kodlanmış X.509 sertifikasının içeriği (örneğin, Sertifika Yöneticisi'ndeki seçeneğin Export sunduğu gibi).
  • Yerel Makine sertifika deposunda bulunabilen bir sertifikanın parmak izi (PKI altyapısı tarafından dağıtılabilir).
  • Sertifikanın tam yolu (yerel veya uzak paylaşım olabilir).
  • Sertifika veya sertifika içeren bir dizinin yolu (yerel veya uzak paylaşım olabilir).
  • Yerel Makine sertifika deposunda bulunabilen bir sertifikanın konu adı (PKI altyapısı tarafından dağıtılabilir).

Sonuçta elde edilen sertifikanın gelişmiş anahtar kullanımı ()1.3.6.1.4.1.311.80.1 ve ya da Key EnciphermentData Encipherment anahtar kullanımları etkin olmalıdırDocument Encryption.

Uyarı

Özel anahtar, olayları günlüğe kaydetme makinelerine dağıtılmamalıdır. İletilerin şifresini çözeceğiniz güvenli bir konumda tutulmalıdır.

Korumalı Olay Günlüğü iletilerinin şifresini çözme

Aşağıdaki betik, özel anahtara sahip olduğunuz varsayılarak alınır ve şifresi çözülür:

Get-WinEvent Microsoft-Windows-PowerShell/Operational |
  Where-Object Id -eq 4104 | Unprotect-CmsMessage

Ayrıca bkz.