about_Logging_Windows

Korte beschrijving

PowerShell registreert interne bewerkingen van de engine, providers en cmdlets naar het Windows-gebeurtenislogboek.

Lange beschrijving

PowerShell registreert details over PowerShell-bewerkingen, zoals het starten en stoppen van de engine en providers, en het uitvoeren van PowerShell-opdrachten.

Zie about_Logging voor meer informatie over logboekregistratie in Windows PowerShell 5.1.

PowerShell ondersteunt het configureren van twee categorieën logboekregistratie:

  • Modulelogboekregistratie: noteer de uitvoeringsgebeurtenissen van de pijplijn voor leden van de opgegeven modules. Modulelogboekregistratie moet zijn ingeschakeld voor zowel de sessie als specifieke modules. Zie about_PowerShell_Config voor meer informatie over het configureren van deze logboekregistratie.

    Als modulelogboekregistratie is ingeschakeld via configuratie, kunt u logboekregistratie voor specifieke modules in een sessie in- en uitschakelen door de waarde van de eigenschap LogPipelineExecutionDetails van de module in te stellen.

    Als u bijvoorbeeld modulelogboekregistratie wilt inschakelen voor de PSReadLine-module :

    $psrl = Get-Module PSReadLine
    $psrl.LogPipelineExecutionDetails = $true
    Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
    
    Name       LogPipelineExecutionDetails
    ----       ---------------------------
    PSReadLine                        True
    
  • Logboekregistratie van scriptblokken: noteer de verwerking van opdrachten, scriptblokken, functies en scripts, ongeacht of deze interactief worden aangeroepen of via automatisering.

    Wanneer u Logboekregistratie van scripts blokkeert, registreert PowerShell de inhoud van alle scriptblokken die worden verwerkt. Zodra deze is ingeschakeld, registreert elke nieuwe PowerShell-sessie deze informatie. Zie Logboekregistratie van scriptblokken inschakelen voor meer informatie.

De PowerShell-gebeurtenisprovider registreren in Windows

In tegenstelling tot Linux of macOS moet windows de gebeurtenisprovider registreren voordat gebeurtenissen naar het gebeurtenislogboek kunnen worden geschreven. Als u de PowerShell-gebeurtenisprovider wilt inschakelen, voert u de volgende opdracht uit vanaf een PowerShell-prompt met verhoogde bevoegdheid.

$PSHOME\RegisterManifest.ps1

De vermeldingen in het PowerShell-gebeurtenislogboek weergeven in Windows

PowerShell-logboeken kunnen worden weergegeven met behulp van de Windows-Logboeken. Het gebeurtenislogboek bevindt zich in de groep Toepassings- en serviceslogboeken en heeft de naam PowerShellCore. De bijbehorende GUID van de ETW-provider is {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

Wanneer logboekregistratie van scriptblokkering is ingeschakeld, worden de volgende gebeurtenissen in PowerShellCore /Operationeel logboek vastgelegd:

Veld Waarde
EventId 4104 / 0x1008
Channel Operational
Niveau Verbose
Opcode Create
Opdracht CommandStart
Trefwoord Runspace

Registratie van de PowerShell-gebeurtenisprovider op Windows ongedaan maken

Bij het registreren van de gebeurtenisprovider wordt een vergrendeling in de binaire bibliotheek geplaatst die wordt gebruikt om gebeurtenissen te decoderen. Als u deze bibliotheek wilt bijwerken, moet de provider de registratie ongedaan maken om deze vergrendeling vrij te geven.

Als u de registratie van de PowerShell-provider ongedaan wilt maken, voert u de volgende opdracht uit vanaf een PowerShell-prompt met verhoogde bevoegdheid.

$PSHOME\RegisterManifest.ps1 -Unregister

Voer na het bijwerken van PowerShell uit $PSHOME\RegisterManifest.ps1 om de bijgewerkte gebeurtenisprovider te registreren.

Logboekregistratie van scriptblokkering inschakelen

Wanneer u Logboekregistratie van scripts blokkeert, registreert PowerShell de inhoud van alle scriptblokken die worden verwerkt. Zodra deze is ingeschakeld, registreert elke nieuwe PowerShell-sessie deze informatie.

Notitie

Het is raadzaam om logboekregistratie van beveiligde gebeurtenissen in te schakelen, zoals hieronder wordt beschreven, wanneer u logboekregistratie van scripts voor andere doeleinden dan diagnostische doeleinden gebruikt.

Logboekregistratie van scripts kan worden ingeschakeld via Groepsbeleid of een registerinstelling.

Met behulp van Groepsbeleid

Als u automatische transcriptie wilt inschakelen, schakelt u de functie Logboekregistratie van PowerShell-scripts in groepsbeleid in via Beheer istratieve sjablonen ->PowerShell Core.

Het register gebruiken

Voer de volgende functie uit:

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

Het PowerShell-configuratiebestand gebruiken

U kunt de ScriptBlockLogging optie instellen in het powershell.config.json bestand waarmee wordt bepaald hoe PowerShell zich gedraagt. Zie about_PowerSHell_Config voor meer informatie.

Logboekregistratie van beveiligde gebeurtenissen

Door het niveau van logboekregistratie op een systeem te verhogen, wordt de mogelijkheid vergroot dat vastgelegde inhoud gevoelige gegevens kan bevatten. Als bijvoorbeeld scriptregistratie is ingeschakeld, kunnen referenties of andere gevoelige gegevens die door een script worden gebruikt, naar het gebeurtenislogboek worden geschreven. Wanneer een computer waarop gevoelige gegevens zijn geregistreerd, is gecompromitteerd, kunnen de logboeken een aanvaller voorzien van informatie die nodig is om het bereik te vergroten.

Windows 10 introduceert beveiligde gebeurtenislogboekregistratie om deze informatie te beveiligen. Met beveiligde gebeurtenislogboeken kunnen deelnemende toepassingen gevoelige gegevens versleutelen die naar het gebeurtenislogboek zijn geschreven. Later kunt u deze logboeken ontsleutelen en verwerken op een veiligere en gecentraliseerde logboekverzamelaar.

Inhoud van gebeurtenislogboeken wordt beveiligd met behulp van de IETF Cryptographic Message Syntax (CMS)-standaard. CMS maakt gebruik van cryptografie van openbare sleutels. De sleutels die worden gebruikt om inhoud te versleutelen en inhoud te ontsleutelen, worden gescheiden gehouden.

De openbare sleutel kan op grote schaal worden gedeeld en zijn geen gevoelige gegevens. Alle inhoud die met deze openbare sleutel is versleuteld, kan alleen worden ontsleuteld door de persoonlijke sleutel. Zie Wikipedia - Public Key Cryptography voor meer informatie over openbare-sleutelcryptografie.

Als u een beleid voor logboekregistratie van beveiligde gebeurtenissen wilt inschakelen, implementeert u een openbare sleutel op alle computers met gebeurtenislogboekgegevens die moeten worden beveiligd. De bijbehorende persoonlijke sleutel wordt gebruikt om de gebeurtenislogboeken na te verwerken op een veiligere locatie, zoals een centrale gebeurtenislogboekverzamelaar of SIEM-aggregator . U kunt SIEM instellen in Azure. Zie Algemene SIEM-integratie voor meer informatie.

Beveiligde gebeurtenislogboekregistratie inschakelen via groepsbeleid

Als u logboekregistratie van beveiligde gebeurtenissen wilt inschakelen, schakelt u de Enable Protected Event Logging functie in groepsbeleid in via Administrative Templates -> Windows Components -> Event Logging. Voor deze instelling is een versleutelingscertificaat vereist dat u in een van de volgende formulieren kunt opgeven:

  • De inhoud van een X.509-certificaat met base-64-codering (bijvoorbeeld aangeboden door de Export optie in Certificaatbeheer).
  • De vingerafdruk van een certificaat dat te vinden is in het certificaatarchief van de lokale machine (kan worden geïmplementeerd door de PKI-infrastructuur).
  • Het volledige pad naar een certificaat (kan lokaal of een externe share zijn).
  • Het pad naar een map met een certificaat of certificaten (kan lokaal of een externe share zijn).
  • De onderwerpnaam van een certificaat dat te vinden is in het certificaatarchief van de lokale machine (kan worden geïmplementeerd door de PKI-infrastructuur).

Het resulterende certificaat moet een uitgebreid sleutelgebruik () hebben Document Encryption en het Data Encipherment gebruik van sleutels of Key Encipherment sleutelgebruik is1.3.6.1.4.1.311.80.1 ingeschakeld.

Waarschuwing

De persoonlijke sleutel mag niet worden geïmplementeerd op de gebeurtenissen voor logboekregistratie van machines. Deze moet worden bewaard op een veilige locatie waar u de berichten ontsleutelt.

Beveiligde berichten voor gebeurtenislogboeken ontsleutelen

Met het volgende script worden gebeurtenissen opgehaald en ontsleuteld, ervan uitgaande dat u de persoonlijke sleutel hebt:

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

Zie ook