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 najdete 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í najdete 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 například chcete 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ů, bloků skriptů, funkcí a skriptů bez ohledu na to, jestli jsou vyvolány interaktivně, nebo prostřednictvím automatizace.
Když povolíte protokolování bloku skriptu, 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í bloku skriptu.
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í 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ý 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 |
---|---|
EventId | 4104 / 0x1008 |
Kanál | Operational |
Level | Verbose |
Opcode | Create |
Úloha | 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
registraci aktualizovaného poskytovatele událostí.
Povolení protokolování bloku skriptu
Když povolíte protokolování bloku skriptu, 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žívání zásad skupiny
Pokud chcete povolit automatický přepis, povolte funkci Zapnout 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
Můžete nastavit ScriptBlockLogging
možnost v powershell.config.json
souboru, 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 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íč 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 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ásad skupiny
Chcete-li povolit protokolování chráněných událostí, povolte Enable Protected Event Logging
funkci 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í být povolený Document Encryption
jako použití rozšířeného klíče (1.3.6.1.4.1.311.80.1
) nebo Data Encipherment
Key Encipherment
použití klíčů.
Upozorňující
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