Spåra vem raderade fil / mapp från Windows Server 2016 med revisionsprincip

fortfarande inte säker på hur man spårar vem raderade fil/mapp från windows server 2016 med revisionsprincip? Ta en titt på den här bloggen.

här på Bobcares har vi sett flera sådana Windows-relaterade fel som en del av våra Serverhanteringstjänster för webbhotell och onlinetjänstleverantörer.

idag ser vi hur du spårar den raderade filen/mappen Windows.

så här spårar du vem som raderade filen/mappen från Windows Server 2016 med revisionspolicy

låt oss nu ta en titt på hur våra supportingenjörer hittar vem som raderade filen/mappen från servern.

vi använder filsystemobjektåtkomsthändelsegranskning för att identifiera en specifik användare som skapade, raderade eller ändrade en specifik fil.

vi ska nu se hur du konfigurerar händelsegranskning för filer i en delad nätverksmapp på Windows Server 2016. Efter att ha konfigurerat revision använder vi informationen från Event Viewer för att hitta användaren som raderade en specifik fil på filservern.

men när vi tar bort en fil från en delad nätverksmapp raderas den omedelbart istället för att skickas till användarens papperskorgen.

så här aktiverar du Granskningsprincip för fil-och mappåtkomst i Windows

som standard aktiveras inte granskningen av Filsystemobjektåtkomst på Windows Server. Vi kan aktivera och konfigurera granskningsinställningar med hjälp av grupppolicy. Här är stegen som vi följer för att konfigurera granskning på en server med hjälp av den lokala grupprincipredigeraren.

    • först öppnar vi den lokala Grupppolicyredigeringskonsolen-gpedit.msc
    • därefter går vi till GPO-avsnittet med avancerade revisionspolicyer: Windows-Inställningar >> säkerhetsinställningar >> avancerad Revisionspolicykonfiguration >> Objektåtkomst
    • därefter öppnar vi Revisionsfilsystempolitiken och anger att vi bara vill logga framgångsrika åtkomsthändelser till filsystemobjekt (konfigurera följande revisionshändelser >> framgång)
      så här spårar du vem som raderade fil/mapp från windows server 2016 med revisionspolicy
    • slutligen sparar vi ändringarna och uppdaterar de lokala Grupppolicyinställningarna med kommandot nedan.
      gpupdate /force

konfigurera fil raderade Granskningsinställningar i en delad mapp

nu konfigurerar vi revision i egenskaperna för mappen share network som vi vill spåra åtkomst till.

1. Först kör vi File Explorer och öppnar mappegenskaperna. Vi går till fliken Säkerhet och klickar på knappen Avancerat. Sedan går vi till fliken revision.

2. Om meddelandet nedan visas klickar du på knappen Fortsätt.

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

3. Sedan klickar vi på knappen Lägg till för att ange användaren eller gruppen som vi vill fånga revisionshändelser för. Om vi vill spåra åtkomsthändelser för alla användare anger vi gruppen alla.

4. Därefter anger vi också vilka behörigheter som används för att komma åt objektet som ska loggas. För att bara spara händelser för borttagning av filer i händelseloggen klickar vi på knappen Visa avancerade behörigheter. I händelselistan lämnar vi revision endast för mappen och filen radering händelser-Ta bort och ta bort undermappar och filer.

om användaren tar bort någon fil eller mapp i den delade nätverksmappen. Sedan visas filsystemet -> Audit Success file delete-händelsen i säkerhetsloggen med Händelse-ID 4663 från Microsoft Windows security auditing-källan.

sedan öppnar vi Event Viewer MMC-konsolen (eventvwr.MSC), expandera Windows-loggarna – > säkerhetsavsnittet. Aktivera händelseloggen filter av EventID 4663.

därefter öppnar vi någon av de återstående händelserna i händelsevisaren. Vi ser att den innehåller information om namnet på den raderade filen, kontot för användaren som raderade filen och processnamnet.

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

efter att ha aktiverat granskningspolicy för filåtkomst kan vi hitta nedanstående detaljer i säkerhetsloggen:

  • vem raderade filen från den delade nätverksmappen och när det hände
  • vilken applikation (process) användes för att radera filen
  • vad är datumet för säkerhetskopian som ska återställas

hur man skriver Raderingshändelser till SQL-databasen (MySQL/MSSQL)

även om granskningen av de raderade filerna är aktiverad kan det vara besvärligt att hitta något i loggarna. För det första är det ganska svårt att hitta en specifik post bland tusentals händelser. För det andra, om en fil raderades för länge sedan, kan den här händelsen vara frånvarande i loggarna, eftersom den skrivits över av nya händelser.

vi sparar alla filer radera händelser till SQL-databasen. För det använder vi Microsoft SQL Server, Elasticsearch eller MySQL/MariaDB-databaser för att lagra händelserna.

låt oss till exempel se hur du loggar granskningshändelser till en separat databastabell på MySQL. Vi kan använda följande tabellformat:

  • servernamn
  • namn på den raderade filen
  • datum och tid
  • namn på användaren som har raderat filen

MySQL-frågan för att skapa denna tabell ser ut som nedan:

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

för att få händelser med EventID 4663 från säkerhetsloggen för den aktuella dagen använder vi följande PowerShell-skript:

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

nästa PowerShell-skript skriver de data vi kommer till MySQL-databasen på en fjärrserver (med IP-adressen 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()

när vi har sparat händelser i en extern databas kan vi rensa händelseloggen.

nu, för att ta reda på vem som har raderat filen ”AnnualReport.DOC”, kör vi nedanstående skript i PowerShell-konsolen.

$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()

slutligen ser vi nu användarnamnet och tiden då filen raderades i PS-konsolen.

Loggningsfil ta bort Granskningshändelser till en textfil

om vi inte vill använda en separat databasserver sparar vi granskningshändelser för borttagning av filer i en loggfil med vanlig text. För det använder vi detta PowerShell-skript för att spara utdata till en textfil:

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

Lämna ett svar

Din e-postadress kommer inte publiceras.