como detectar quem excluiu um arquivo no Windows Server com a Política de auditoria?

você pode usar a auditoria de eventos de acesso a objetos do sistema de arquivos para identificar um usuário específico que criou, excluiu ou modificou um arquivo específico. Neste artigo, mostraremos como configurar a auditoria de eventos para arquivos em uma pasta de rede compartilhada no Windows Server 2016. Depois de configurar a auditoria, você pode usar as informações do Visualizador de Eventos para encontrar o usuário que excluiu um arquivo específico no servidor de arquivos.

quando você exclui um arquivo de uma pasta de rede compartilhada, ele é excluído imediatamente em vez de ser enviado para a lixeira do Usuário. A lista de arquivos abertos na pasta compartilhar pode ser obtida da seguinte forma.

como Habilitar a Política de auditoria de acesso a arquivos e pastas no Windows?

por padrão, a auditoria de acesso a objetos do sistema de arquivos não está ativada no Windows Server. Você pode ativar e configurar as configurações de auditoria usando a Política de grupo. Se você precisar habilitar Políticas de auditoria em vários servidores ou computadores, poderá usar GPOs de domínio (configuráveis usando o console mmc gpmc.msc). Se você quiser apenas configurar a auditoria em um servidor, poderá usar o editor de Diretiva de Grupo Local.

  1. Abra o Editor de Diretiva de Grupo do console– gpedit.msc;
  2. Ir para o GPO seção com avançadas políticas de auditoria: Configurações do Windows -> Configurações de Segurança -> Avançadas de Configuração de Política de Auditoria -> Acesso a objetos;
  3. Abra o Arquivo de Auditoria de diretiva do Sistema e especificar que você deseja fazer apenas o bem-sucedidos eventos de acesso a objetos do sistema de arquivos (Configure os seguintes eventos de auditoria -> Sucesso);
    você também pode habilitar a auditoria do acesso a objetos locais usando a Política de acesso a objetos de Auditoria em Configurações do Windows – > configurações de segurança- > Política Local- > Política de auditoria. No entanto, usar a Política de auditoria do sistema de arquivos é preferível porque ela rastreia apenas eventos de acesso NTFS.

    ativar a política do sistema de arquivos de auditoria no windows server

  4. Salve as alterações e atualize as configurações da Política de grupo local usando o comando: gpupdate /force.

configurando as configurações de auditoria excluídas do arquivo em uma pasta compartilhada

Agora você precisa configurar a auditoria nas propriedades da pasta compartilhar rede à qual deseja rastrear o acesso. Execute o File Explorer e abra as propriedades da pasta. Vá para a guia Segurança. Clique no botão Avançado – > vá para a guia auditoria.

se a mensagem “você deve ser um administrador ou ter recebido os privilégios apropriados para visualizar as propriedades de auditoria deste objeto” aparecer, clique no botão continuar.

configurar definições de auditoria em uma pasta compartilhada

, em Seguida, clique no botão Adicionar para especificar o usuário ou grupo para o qual você deseja capturar eventos de auditoria. Se você deseja rastrear eventos de Acesso para todos os usuários, especifique o Grupo Todos.

em seguida, você precisa especificar quais permissões usadas para acessar o objeto devem ser registradas. Para salvar apenas eventos de exclusão de arquivo no Log de Eventos, clique no botão Mostrar permissões avançadas. Na lista de eventos, deixe a auditoria apenas para eventos de exclusão de pasta e arquivo – Excluir e excluir subpastas e arquivos.

configurar auditoria de ações de exclusão de arquivos na pasta compartilhada no Windows Server 2016folder

dica. Lembre-se de que a Política de auditoria para objetos do Windows requer recursos de computação adicionais. Use-o com cuidado, sempre tente minimizar o número de objetos de auditoria e eventos para registrar.

$Path = "E:\Public"
$AuditChangesRules = New-Object System.Security.AccessControl.FileSystemAuditRule('Everyone', 'Delete,DeleteSubdirectoriesAndFiles', 'none', 'none', 'Success')
$Acl = Get-Acl -Path $Path
$Acl.AddAuditRule($AuditChangesRules)
Set-Acl -Path $Path -AclObject $Acl

agora, se o usuário excluir qualquer arquivo ou pasta na pasta rede compartilhada, o evento de exclusão do arquivo de sucesso de auditoria do sistema de arquivos -> aparecerá no log de segurança com o ID de Evento 4663 da fonte de auditoria de segurança do Microsoft Windows.

abra o console mmc do Visualizador de eventos (eventvwr.msc), expanda a seção de segurança Logs do Windows ->. Habilite o filtro de log de eventos pelo EventID 4663.

ID do evento de exclusão de arquivo 4663 no log de segurança do Windows event viewer

abra qualquer um dos eventos restantes no Visualizador de eventos. Como você pode ver, ele contém informações sobre o nome do arquivo excluído, a conta do usuário que excluiu o arquivo e o nome do processo.

An attempt was made to access an object.Subject:Security ID: CORP\jsmithAccount Name: jsmithAccount Domain: CORPLogon ID: 0x32B12627Object:Object Server: SecurityObject Type: FileObject Name: E:\Distr\Backup.rarHandle ID: 0x7bc4Resource Attributes: S:AIProcess Information:Process ID: 0x4Process Name:Access Request Information:Accesses: DELETEAccess Mask: 0x10000

a eliminação do ficheiro de auditoria de eventos 4663 com o nome de usuário no log de segurança

Depois de habilitar o arquivo de diretiva auditoria de acesso, você pode encontrar no log de Segurança :

  • Que excluiu o arquivo a partir da pasta de rede compartilhada e, quando isso aconteceu;
  • Que tipo de aplicação (processo) foi usado para apagar o arquivo;
  • o Que é a data do backup a ser restaurado.

como gravar eventos de exclusão de arquivos no banco de dados SQL (MySQL/MSSQL)?

no entanto, mesmo que a auditoria dos arquivos excluídos esteja ativada, pode ser problemático encontrar algo nos logs. Em primeiro lugar, é muito difícil encontrar uma entrada específica entre milhares de eventos (no Windows não há uma ferramenta conveniente para pesquisar um evento com um filtro flexível). Em segundo lugar, se um arquivo foi excluído há muito tempo, esse evento pode estar ausente nos logs, uma vez que foi substituído por novos eventos.

você pode salvar todos os eventos de exclusão de arquivo no banco de dados SQL. Você pode usar bancos de dados Microsoft SQL Server, Elasticsearch ou MySQL/MariaDB para armazenar seus eventos.Neste exemplo, mostraremos como registrar eventos de auditoria em uma tabela de banco de dados separada em um MySQL. Vou usar o seguinte formato de tabela:

  • nome do Servidor;
  • Nome do arquivo que foi excluído;
  • Data e hora;
  • Nome do usuário que excluiu o arquivo.

a consulta MySQL para criar esta tabela se parece com isso:

CREATE TABLE deleted_items (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time DATETIME, user_name VARCHAR(100), PRIMARY KEY (ID));

Nota. Um exemplo de como acessar um banco de dados MySQL do PowerShell foi considerado anteriormente no artigo consultando o banco de dados MySQL com o PowerShell.

se você quiser usar o banco de dados do Microsoft SQL Server, confira o artigo ” Como executar uma consulta do MSSQL Server do PowerShell?”

Para obter eventos com Id de evento 4663 do log de Segurança para o dia atual, você pode usar o seguinte script do PowerShell:

$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = $_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data."#text"
$User = $event.Event.EventData.Data."#text"
$Computer = $event.Event.System.computer
}
}

Windows auditoria de Segurança - evento 4663 propriedades de

O seguinte script do PowerShell irá gravar os dados que você obter para o banco de dados MySQL em um servidor remoto (com o endereço IP 10.1.1.13):

Add-Type –Path 'C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll'
$Connection = @{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = $_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data."#text"
$File = $File.Replace('\','|')
$User = $event.Event.EventData.Data."#text"
$Computer = $event.Event.System.computer
$sql.CommandText = "INSERT INTO deleted_items (server,file_name,dt_time,user_name ) VALUES ('$Computer','$File','$Time','$User')"
$sql.ExecuteNonQuery()
}
}
$Reader.Close()
$Connection.Close()

Deixe uma resposta

O seu endereço de email não será publicado.