du kan bruge hændelsesrevision til filsystemobjektadgang til at identificere en bestemt bruger, der oprettede, slettede eller ændrede en bestemt fil. I denne artikel viser vi dig, hvordan du konfigurerer hændelsesrevision for filer i en delt netværksmappe på Server 2016. Efter konfiguration af revision kan du bruge oplysningerne fra Begivenhedsviseren til at finde den bruger, der slettede en bestemt fil på filserveren.
Sådan aktiveres fil og mappe adgang revision politik på vinduer?
som standard er filsystemobjektadgangsrevision ikke aktiveret på serveren. Du kan aktivere og konfigurere revisionsindstillinger ved hjælp af Gruppepolitik. Hvis du har brug for at aktivere revisionspolitikker på flere servere eller computere, kan du bruge domæne-Gpo ‘ er (konfigurerbar ved hjælp af mmc-konsollen gpmc.msc
). Hvis du kun vil konfigurere revision på en server, kan du bruge Local Group Policy Editor.
- Åbn den lokale Gruppepolitikredaktørkonsol–
gpedit.msc
; - gå til GPO-sektionen med avancerede revisionspolitikker: vinduer indstillinger -> sikkerhedsindstillinger- > konfiguration af avanceret revisionspolitik – > Objektadgang;
- Åbn politikken for Revisionsfilsystem, og angiv, at du kun vil logge vellykkede adgangshændelser til filsystemobjekter (Konfigurer følgende revisionshændelser – > succes);
du kan også aktivere adgang til overvågning af lokale objekter ved hjælp af politikken for adgang til Revisionsobjekter under vinduer indstillinger -> sikkerhedsindstillinger -> lokal politik -> revisionspolitik. Brug af Filsystemrevisionspolitikken foretrækkes dog, fordi den kun sporer NTFS-adgangshændelser.
- gem ændringerne og opdatere din lokale gruppe politiske indstillinger ved hjælp af kommandoen:
gpupdate /force
.
konfiguration af Fil slettet Revisionsindstillinger på en delt mappe
nu skal du konfigurere revision i egenskaberne for den delingsnetværksmappe, du vil spore adgang til. Kør Stifinder og åbne mappen egenskaber. Gå til fanen Sikkerhed. Klik på knappen Avanceret – > gå til fanen revision.
hvis meddelelsen “du skal være administrator eller har fået de relevante privilegier for at se revisionsegenskaberne for dette objekt” vises, skal du klikke på knappen Fortsæt.
klik derefter på knappen Tilføj for at angive den bruger eller gruppe, som du vil fange revisionshændelser for. Hvis du vil spore access-begivenheder for alle brugere, skal du angive Gruppen alle.
derefter skal du angive, hvilke tilladelser der bruges til at få adgang til objektet, der skal logges. Hvis du kun vil gemme filsletningshændelser i hændelsesloggen, skal du klikke på knappen Vis avancerede tilladelser. I hændelseslisten skal du kun forlade revision for mappe – og filsletningshændelser-slet og Slet undermapper og filer.
$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
nu, hvis brugeren sletter en fil eller mappe i den delte netværksmappe, vises filsystemet -> Audit Success file delete event i Sikkerhedsloggen med Event ID 4663 fra Microsoft-vinduet sikkerhedsrevisionskilde.
Åbn hændelsesviseren mmc-konsol (eventvwr.msc
), Udvid vinduet Logs – > sikkerhed sektion. Aktiver hændelseslogfilteret ved hjælp af EventID 4663.
Åbn en af de resterende begivenheder i Begivenhedsviseren. Som du kan se, indeholder den oplysninger om navnet på den slettede fil, kontoen for den bruger, der slettede filen og procesnavnet.
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
når du har aktiveret filadgangsrevisionspolitik, kan du finde i Sikkerhedsloggen :
- hvem slettede filen fra den delte netværksmappe, og hvornår den skete;
- hvilken applikation (proces) blev brugt til at slette filen;
- Hvad er datoen for sikkerhedskopien, der skal gendannes.
hvordan man skriver fil sletning begivenheder til ?
men selvom revisionen af de slettede filer er aktiveret, kan det være besværligt at finde noget i logfilerne. For det første er det ret svært at finde en bestemt post blandt tusindvis af begivenheder (i vinduer er der ikke noget praktisk værktøj til at søge en begivenhed med et fleksibelt filter). For det andet, hvis en fil blev slettet for længe siden, kan denne begivenhed være fraværende i logfilerne, da den blev overskrevet af nye begivenheder.
du kan gemme alle filslette begivenheder i databasen. Du kan bruge Microsoft Server, Elasticsearch eller MariaDB databaser til at gemme dine begivenheder.
i dette eksempel viser vi dig, hvordan du logger audithændelser til en separat databasetabel på en Myskl. Jeg vil bruge følgende tabelformat:
- servernavn;
- navnet på den slettede fil;
- Dato og klokkeslæt;
- navnet på den bruger, der har slettet filen.
forespørgslen til at oprette denne tabel ser sådan ud:
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));
hvis du vil bruge Microsoft Server database, tjek artiklen ” Sådan kører du en MSSKL Server forespørgsel fra
for at hente begivenheder med EventID 4663 fra Sikkerhedsloggen for den aktuelle dag kan du bruge følgende:
$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
}
}
det næste script vil skrive de data, du får i databasen på en ekstern server (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;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()