még mindig nem tudja, hogyan lehet nyomon követni, hogy ki törölte a fájlt/mappát a Windows server 2016-ból ellenőrzési házirenddel? Vessen egy pillantást erre a blogra.
itt, a Bobcares-nél számos ilyen Windowshoz kapcsolódó hibát tapasztaltunk a Webtárhelyeknek és online szolgáltatóknak nyújtott Szerverkezelési szolgáltatásaink részeként.
ma meglátjuk, hogyan kell nyomon követni a törölt fájl / mappa Windows.
- hogyan lehet nyomon követni, hogy ki törölte a fájlt/mappát a Windows Server 2016-ból ellenőrzési házirenddel
- fájl-és Mappaelérés-naplózási házirend engedélyezése Windows rendszeren
- a fájl törölt ellenőrzési beállításainak konfigurálása egy megosztott mappában
- Hogyan írhatunk Fájl törlési eseményeket az SQL adatbázisba (MySQL/MSSQL)
- naplózási Fájl ellenőrzési események törlése szöveges fájlba
hogyan lehet nyomon követni, hogy ki törölte a fájlt/mappát a Windows Server 2016-ból ellenőrzési házirenddel
most nézzük meg, hogy Támogatási mérnökeink hogyan találják meg, ki törölte a fájlt/mappát a szerverről.
a fájlrendszer objektum-hozzáférési eseménynaplóját használjuk egy adott felhasználó azonosítására, aki létrehozott, törölt vagy módosított egy adott fájlt.
most meglátjuk, hogyan konfigurálhatjuk az eseménynaplózást a megosztott hálózati mappában lévő fájlokhoz A Windows Server 2016 rendszeren. A naplózás konfigurálása után az Eseménynaplóból származó információkat arra használjuk, hogy megtaláljuk azt a felhasználót, aki törölt egy adott fájlt a fájlkiszolgálón.
ha azonban egy megosztott hálózati mappából törölünk egy fájlt, akkor az azonnal törlődik, ahelyett, hogy elküldenénk a felhasználó lomtárába.
fájl-és Mappaelérés-naplózási házirend engedélyezése Windows rendszeren
alapértelmezés szerint a fájlrendszer-Objektumelérés-ellenőrzés nem lesz engedélyezve A Windows Server rendszeren. A csoportházirend használatával engedélyezhetjük és konfigurálhatjuk az ellenőrzési beállításokat. Az alábbi lépéseket követjük az auditálás konfigurálásához egy kiszolgálón a helyi csoportházirend-szerkesztő segítségével.
-
- először megnyitjuk a helyi csoportházirend-szerkesztő konzolt-gpedit.msc
- ezután a GPO szakaszhoz megyünk a fejlett ellenőrzési házirendekkel: Windows Settings >> Security Settings >> Advanced Audit Policy Configuration >> Object Access
- ezt követően megnyitjuk az Audit fájlrendszer-házirendet, és megadjuk, hogy csak a sikeres hozzáférési eseményeket szeretnénk naplózni a fájlrendszer-objektumokba (konfiguráljuk a következő audit eseményeket >> siker)
- végül mentjük a módosításokat, és frissítjük a helyi csoportházirend-beállításokat az alábbi paranccsal.
gpupdate /force
a fájl törölt ellenőrzési beállításainak konfigurálása egy megosztott mappában
most konfiguráljuk a naplózást annak a hálózati megosztási mappának a tulajdonságaiban, amelyhez nyomon akarjuk követni a hozzáférést.
1. Először futtatjuk a File Explorer programot, és megnyitjuk a mappa tulajdonságait. Lépjen a Biztonság fülre, majd kattintson a Speciális gombra. Ezután megyünk az auditálás fülre.
2. Ha megjelenik az alábbi üzenet, kattintson a Folytatás gombra.
You must be an administrator or have been given the appropriate privileges to view the audit properties of this object
3. Ezután a Hozzáadás gombra kattintva adjuk meg azt a felhasználót vagy csoportot, amelyhez naplózási eseményeket szeretnénk rögzíteni. Ha minden felhasználó számára nyomon akarjuk követni a hozzáférési eseményeket, akkor megadjuk a mindenki csoportot.
4. Ezt követően azt is megadjuk, hogy az objektum eléréséhez használt engedélyeket naplózni kell. Ha csak fájl törlési eseményeket szeretne menteni az Eseménynaplóban, kattintson a speciális engedélyek megjelenítése gombra. Az eseménylistában a naplózást csak a mappa és a fájl törlési eseményekre hagyjuk – az almappák és fájlok törlése és törlése.
abban az esetben, ha a felhasználó töröl egy fájlt vagy mappát a megosztott hálózati mappában. Ezután a fájlrendszer -> a sikeres naplófájl törlése esemény megjelenik a biztonsági naplóban a Microsoft Windows biztonsági naplózási forrásának 4663 Eseményazonosítójával.
ezután megnyitjuk az Event Viewer MMC konzolt (eventvwr.MSC), bontsa ki a Windows naplók -> Biztonság részt. Engedélyezze az Eseménynapló szűrőt az EventID 4663 segítségével.
ezt követően megnyitjuk a fennmaradó eseményeket az Eseménynaplóban. Látjuk, hogy információkat tartalmaz a törölt fájl nevéről, a fájlt törölt felhasználó fiókjáról, valamint a folyamat nevéről.
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
a fájlhozzáférés-ellenőrzési házirend engedélyezése után az alábbi részleteket a biztonsági naplóban találhatjuk meg:
- ki törölte a fájlt a megosztott hálózati mappából, és mikor történt
- milyen alkalmazást (folyamatot) használtak a fájl törléséhez
- mi a visszaállítandó biztonsági mentés dátuma
Hogyan írhatunk Fájl törlési eseményeket az SQL adatbázisba (MySQL/MSSQL)
azonban még akkor is, ha a törölt fájlok ellenőrzése engedélyezve van, nehéz lehet találni valamit a naplók. Először is, elég nehéz konkrét bejegyzést találni több ezer esemény között. Másodszor, ha egy fájlt régen töröltek, akkor ez az esemény hiányozhat a naplókban, mivel új események felülírták.
az összes fájl törlési eseményt az SQL adatbázisba mentjük. Ehhez Microsoft SQL Server, Elasticsearch vagy MySQL/MariaDB adatbázisokat használunk az események tárolására.
lássuk például, hogyan lehet naplózni az ellenőrzési eseményeket egy külön adatbázis táblába a MySQL-en. A következő táblázat formátumot használhatjuk:
- kiszolgáló neve
- a törölt fájl neve
- dátum és idő
- annak a Felhasználónak a neve, aki törölte a fájlt
a táblázat létrehozásához szükséges MySQL lekérdezés az alábbiak szerint néz ki:
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));
az EventID 4663-mal kapcsolatos események lekéréséhez az aktuális nap biztonsági naplójából a következő PowerShell parancsfájlt használjuk:
$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}}
a következő PowerShell szkript a MySQL adatbázisba érkező adatokat egy távoli kiszolgálón írja (az IP-címmel 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()
az események külső adatbázisba történő mentése után törölhetjük ezt az Eseménynaplót.
most, hogy megtudja, ki törölte a fájlt ” AnnualReport.DOC”, az alábbi szkriptet futtatjuk a PowerShell konzolban.
$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()
végül most látjuk a felhasználónevet és a fájl törlésének idejét a PS konzolban.
naplózási Fájl ellenőrzési események törlése szöveges fájlba
ha nem akarunk külön adatbázis-kiszolgálót használni, akkor a fájl törlési ellenőrzési eseményeket egy egyszerű szöveges naplófájlba mentjük. Ehhez ezt a PowerShell szkriptet használjuk a kimenet szöveges fájlba mentésére:
$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}}