Rastree quién eliminó archivos/carpetas de Windows Server 2016 con la directiva de auditoría

¿Aún no está seguro de cómo rastrear quién eliminó archivos/carpetas de Windows server 2016 con la directiva de auditoría? Echa un vistazo a este blog.

Aquí en Bobcares, hemos visto varios errores relacionados con Windows como parte de nuestros Servicios de Administración de servidores para servidores web y proveedores de servicios en línea.

Hoy veremos cómo rastrear el archivo/carpeta eliminados de Windows.

Cómo rastrear quién eliminó el archivo/carpeta de Windows Server 2016 con la Directiva de auditoría

Ahora echemos un vistazo a cómo nuestros ingenieros de soporte encuentran quién eliminó el archivo/carpeta del servidor.

Utilizamos la auditoría de eventos de acceso a objetos del sistema de archivos para identificar a un usuario específico que creó, eliminó o modificó un archivo específico.

Ahora veremos cómo configurar la auditoría de eventos para archivos en una carpeta de red compartida en Windows Server 2016. Después de configurar la auditoría, utilizamos la información del Visor de eventos para encontrar al usuario que eliminó un archivo específico en el servidor de archivos.

Sin embargo, cuando eliminamos un archivo de una carpeta de red compartida, se elimina inmediatamente en lugar de enviarse a la papelera de reciclaje del usuario.

Cómo habilitar la Directiva de Auditoría de Acceso a archivos y carpetas en Windows

De forma predeterminada, la auditoría de Acceso a objetos del sistema de archivos no se habilitará en Windows Server. Podemos habilitar y configurar la configuración de auditoría mediante la Directiva de grupo. Estos son los pasos que seguimos para configurar la auditoría en un servidor mediante el Editor de directivas de grupo Local.

    • En primer lugar, abrimos la consola del Editor de Directivas de Grupo Local – gpedit.msc
    • A continuación, vamos a la sección GPO con directivas de auditoría avanzadas: Configuración de Windows >> Configuración de seguridad >> Configuración avanzada de directivas de auditoría >> Acceso a objetos
    • Después de eso, abrimos la directiva del Sistema de archivos de auditoría y especificamos que queremos registrar solo los eventos de acceso correcto en objetos del sistema de archivos (Configure los siguientes eventos de auditoría >> Éxito)
      cómo rastrear quién eliminó el archivo/carpeta de Windows server 2016 con directiva de auditoría
    • Finalmente, guardamos los cambios y actualizamos la configuración de la directiva de grupo local con el siguiente comando.
      gpupdate /force

Configuración de la Configuración de Auditoría de Archivos eliminados en una Carpeta compartida

Ahora configuramos la auditoría en las propiedades de la carpeta de red compartida a la que queremos rastrear el acceso.

1. Primero, ejecutamos el Explorador de archivos y abrimos las propiedades de la carpeta. Vamos a la pestaña Seguridad y hacemos clic en el botón Avanzado. Luego vamos a la pestaña de Auditoría.

2. Si aparece el siguiente mensaje, haga clic en el botón Continuar.

You must be an administrator or have been given the appropriate privileges to view the audit properties of this object

3. A continuación, hacemos clic en el botón Agregar para especificar el usuario o grupo para el que queremos capturar eventos de auditoría. Si queremos hacer un seguimiento de los eventos de acceso para todos los usuarios, especificamos el grupo Todos.

4. Después de eso, también especificamos los permisos utilizados para acceder al objeto que se deben registrar. Para guardar solo eventos de eliminación de archivos en el Registro de eventos, hacemos clic en el botón Mostrar permisos avanzados. En la lista de eventos, dejamos la auditoría solo para los eventos de eliminación de carpetas y archivos: Eliminar y Eliminar subcarpetas y archivos.

En caso de que el usuario elimine cualquier archivo o carpeta de la carpeta de red compartida. A continuación, el evento de eliminación de archivos de auditoría exitosa del sistema de archivos -> aparece en el registro de seguridad con el ID de evento 4663 del origen de auditoría de seguridad de Microsoft Windows.

Luego abrimos la consola MMC del Visor de eventos (eventvwr.msc), expanda la sección de seguridad de Registros de Windows ->. Habilite el filtro de registro de eventos por EventID 4663.

Después de eso, abrimos cualquiera de los eventos restantes en el Visor de eventos. Vemos que contiene información sobre el nombre del archivo eliminado, la cuenta del usuario que eliminó el archivo y el nombre del proceso.

An attempt was made to access an object.Subject:Security ID: CORP\jonAccount Name: jonAccount 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

Después de habilitar la directiva de auditoría de acceso a archivos, podemos encontrar los detalles a continuación en el registro de seguridad:

  • Quién eliminó el archivo de la carpeta de red compartida y cuándo sucedió
  • Qué aplicación (proceso) se utilizó para eliminar el archivo
  • Cuál es la fecha de la copia de seguridad que se restaurará

Cómo escribir Eventos de eliminación de archivos en la base de datos SQL (MySQL/MSSQL)

Sin embargo, incluso si la auditoría de los archivos eliminados está habilitada, puede ser problemático encontrar algo en troncos. En primer lugar, es bastante difícil encontrar una entrada específica entre miles de eventos. En segundo lugar, si un archivo se eliminó hace mucho tiempo, este evento puede estar ausente en los registros, ya que fue sobrescrito por eventos nuevos.

Guardamos todos los eventos de eliminación de archivos en la base de datos SQL. Para ello, utilizamos bases de datos de Microsoft SQL Server, Elasticsearch o MySQL/MariaDB para almacenar los eventos.

Por ejemplo, veamos cómo registrar eventos de auditoría en una tabla de base de datos separada en MySQL. Podemos utilizar el siguiente formato de tabla:

  • Nombre del servidor
  • Nombre del archivo eliminado
  • Fecha y hora
  • Nombre del usuario que ha eliminado el archivo

La consulta MySQL para crear esta tabla se ve a continuación:

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));

Para obtener eventos con EventID 4663 del registro de seguridad del día actual, utilizamos el siguiente script de PowerShell:

$today = get-date -DisplayHint date -UFormat %Y-%m-%dGet-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}}

El siguiente script de PowerShell escribirá los datos que lleguemos a la base de datos MySQL en un servidor remoto (con la dirección 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;;database=aduser'}$Connection.Open()$sql = New-Object MySql.Data.MySqlClient.MySqlCommand$sql.Connection = $Connection$today = get-date -DisplayHint date -UFormat %Y-%m-%dGet-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()

Después de guardar eventos en una base de datos externa, podemos borrar este registro de eventos.

Ahora, para averiguar quién ha eliminado el archivo » Informe anual.DOC», ejecutamos el siguiente script en la consola de PowerShell.

$DeletedFile = "%AnnualReport.DOC%"Set-ExecutionPolicy RemoteSignedAdd-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;;database=aduser'}$Connection.Open()$MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter$MYSQLDataSet = New-Object System.Data.DataSet$MYSQLCommand.Connection=$Connection$MYSQLCommand.CommandText="SELECT user_name,dt_time from deleted_items where file_name LIKE '$DeletedFile'"$MYSQLDataAdapter.SelectCommand=$MYSQLCommand$NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, "data")foreach($DataSet in $MYSQLDataSet.tables){write-host "User:" $DataSet.user_name "at:" $DataSet.dt_time}$Connection.Close()

Finalmente, ahora, vemos el nombre de usuario y la hora en que se eliminó el archivo en la consola PS.

Archivo de registro Eliminar eventos de auditoría en un archivo de texto

Si no queremos utilizar un servidor de base de datos independiente, guardamos los eventos de auditoría de eliminación de archivos en un archivo de registro de texto sin formato. Para ello, utilizamos este script de PowerShell para guardar la salida en un archivo de texto:

$Outfile = "C:\Logs\Deleted-file-history-log.txt"$today = get-date -DisplayHint date -UFormat %Y-%m-%dGet-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"$strLog = $Computer + " " + $File + " " + $Time + " " + $User$strLog | out-file $Outfile –append}}

Deja una respuesta

Tu dirección de correo electrónico no será publicada.