about_Logging_Windows

Deskripsi singkat

PowerShell mencatat operasi internal dari mesin, penyedia, dan cmdlet ke log peristiwa Windows.

Deskripsi panjang

PowerShell mencatat detail tentang operasi PowerShell, seperti memulai dan menghentikan mesin dan penyedia, dan menjalankan perintah PowerShell.

Untuk informasi tentang pengelogan di Windows PowerShell 5.1, lihat about_Logging.

PowerShell mendukung konfigurasi dua kategori pengelogan:

  • Pengelogan modul - Rekam peristiwa eksekusi alur untuk anggota modul tertentu. Pengelogan modul harus diaktifkan untuk sesi dan modul tertentu. Untuk informasi selengkapnya tentang mengonfigurasi pengelogan ini, lihat about_PowerShell_Config.

    Jika pengelogan modul diaktifkan melalui konfigurasi, Anda dapat mengaktifkan dan menonaktifkan pengelogan untuk modul tertentu dalam sesi dengan mengatur nilai properti LogPipelineExecutionDetails modul.

    Misalnya, untuk mengaktifkan pengelogan modul untuk modul PSReadLine :

    $psrl = Get-Module PSReadLine
    $psrl.LogPipelineExecutionDetails = $true
    Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
    
    Name       LogPipelineExecutionDetails
    ----       ---------------------------
    PSReadLine                        True
    
  • Pengelogan blok skrip - Rekam pemrosesan perintah, blok skrip, fungsi, dan skrip baik dipanggil secara interaktif, atau melalui otomatisasi.

    Saat Anda mengaktifkan Pembuatan Log Blok Skrip, PowerShell merekam konten semua blok skrip yang diprosesnya. Setelah diaktifkan, sesi PowerShell baru mencatat informasi ini. Untuk informasi selengkapnya, lihat Mengaktifkan Pembuatan Log Blok Skrip.

Mendaftarkan penyedia peristiwa PowerShell di Windows

Tidak seperti Linux atau macOS, Windows mengharuskan penyedia acara untuk didaftarkan sebelum peristiwa dapat ditulis ke log peristiwa. Untuk mengaktifkan penyedia peristiwa PowerShell, jalankan perintah berikut dari prompt PowerShell yang ditingkatkan.

$PSHOME\RegisterManifest.ps1

Menampilkan entri log peristiwa PowerShell di Windows

Log PowerShell dapat dilihat menggunakan Pemantau Peristiwa Windows. Log peristiwa terletak di grup Log Aplikasi dan Layanan dan diberi nama PowerShellCore. GUID penyedia ETW terkait adalah {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

Saat Pengelogan Blok Skrip diaktifkan, PowerShell mencatat peristiwa berikut ke log PowerShellCore/Operational :

Bidang Nilai
EventId 4104 / 0x1008
Saluran Operational
Tingkat Verbose
Opcode Create
Task CommandStart
Kata kunci Runspace

Membatalkan pendaftaran penyedia peristiwa PowerShell di Windows

Mendaftarkan penyedia peristiwa menempatkan kunci di pustaka biner yang digunakan untuk mendekode peristiwa. Untuk memperbarui pustaka ini, penyedia harus tidak terdaftar untuk melepaskan kunci ini.

Untuk membatalkan pendaftaran penyedia PowerShell, jalankan perintah berikut dari prompt PowerShell yang ditinggikan.

$PSHOME\RegisterManifest.ps1 -Unregister

Setelah memperbarui PowerShell, jalankan $PSHOME\RegisterManifest.ps1 untuk mendaftarkan penyedia peristiwa yang diperbarui.

Mengaktifkan Pengelogan Blok Skrip

Saat Anda mengaktifkan Pembuatan Log Blok Skrip, PowerShell merekam konten semua blok skrip yang diprosesnya. Setelah diaktifkan, sesi PowerShell baru mencatat informasi ini.

Catatan

Disarankan untuk mengaktifkan Pencatatan Peristiwa Terproteksi, seperti yang dijelaskan di bawah ini, saat menggunakan Pengelogan Blok Skrip untuk apa pun selain tujuan diagnostik.

Pengelogan Blok Skrip dapat diaktifkan melalui Kebijakan Grup atau pengaturan registri.

Menggunakan Kebijakan Grup

Untuk mengaktifkan transkripsi otomatis, aktifkan fitur Aktifkan Pengelogan Blok Skrip PowerShell di Kebijakan Grup melalui Templat Administratif ->PowerShell Core.

Menggunakan Registri

Jalankan fungsi berikut:

function Enable-PSScriptBlockLogging {
    $basePath = @(
        'HKLM:\Software\Policies\Microsoft'
        'PowerShellCore\ScriptBlockLogging'
    ) -join '\'

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

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

Menggunakan file konfigurasi PowerShell

Anda dapat mengatur ScriptBlockLogging opsi dalam powershell.config.json file yang mengontrol bagaimana PowerShell berperilaku. Untuk informasi selengkapnya, lihat about_PowerSHell_Config.

Pengelogan Peristiwa terproteksi

Meningkatkan tingkat pengelogan pada sistem meningkatkan kemungkinan konten yang dicatat mungkin berisi data sensitif. Misalnya, dengan pembuatan log skrip diaktifkan, kredensial, atau data sensitif lainnya yang digunakan oleh skrip dapat ditulis ke log peristiwa. Ketika komputer yang telah mencatat data sensitif disusupi, log dapat memberi penyerang informasi yang diperlukan untuk memperluas jangkauan mereka.

Untuk melindungi informasi ini, Windows 10 memperkenalkan Pengelogan Peristiwa Terproteksi. Pengelogan Peristiwa terproteksi memungkinkan aplikasi yang berpartisipasi mengenkripsi data sensitif yang ditulis ke log peristiwa. Nantinya, Anda dapat mendekripsi dan memproses log ini pada pengumpul log yang lebih aman dan terpusat.

Konten log peristiwa dilindungi menggunakan standar IETF Cryptographic Message Syntax (CMS). CMS menggunakan kriptografi kunci publik. Kunci yang digunakan untuk mengenkripsi konten dan mendekripsi konten tetap terpisah.

Kunci publik dapat dibagikan secara luas dan bukan data sensitif. Konten apa pun yang dienkripsi dengan kunci publik ini hanya dapat didekripsi oleh kunci privat. Untuk informasi selengkapnya tentang Kriptografi Kunci Publik, lihat Wikipedia - Kriptografi Kunci Umum.

Untuk mengaktifkan kebijakan Pengelogan Peristiwa Terproteksi, sebarkan kunci publik ke semua komputer yang memiliki data log peristiwa untuk dilindungi. Kunci privat yang sesuai digunakan untuk pasca-proses log peristiwa di lokasi yang lebih aman seperti pengumpul log peristiwa pusat, atau agregator SIEM . Anda dapat menyiapkan SIEM di Azure. Untuk informasi selengkapnya, lihat Integrasi SIEM generik.

Mengaktifkan Pengelogan Peristiwa terproteksi melalui Kebijakan Grup

Untuk mengaktifkan Pengelogan Peristiwa Terproteksi, aktifkan Enable Protected Event Logging fitur dalam Kebijakan Grup melalui Administrative Templates -> Windows Components -> Event Logging. Pengaturan ini memerlukan sertifikat enkripsi, yang dapat Anda sediakan dalam salah satu dari beberapa formulir:

  • Konten sertifikat X.509 yang dikodekan base-64 (misalnya, seperti yang ditawarkan oleh Export opsi di Pengelola Sertifikat).
  • Thumbprint sertifikat yang dapat ditemukan di penyimpanan sertifikat Komputer Lokal (dapat disebarkan oleh infrastruktur PKI).
  • Jalur lengkap ke sertifikat (bisa lokal, atau berbagi jarak jauh).
  • Jalur ke direktori yang berisi sertifikat atau sertifikat (bisa lokal, atau berbagi jarak jauh).
  • Nama subjek sertifikat yang dapat ditemukan di penyimpanan sertifikat Komputer Lokal (dapat disebarkan oleh infrastruktur PKI).

Sertifikat yang dihasilkan harus memiliki Document Encryption sebagai penggunaan kunci yang ditingkatkan (1.3.6.1.4.1.311.80.1), dan baik Data Encipherment atau Key Encipherment penggunaan kunci diaktifkan.

Peringatan

Kunci privat tidak boleh disebarkan ke peristiwa pengelogan komputer. Ini harus disimpan di lokasi yang aman tempat Anda mendekripsi pesan.

Mendekripsi pesan Pengelogan Peristiwa yang Dilindungi

Skrip berikut mengambil dan mendekripsi peristiwa, dengan asumsi Bahwa Anda memiliki kunci privat:

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

Baca juga