
Oi Habr! Leia em cat como acessar o log de segurança do Windows sem privilégios de administrador. Este não será o primeiro artigo sobre Habré relacionado aos logs do Windows e provavelmente não o mais original, mas, na minha opinião, passei muito tempo procurando uma solução simples para ler logs como um usuário comum, então decidi compartilhar "minha história de sucesso".
Também tive que comparar o desempenho dos cmdlets do Powershell com os cmdlets
Get-WinEvent e
Get-EventLog .
Tudo o que está em discussão é relevante para o Windows Server 2008R2 / 2012R2, Windows 10 Pro (1809), não verifiquei outras versões, acho que a situação é semelhante aos produtos de 2016 e 2019.
E assim, por padrão, o usuário médio não tem permissão para ler logs de segurança.
Ao tentar obter os logs, você recebe um erro.

E através
do Visualizador de Eventos, o acesso também será negado.

SHOWTIME
Adicione o usuário ao grupo local de
leitores de log de eventos .

Em seguida, concedemos permissões de leitura à ramificação do registro
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security .

Sem alterar os direitos dessa ramificação do registro, você não poderá ler os parâmetros do log de segurança; portanto, não poderá descobrir o local e o nome do arquivo de log.
Segurança , esta é a única seção do serviço
Log de
Eventos que não herda direitos de acesso da raiz.
É assim que as permissões para
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog se parecem.

Verifique se os cmdlets
Get-WinEvent e
Get-EventLog funcionam!
Mais tarde, voltando a comparar esses cmdlets ...

Gerenciar auditoria e log de segurança
Se o usuário precisar ter direitos para limpar o log, você precisará editar a política de grupo. Um usuário ou grupo de usuários precisa adicionar
permissões de gerenciamento de auditoria e log de segurança .
Este grupo está localizado aqui
Configuração do Computador \ Configurações do Windows \ Configurações de Segurança \ Diretivas Locais \ Atribuição de Direitos do Usuário .

Você pode ler mais sobre
Gerenciar auditoria e log de segurança aqui.Essa configuração de diretiva determina quais usuários podem especificar opções de auditoria de acesso a objetos para recursos individuais, como arquivos, objetos do Active Directory e chaves do Registro. Esses objetos especificam suas listas de controle de acesso do sistema (SACL). Um usuário a quem este direito é atribuído também pode exibir e limpar o log de segurança no Visualizador de Eventos. Para obter mais informações sobre a política de auditoria de acesso a objetos, consulte Auditar o acesso a objetos.
Verificamos, tudo funciona como prometido, os logs foram limpos ...

Não há outras lógicas para limpar direitos.
Honestamente, não consigo criar um cenário em que o usuário precise ter o direito de limpar os logs de segurança, mas existe essa oportunidade.Get-WinEvent VS Get-EventLog
É hora de comparar esses dois cmdlets
Get-eventlogDescrição:
O cmdlet Get-EventLog obtém eventos e logs de eventos nos computadores local e remoto.
Você pode usar os parâmetros e os valores de propriedade do cmdlet para procurar eventos. Esse cmdlet obtém eventos que correspondem aos valores de propriedade especificados.
Os cmdlets que contêm o substantivo EventLog funcionam apenas em logs de eventos clássicos. Para obter eventos de logs que usam a tecnologia Windows Event Log no Windows Vista e versões posteriores do Windows, use Get-WinEvent.
Get-WinEventDescrição:
O cmdlet Get-WinEvent obtém eventos de logs de eventos, incluindo logs clássicos, como os logs do sistema e de aplicativos, e os logs de eventos gerados pela tecnologia Windows Event Log introduzida no Windows Vista. Ele também obtém eventos em arquivos de log gerados pelo Event Tracing for Windows (ETW).
Sem parâmetros, um comando Get-WinEvent obtém todos os eventos de todos os logs de eventos no computador. Para interromper o comando, pressione CTRL + C.
Get-WinEvent também lista logs de eventos e provedores de log de eventos. Você pode obter eventos de logs selecionados ou de logs gerados por provedores de eventos selecionados. E você pode combinar eventos de várias fontes em um único comando. Esse cmdlet permite filtrar eventos usando consultas XPath, consultas XML estruturadas e consultas de tabela de hash simplificadas
De acordo com a descrição, o
Get-WinEvent pode funcionar com um grande número de revistas que apareceram no
Windows Vista .
Para maior clareza, aqui estão as listas com as quais esses cmdlets trabalham
: eu parei a saída do
Get-WinEvent .

Mas há uma coisa: o desempenho importa, compare o tempo de execução da consulta.
O tempo de execução do Get-WinEvent é simplesmente incrível, preste atenção ao número de entradas nos logs de
Aplicação e
Segurança , o número de eventos é aproximadamente o mesmo 3400-3600, mas a diferença no tempo de execução é quase 20 vezes ...
Get-WinEvent gasta 127 segundos versus 52 segundos
Get-EventLog para ler eventos de
aplicativos .
E xeque
- mate, o
Get-WinEvent gasta 2020 segundos versus 45 segundos do
Get-EventLog para ler eventos de
segurança .
Se você executar os mesmos comandos localmente, tudo não
ficará tão ruim, mas mesmo o
Get-EventLog local funcionará com logs de segurança 50 vezes mais rápido que o
Get-WinEvent .

E outro exemplo, já um pouco mais significativo, de recebimento de eventos com o código
4624 Uma conta foi conectada com êxito .

O que posso dizer, os números não mentem ...
Acesso de não administrador aos logs de eventos do DC
E, para concluir, deixei o tópico de obter acesso aos logs de segurança no controlador de domínio.
Todos os itens acima também são relevantes para o controlador de domínio com algumas alterações.
1 - Você encontrará o grupo
Leitores de Log de Eventos nos objetos de objetos de
segurança internos .

Ao adicionar um usuário a esse grupo, você concede apenas permissões de leitura aos controladores de domínio.
E não esqueça que em cada um dos controladores de domínio você deve dar permissão para ler a ramificação do registro
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security .
Aqui está um exemplo, não há permissão para ler o log de um servidor membro, se você precisar ler os logs de outras máquinas no domínio, use políticas de grupo para adicionar usuários ou grupos de usuários aos grupos locais de
Leitores de Log de Eventos .

2 - Para adicionar direitos para limpar logs, você deve editar a
Política de Controladores de Domínio Padrão .
3 - Para permitir o lançamento de tarefas em nome do usuário no controlador de domínio, você também deve editar a
Política de Controladores de Domínio Padrão e conceder ao usuário
Logon como permissões de
trabalho em lote .
4 - Seja extremamente cuidadoso ao editar políticas de domínio padrão!
PS
Uma pequena lista de recursos que me ajudaram:
Na minha opinião, publicações úteis sobre o Habr, cujos tópicos estão relacionados aos logs do Windows:
O fim