Sdílet prostřednictvím


about_Logging_Windows

Krátký popis

PowerShell protokoluje interní operace z modulu, poskytovatelů a rutin do protokolu událostí Windows.

Dlouhý popis

PowerShell protokoluje podrobnosti o operacích PowerShellu, jako je spuštění a zastavení modulu a poskytovatelů a spouštění příkazů PowerShellu.

Informace o protokolování v prostředí Windows PowerShell 5.1 naleznete v tématu about_Logging.

PowerShell podporuje konfiguraci dvou kategorií protokolování:

  • Protokolování modulu – Zaznamená události spuštění kanálu pro členy zadaných modulů. Protokolování modulu musí být povolené jak pro relaci, tak pro konkrétní moduly. Další informace o konfiguraci tohoto protokolování naleznete v tématu about_PowerShell_Config.

    Pokud je protokolování modulu povoleno prostřednictvím konfigurace, můžete povolit a zakázat protokolování pro konkrétní moduly v relaci nastavením hodnoty LogPipelineExecutionDetails vlastnosti modulu.

    Pokud chcete například povolit protokolování modulu pro modul PSReadLine:

    $psrl = Get-Module PSReadLine
    $psrl.LogPipelineExecutionDetails = $true
    Get-Module PSReadLine | Select-Object Name, LogPipelineExecutionDetails
    
    Name       LogPipelineExecutionDetails
    ----       ---------------------------
    PSReadLine                        True
    
  • Protokolování bloku skriptu – Zaznamenává zpracování příkazů, skriptů, funkcí a skriptů bez ohledu na to, jestli jsou vyvolány interaktivně, nebo prostřednictvím automatizace.

    Když povolíte protokolování blokování skriptů, PowerShell zaznamená obsah všech skriptů, které zpracovává. Po povolení protokoluje všechny nové relace PowerShellu tyto informace. Další informace naleznete v tématu Povolení protokolování blokování skriptů.

Registrace poskytovatele událostí PowerShellu ve Windows

Na rozdíl od Linuxu nebo macOS systém Windows vyžaduje, aby byl zprostředkovatel událostí zaregistrovaný před zápisem událostí do protokolu událostí. Pokud chcete povolit zprostředkovatele událostí PowerShellu, spusťte z příkazového řádku PowerShellu se zvýšenými oprávněními následující příkaz.

$PSHOME\RegisterManifest.ps1

Zobrazení položek protokolu událostí PowerShellu ve Windows

Protokoly PowerShellu je možné zobrazit pomocí Prohlížeče událostí systému Windows. Protokol událostí se nachází ve skupině protokolů aplikací a služeb a má název powershellcore. Přidružený identifikátor GUID zprostředkovatele Trasování událostí pro Windows je {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

Pokud je protokolování bloku skriptu povolené, PowerShell protokoluje následující události do protokolu PowerShellCore/Operational:

Pole Hodnota
ID události 4104 / 0x1008
Kanál Operational
Úroveň Verbose
Opcode Create
Úkol CommandStart
Klíčové slovo Runspace

Zrušení registrace poskytovatele událostí PowerShellu ve Windows

Registrace zprostředkovatele událostí umístí zámek do binární knihovny použité k dekódování událostí. Aby bylo možné tuto knihovnu aktualizovat, musí být poskytovatel zrušení registrace, aby se tento zámek uvolnil.

Pokud chcete zrušit registraci zprostředkovatele PowerShellu, spusťte z příkazového řádku PowerShellu se zvýšenými oprávněními následující příkaz.

$PSHOME\RegisterManifest.ps1 -Unregister

Po aktualizaci PowerShellu spusťte $PSHOME\RegisterManifest.ps1 a zaregistrujte aktualizovaného poskytovatele událostí.

Povolení protokolování blokování skriptů

Když povolíte protokolování blokování skriptů, PowerShell zaznamená obsah všech skriptů, které zpracovává. Po povolení protokoluje všechny nové relace PowerShellu tyto informace.

Poznámka

Při použití protokolování blokování skriptů se doporučuje povolit protokolování chráněných událostí, jak je popsáno níže, pro jiné účely než pro účely diagnostiky.

Protokolování bloku skriptu je možné povolit prostřednictvím zásad skupiny nebo nastavení registru.

Použití zásad skupiny

Pokud chcete povolit automatický přepis, povolte zapnout funkci protokolování bloků skriptů PowerShellu v zásadách skupiny prostřednictvím šablon pro správu –>PowerShell Core .

Použití registru

Spusťte následující funkci:

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"
}

Použití konfiguračního souboru PowerShellu

V souboru ScriptBlockLogging můžete nastavit možnost powershell.config.json, která určuje, jak se PowerShell chová. Další informace najdete v tématu about_PowerShell_Config.

Protokolování chráněných událostí

Zvýšení úrovně protokolování v systému zvyšuje možnost, že protokolovaný obsah může obsahovat citlivá data. Například s povoleným protokolováním skriptu, přihlašovacími údaji nebo jinými citlivými daty používanými skriptem lze zapisovat do protokolu událostí. Když dojde k ohrožení zabezpečení počítače s protokolovanými citlivými daty, můžou protokoly útočníkovi poskytnout informace potřebné k rozšíření dosahu.

Pro ochranu těchto informací systém Windows 10 zavádí protokolování chráněných událostí. Protokolování chráněných událostí umožňuje zúčastněným aplikacím šifrovat citlivá data zapsaná do protokolu událostí. Později můžete tyto protokoly dešifrovat a zpracovat v bezpečnějším a centralizovanějším kolektoru protokolů.

Obsah protokolu událostí je chráněn pomocí standardu IETF Cryptographic Message Syntax (CMS). CMS používá kryptografii veřejného klíče. Klíče používané k šifrování obsahu a dešifrování obsahu se uchovávají odděleně.

Veřejný klíč je možné sdílet široce a nejedná se o citlivá data. Veškerý obsah zašifrovaný tímto veřejným klíčem je možné dešifrovat pouze privátním klíčem. Další informace o kryptografii veřejného klíče naleznete v tématu Wikipedie - Kryptografie veřejného klíče.

Pokud chcete povolit zásadu protokolování chráněných událostí, nasaďte veřejný klíč do všech počítačů, které mají data protokolu událostí k ochraně. Odpovídající privátní klíč se používá k následnému zpracování protokolů událostí v bezpečnějším umístění, jako je centrální kolektor protokolu událostí, nebo SIEM agregátoru. SiEM můžete nastavit v Azure. Další informace najdete v tématu obecnéhointegrace SIEM .

Povolení protokolování chráněných událostí prostřednictvím zásad skupiny

Pokud chcete povolit protokolování chráněných událostí, povolte funkci Enable Protected Event Logging v zásadách skupiny prostřednictvím Administrative Templates -> Windows Components -> Event Logging. Toto nastavení vyžaduje šifrovací certifikát, který můžete zadat v jednom z několika formulářů:

  • Obsah certifikátu X.509 s kódováním base-64 (například nabízený možností Export ve Správci certifikátů).
  • Kryptografický otisk certifikátu, který najdete v úložišti certifikátů místního počítače (je možné ho nasadit infrastrukturou PKI).
  • Úplná cesta k certifikátu (může být místní nebo vzdálená sdílená složka).
  • Cesta k adresáři obsahujícímu certifikát nebo certifikáty (může být místní nebo vzdálená sdílená složka).
  • Název subjektu certifikátu, který najdete v úložišti certifikátů místního počítače (je možné ho nasadit infrastrukturou PKI).

Výsledný certifikát musí mít Document Encryption jako rozšířené použití klíče (1.3.6.1.4.1.311.80.1) a musí být povolený Data Encipherment nebo Key Encipherment použití klíče.

Varování

Privátní klíč by se neměl nasazovat do událostí protokolování počítačů. Měla by být uložena v zabezpečeném umístění, kde dešifrujete zprávy.

Dešifrování zpráv protokolování chráněných událostí

Následující skript načte a dešifruje události za předpokladu, že máte privátní klíč:

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

Viz také