about_Logging_Windows

Kort beskrivning

PowerShell loggar interna åtgärder från motorn, providrar och cmdletar till Windows-händelseloggen.

Lång beskrivning

PowerShell loggar information om PowerShell-åtgärder, till exempel att starta och stoppa motorn och providrar och köra PowerShell-kommandon.

Anteckning

Windows PowerShell versionerna 3.0, 4.0, 5.0 och 5.1 innehåller EventLog-cmdletar för Windows-händelseloggarna. För att visa listan med EventLog-cmdletar i dessa versioner skriver du: .Get-Command -Noun EventLog Mer information finns i cmdlet-dokumentationen och about_EventLogs för din version av Windows PowerShell.

Visa PowerShell-händelseloggposterna i Windows

PowerShell-loggar kan visas med hjälp av Windows Loggboken. Händelseloggen finns i gruppen Program- och tjänstloggar och heter PowerShellCore. Den associerade ETW-providern GUID är {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

När Loggning av skriptblock är aktiverat loggar PowerShell följande händelser i loggen PowerShellCore/Operational :

Fält Värde
EventID 4104 / 0x1008
Kanal Operational
Nivå Verbose
Opcode Create
Uppgift CommandStart
Nyckelord Runspace

Registrera PowerShell-händelseprovidern i Windows

Till skillnad från Linux eller macOS kräver Windows att händelseprovidern registreras innan händelser kan skrivas till händelseloggen. Om du vill aktivera PowerShell-händelseprovidern kör du följande kommando från en upphöjd PowerShell-kommandotolk.

$PSHOME\RegisterManifest.ps1

Avregistrera PowerShell-händelseprovidern i Windows

När händelseprovidern registreras låses det binära bibliotek som används för att avkoda händelser. Om du vill uppdatera det här biblioteket måste providern avregistreras för att det här låset ska kunna släppas.

Om du vill avregistrera PowerShell-providern kör du följande kommando från en upphöjd PowerShell-kommandotolk.

$PSHOME\RegisterManifest.ps1 -Unregister

När du har uppdaterat PowerShell kör du $PSHOME\RegisterManifest.ps1 för att registrera den uppdaterade händelseprovidern.

Aktivera loggning av skriptblock

När du aktiverar loggning av skriptblock registrerar PowerShell innehållet i alla skriptblock som bearbetas. När den här informationen har aktiverats loggar alla nya PowerShell-sessioner den här informationen.

Anteckning

Vi rekommenderar att du aktiverar loggning av skyddade händelser enligt beskrivningen nedan när du använder loggning av skriptblock för något annat än diagnostikändamål.

Loggning av skriptblock kan aktiveras via grupprincip eller en registerinställning.

Med hjälp av grupprincip

Aktivera automatisk transkription genom Turn on PowerShell Script Block Logging att aktivera funktionen i grupprincip via Administrative Templates -> Windows Components -> Windows PowerShell.

Använda registret

Kör följande funktion:

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

Loggning av skyddad händelse

Om du ökar loggningsnivån på ett system ökar risken för att loggat innehåll kan innehålla känsliga data. Om skriptloggning till exempel är aktiverat kan autentiseringsuppgifter eller andra känsliga data som används av ett skript skrivas till händelseloggen. När en dator som har loggat känsliga data komprometteras kan loggarna ge en angripare information som behövs för att utöka deras räckvidd.

För att skydda den här informationen introducerar Windows 10 loggning av skyddade händelser. Med skyddad händelseloggning kan deltagande program kryptera känsliga data som skrivits till händelseloggen. Senare kan du dekryptera och bearbeta dessa loggar på en säkrare och centraliserad logginsamlare.

Händelselogginnehållet skyddas med hjälp av IETF-standarden för kryptografisk meddelandesyntax (CMS). CMS använder kryptering med offentliga nycklar. Nycklarna som används för att kryptera innehåll och dekryptera innehåll hålls separata.

Den offentliga nyckeln kan delas brett och är inte känsliga data. Allt innehåll som krypteras med den här offentliga nyckeln kan bara dekrypteras av den privata nyckeln. Mer information om kryptografi med offentliga nycklar finns i Wikipedia – kryptografi med offentlig nyckel.

Om du vill aktivera en princip för loggning av skyddade händelser distribuerar du en offentlig nyckel till alla datorer som har händelseloggdata att skydda. Motsvarande privata nyckel används för att efterbearbeta händelseloggarna på en säkrare plats, till exempel en central händelselogginsamlare eller SIEM-aggregator . Du kan konfigurera SIEM i Azure. Mer information finns i Allmän SIEM-integrering.

Aktivera loggning av skyddade händelser via grupprincip

Aktivera loggning av skyddad händelse genom att aktivera Enable Protected Event Logging funktionen i grupprincip via Administrative Templates -> Windows Components -> Event Logging. Den här inställningen kräver ett krypteringscertifikat som du kan ange i något av flera formulär:

  • Innehållet i ett base-64-kodat X.509-certifikat (till exempel enligt Export alternativet i Certifikathanteraren).
  • Tumavtrycket för ett certifikat som finns i certifikatarkivet för den lokala datorn (kan distribueras av PKI-infrastrukturen).
  • Den fullständiga sökvägen till ett certifikat (kan vara lokal eller en fjärrresurs).
  • Sökvägen till en katalog som innehåller ett certifikat eller certifikat (kan vara lokal eller en fjärrresurs).
  • Ämnesnamnet för ett certifikat som finns i certifikatarkivet för den lokala datorn (kan distribueras av PKI-infrastrukturen).

Det resulterande certifikatet måste ha Document Encryption en förbättrad nyckelanvändning (1.3.6.1.4.1.311.80.1) och antingen Data Encipherment eller Key Encipherment nyckelanvändning aktiverad.

Varning

Den privata nyckeln ska inte distribueras till datorernas loggningshändelser. Den ska förvaras på en säker plats där du dekrypterar meddelandena.

Dekryptera meddelanden om loggning av skyddad händelse

Följande skript hämtar och dekrypterar, förutsatt att du har den privata nyckeln:

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

Se även