about_Logging_Windows

Krátký popis

PowerShell protokoluje interní operace z modulu, zprostředkovatelů 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 zprostředkovatelů a spouštění příkazů PowerShellu.

Poznámka

Windows PowerShell verze 3.0, 4.0, 5.0 a 5.1 zahrnují rutiny EventLog pro protokoly událostí Windows. V těchto verzích zobrazíte seznam rutin EventLog : Get-Command -Noun EventLog. Další informace najdete v dokumentaci k rutině a about_EventLogs pro vaši verzi Windows PowerShell.

Registrace zprostředkovatele událostí PowerShellu ve Windows

Na rozdíl od Linuxu nebo macOS vyžaduje Windows, aby byl poskytovatel událostí zaregistrovaný před zápisem událostí do protokolu událostí. Pokud chcete zprostředkovatele událostí PowerShellu povolit, 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í windows Prohlížeč událostí. Protokol událostí se nachází ve skupině Protokoly aplikací a služeb a má název PowerShellCore. Přidružený zprostředkovatel GUID ETW je {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

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

Pole Hodnota
EventId 4104 / 0x1008
Kanál Operational
Level Verbose
Opcode Create
Úkol CommandStart
Keyword Runspace

Zrušení registrace zprostředkovatele událostí PowerShellu ve Windows

Registrace poskytovatele událostí umístí zámek do binární knihovny použité k dekódování událostí. Pokud chcete tuto knihovnu aktualizovat, musí být poskytovatel zrušen, aby 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 registraci aktualizovaného poskytovatele událostí.

Povolení protokolování bloku skriptu

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

Doporučujeme povolit protokolování chráněných událostí, jak je popsáno níže, pokud používáte protokolování blokování skriptů pro cokoli jiného než diagnostické účely.

Protokolování blokování skriptů je možné povolit prostřednictvím Zásady skupiny nebo nastavení registru.

Používání zásad skupiny

Pokud chcete povolit automatický přepis, povolte Turn on PowerShell Script Block Logging funkci v Zásady skupiny prostřednictvím Administrative Templates -> Windows Components -> Windows PowerShell.

Použití registru

Spusťte následující funkci:

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

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 je možné zapisovat do protokolu událostí. Pokud 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í jejich dosahu.

K ochraně těchto informací 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 jsou oddělené.

Veřejný klíč je možné sdílet široce a nejedná se o citlivá data. Veškerý obsah šifrovaný pomocí tohoto veřejného klíče je možné dešifrovat pouze privátním klíčem. Další informace o kryptografii veřejného klíče naleznete na Wikipedii – Kryptografie veřejného klíče.

Pokud chcete povolit zásadu protokolování chráněných událostí, nasaďte veřejný klíč na všechny počítače, 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 agregátor SIEM . SiEM můžete nastavit v Azure. Další informace najdete v tématu Obecná integrace SIEM.

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

Pokud chcete povolit protokolování chráněných událostí, povolte Enable Protected Event Logging funkci v Zásady 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ízenou Export možností ve Správci certifikátů).
  • Kryptografický otisk certifikátu, který lze najít v úložišti certifikátů místního počítače (je možné nasadit infrastrukturou INFRASTRUKTURY veřejných klíčů).
  • Ú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ý lze najít v úložišti certifikátů místního počítače (je možné nasadit infrastrukturou INFRASTRUKTURY veřejných klíčů).

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

Upozorně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 za předpokladu, že máte privátní klíč:

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

Viz také