Bijhouden wie bestand/map verwijderd heeft van Windows Server 2016 met auditbeleid

weet nog steeds niet hoe bij te houden wie bestand/map verwijderd heeft van windows server 2016 met auditbeleid? Neem een kijkje op deze blog.

hier bij Bobcares hebben we verschillende Windows-gerelateerde fouten gezien als onderdeel van onze Serverbeheerdiensten voor webhosts en online serviceproviders.

vandaag zullen we zien hoe het verwijderde bestand/map Windows te volgen.

Hoe bij te houden wie het bestand/de map verwijderd heeft van Windows Server 2016 met auditbeleid

laten we nu eens kijken hoe onze Support Engineers vinden wie het bestand/de map verwijderd heeft van de server.

we maken gebruik van het bestandssysteem object access event auditing om een specifieke gebruiker te identificeren die een specifiek bestand heeft aangemaakt, verwijderd of gewijzigd.

we zullen nu zien hoe event audit voor bestanden op een gedeelde netwerkmap op Windows Server 2016 wordt geconfigureerd. Na het configureren van controle, gebruiken we de informatie van de logboeken om de gebruiker te vinden die een specifiek bestand op de bestandsserver heeft verwijderd.

echter, wanneer we een bestand uit een gedeelde netwerkmap verwijderen, wordt het onmiddellijk verwijderd in plaats van naar de prullenbak van de gebruiker te worden verzonden.

controlebeleid voor bestandstoegang en maptoegang inschakelen op Windows

standaard is de controle van objecttoegang voor bestandssysteem niet ingeschakeld op Windows Server. We kunnen auditinstellingen inschakelen en configureren met Groepsbeleid. Hier volgen de stappen die we volgen om controle op één server te configureren met behulp van de Editor voor lokaal groepsbeleid.

    • eerst openen we de console van de Editor voor lokaal groepsbeleid – gpedit.msc
    • vervolgens gaan we naar de sectie groepsbeleidsobject met geavanceerd auditbeleid: Windows-instellingen >> beveiligingsinstellingen >> geavanceerde controlebeleid configuratie >> objecttoegang
    • daarna openen we het Controlebestandssysteem beleid en geven we aan dat we alleen succesvolle toegang gebeurtenissen tot bestandssysteem objecten willen registreren (Configureer de volgende controle gebeurtenissen >> succes)
      Hoe bij te houden wie bestand/map verwijderd heeft van windows server 2016 met controlebeleid
    • tenslotte slaan we de wijzigingen op en werk de lokale groepsbeleidsinstellingen bij met de onderstaande opdracht.
      gpupdate /force

Controleinstellingen voor verwijderde bestanden configureren op een gedeelde map

nu configureren we controle in de eigenschappen van de gedeelde netwerkmap waarnaar we toegang willen volgen.

1. Eerst draaien we File Explorer en openen de map eigenschappen. We gaan naar het tabblad Beveiliging en klik op de knop Geavanceerd. Dan gaan we naar het tabblad Auditing.

2. Als het bericht hieronder verschijnt, klikt u op de knop Doorgaan.

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

3. Vervolgens klikken we op de Toevoegen om de gebruiker of groep op te geven waarvoor we auditgebeurtenissen willen vastleggen. Als we toegangsgebeurtenissen voor alle gebruikers willen volgen, specificeren we wel de groep Iedereen.

4. Daarna specificeren we ook welke machtigingen gebruikt worden om toegang te krijgen tot het object. Als u alleen gebeurtenissen voor het verwijderen van bestanden wilt opslaan in het gebeurtenislogboek, klikt u op de knop Geavanceerde machtigingen weergeven. In de gebeurtenislijst laten we alleen controle over de gebeurtenissen voor het verwijderen van mappen en bestanden – verwijder en verwijder submappen en bestanden.

in het geval dat de gebruiker een bestand of map in de gedeelde netwerkmap verwijdert. Vervolgens verschijnt het bestandssysteem -> Audit Success file delete event in het beveiligingslogboek met Event ID 4663 van de Microsoft Windows security auditing source.

dan openen we de logboeken MMC-console (eventvwr.MSc), vouw de sectie Windows Logs -> beveiliging uit. Activeer gebeurtenislogfilter met EventID 4663.

daarna openen we alle resterende gebeurtenissen in de logboeken. We zien dat het informatie bevat over de naam van het verwijderde bestand, het account van de gebruiker die het bestand heeft verwijderd, en de procesnaam.

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

Na het inschakelen van bestands toegang controle beleid, kunnen we u de onderstaande details in het logboek:

  • Die verwijderde bestand in het gedeelde netwerk map en wanneer het gebeurd is
  • Welke toepassing (proces -) werd gebruikt voor het verwijderen van het bestand
  • Wat is de datum van de back-up worden teruggezet

het Schrijven van een Bestand Verwijderen Gebeurtenissen SQL-Database (MySQL/MSSQL)

Echter, zelfs als de controle van de verwijderde bestanden is ingeschakeld, kan het lastig zijn om iets te vinden in de logs. Ten eerste is het heel moeilijk om een specifieke vermelding te vinden tussen duizenden gebeurtenissen. Ten tweede, als een bestand lang geleden werd verwijderd, kan deze gebeurtenis afwezig zijn in de logs, omdat het werd overschreven door nieuwe gebeurtenissen.

We slaan alle gebeurtenissen voor het verwijderen van bestanden op in de SQL-database. Daarvoor gebruiken we Microsoft SQL Server, Elasticsearch of MySQL/MariaDB databases om de gebeurtenissen op te slaan.

bijvoorbeeld, laten we eens kijken hoe audit gebeurtenissen te loggen in een aparte database tabel op MySQL. We kunnen het volgende tabelformaat gebruiken:

  • Server naam
  • Naam van het verwijderde bestand
  • Datum en tijd
  • Naam van de gebruiker die het bestand verwijderd

MySQL-query maken in deze tabel ziet eruit als hieronder:

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

Om gebeurtenissen met EventID 4663 vanuit het logboek voor de huidige dag maken we gebruik van de volgende PowerShell script:

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

De volgende PowerShell script zal schrijven de gegevens die we krijgen met de MySQL database op een externe server (met het IP-adres 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()

Na het opslaan van de gebeurtenissen naar een externe database, kunnen we deze Gebeurtenis log boek.

nu, om erachter te komen wie het bestand “AnnualReport” heeft verwijderd.DOC”, draaien we het onderstaande script in de PowerShell console.

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

eindelijk, nu, zien we de gebruikersnaam en de tijd dat het bestand werd verwijderd in de PS console.

Logging bestand auditgebeurtenissen verwijderen naar een tekstbestand

als we geen aparte databaseserver willen gebruiken, slaan we auditgebeurtenissen voor het verwijderen van bestanden op in een logbestand met platte tekst. Hiervoor gebruiken we dit PowerShell script om de uitvoer op te slaan in een tekstbestand:

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.