Compartilhar via


about_Logging_Windows

Descrição breve

O PowerShell registra operações internas do mecanismo, provedores e cmdlets no log de eventos do Windows.

Descrição longa

O PowerShell registra detalhes sobre as operações do PowerShell, como iniciar e parar o mecanismo e os provedores e executar comandos do PowerShell.

Para obter informações sobre como fazer logon no Windows PowerShell 5.1, consulte about_Logging.

O PowerShell dá suporte à configuração de duas categorias de registro em log:

  • Log do módulo – registre os eventos de execução do pipeline para membros de módulos especificados. O registro do módulo deve ser ativado para a sessão e módulos específicos. Para obter mais informações sobre como configurar esse registro, consulte about_PowerShell_Config.

    Se o log do módulo estiver habilitado por meio da configuração, você poderá habilitar e desabilitar o log para módulos específicos em uma sessão definindo o valor da propriedade LogPipelineExecutionDetails do módulo.

    Por exemplo, para habilitar o log do módulo para o módulo PSReadLine :

    $psrl = Get-Module PSReadLine
    $psrl.LogPipelineExecutionDetails = $true
    Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
    
    Name       LogPipelineExecutionDetails
    ----       ---------------------------
    PSReadLine                        True
    
  • Log de bloco de script - Registre o processamento de comandos, blocos de script, funções e scripts, sejam invocados interativamente ou por meio de automação.

    Quando você habilita o Log de Blocos de Script, o PowerShell registra o conteúdo de todos os blocos de script que ele processa. Depois de habilitada, qualquer nova sessão do PowerShell registra essas informações. Para obter mais informações, consulte Habilitando o log de blocos de script.

Registrando o provedor de eventos do PowerShell no Windows

Ao contrário do Linux ou macOS, o Windows exige que o provedor de eventos seja registrado antes que os eventos possam ser gravados no log de eventos. Para habilitar o provedor de eventos do PowerShell, execute o comando a seguir em um prompt do PowerShell com privilégios elevados.

$PSHOME\RegisterManifest.ps1

Exibindo as entradas do log de eventos do PowerShell no Windows

Os logs do PowerShell podem ser exibidos usando o Visualizador de Eventos do Windows. O log de eventos está localizado no grupo Logs de Aplicativos e Serviços e é chamado de PowerShellCore. O GUID do provedor ETW associado é {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

Quando o Log de Blocos de Script está habilitado, o PowerShell registra os seguintes eventos no log do PowerShellCore/Operacional :

Campo Valor
EventId 4104 / 0x1008
Canal Operational
Nível Verbose
Opcode Create
Tarefa CommandStart
Palavra-chave Runspace

Cancelando o registro do provedor de eventos do PowerShell no Windows

O registro do provedor de eventos coloca um bloqueio na biblioteca binária usada para decodificar eventos. Para atualizar essa biblioteca, o provedor deve ter o registro cancelado para liberar esse bloqueio.

Para cancelar o registro do provedor do PowerShell, execute o comando a seguir em um prompt do PowerShell com privilégios elevados.

$PSHOME\RegisterManifest.ps1 -Unregister

Depois de atualizar o PowerShell, execute $PSHOME\RegisterManifest.ps1 para registrar o provedor de eventos atualizado.

Ativando o registro de blocos de script

Quando você habilita o Log de Blocos de Script, o PowerShell registra o conteúdo de todos os blocos de script que ele processa. Depois de habilitada, qualquer nova sessão do PowerShell registra essas informações.

Observação

É recomendável habilitar o Log de Eventos Protegidos, conforme descrito abaixo, ao usar o Log de Blocos de Script para qualquer coisa que não seja para fins de diagnóstico.

O Log de Blocos de Script pode ser habilitado por meio da Política de Grupo ou de uma configuração do Registro.

Como usar a Política de Grupo

Para habilitar a transcrição automática, habilite o recurso Ativar Log de Blocos de Script do PowerShell na Política de Grupo por meio de Modelos Administrativos –> PowerShell Core.

Usando o Registro

Execute a seguinte função:

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

Usando o arquivo de configuração do PowerShell

Você pode definir a ScriptBlockLogging opção no arquivo que controla como o powershell.config.json PowerShell se comporta. Para obter mais informações, consulte about_PowerSHell_Config.

Registro de eventos protegido

Aumentar o nível de registro em um sistema aumenta a possibilidade de que o conteúdo registrado possa conter dados confidenciais. Por exemplo, com o log de script habilitado, as credenciais ou outros dados confidenciais usados por um script podem ser gravados no log de eventos. Quando uma máquina que registrou dados confidenciais é comprometida, os logs podem fornecer a um invasor as informações necessárias para estender seu alcance.

Para proteger essas informações, o Windows 10 apresenta o Log de Eventos Protegidos. O Log de Eventos Protegido permite que os aplicativos participantes criptografem dados confidenciais gravados no log de eventos. Posteriormente, você pode descriptografar e processar esses logs em um coletor de logs mais seguro e centralizado.

O conteúdo do log de eventos é protegido usando o padrão IETF Cryptographic Message Syntax (CMS). O CMS usa criptografia de chave pública. As chaves usadas para criptografar conteúdo e descriptografar conteúdo são mantidas separadas.

A chave pública pode ser amplamente compartilhada e não é um dado confidencial. Qualquer conteúdo criptografado com essa chave pública só pode ser descriptografado pela chave privada. Para obter mais informações sobre Criptografia de Chave Pública, consulte Wikipedia - Criptografia de Chave Pública.

Para habilitar uma política de Log de Eventos Protegidos, implante uma chave pública em todos os computadores que tenham dados de log de eventos a serem protegidos. A chave privada correspondente é usada para pós-processar os logs de eventos em um local mais seguro, como um coletor de log de eventos central ou agregador SIEM . Você pode configurar o SIEM no Azure. Para obter mais informações, consulte Integração de SIEM genérico.

Habilitando o log de eventos protegido por meio da Política de Grupo

Para habilitar o Log de Eventos Protegidos, habilite o recurso na Política de Grupo por meio do Enable Protected Event Logging Administrative Templates -> Windows Components -> Event Logging. Essa configuração requer um certificado de criptografia, que você pode fornecer em uma das várias formas:

  • O conteúdo de um certificado X.509 codificado em base 64 (por exemplo, conforme oferecido pela Export opção no Gerenciador de Certificados).
  • A impressão digital de um certificado que pode ser encontrado no repositório de certificados do Computador Local (pode ser implantado pela infraestrutura PKI).
  • O caminho completo para um certificado (pode ser local ou um compartilhamento remoto).
  • O caminho para um diretório que contém um certificado ou certificados (pode ser local ou um compartilhamento remoto).
  • O nome da entidade de um certificado que pode ser encontrado no repositório de certificados do Computador Local (pode ser implantado pela infraestrutura PKI).

O certificado resultante deve ter Document Encryption como um uso de chave aprimorado (1.3.6.1.4.1.311.80.1) e Data Encipherment Key Encipherment usos de chave ativados.

Aviso

A chave privada não deve ser implantada nos computadores que registram eventos de log. Ele deve ser mantido em um local seguro onde você descriptografa as mensagens.

Descriptografando mensagens de log de eventos protegidos

O script a seguir recupera e descriptografa eventos, supondo que você tenha a chave privada:

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

Confira também