a fájlrendszer-objektum-hozzáférési eseménynaplózással azonosíthat egy adott fájlt létrehozó, törölt vagy módosított felhasználót. Ebben a cikkben bemutatjuk, hogyan konfigurálhatja 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ók segítségével megkeresheti azt a felhasználót, aki törölte az adott fájlt a fájlkiszolgálón.
hogyan engedélyezhető a fájl – és Mappaelérési naplózási házirend Windows rendszeren?
alapértelmezés szerint a fájlrendszer-objektum-hozzáférés-ellenőrzés nincs engedélyezve A Windows Server rendszeren. A csoportházirend használatával engedélyezheti és konfigurálhatja az ellenőrzési beállításokat. Ha több kiszolgálón vagy számítógépen engedélyeznie kell a naplózási házirendeket, használhatja a tartományi csoportházirend-objektumokat (a gpmc.msc
mmc konzol segítségével konfigurálható). Ha csak egy kiszolgálón szeretné konfigurálni a naplózást, használhatja a helyi csoportházirend-szerkesztőt.
- nyissa meg a helyi csoportházirend-szerkesztő konzolt–
gpedit.msc
; - lépjen a csoportházirend-csoportházirend szakaszra a speciális ellenőrzési házirendekkel: Windows beállítások – > Biztonsági beállítások – > speciális ellenőrzési házirend-konfiguráció – > objektum-hozzáférés;
- nyissa meg az ellenőrzési fájlrendszer-házirendet, és adja meg, hogy csak a sikeres hozzáférési eseményeket szeretné naplózni a fájlrendszer-objektumokba (konfigurálja a következő ellenőrzési eseményeket – > siker);
a helyi objektumokhoz való hozzáférés naplózását a Windows beállítások -> Biztonsági beállítások -> Helyi házirend -> ellenőrzési házirend alatt található Objektumhozzáférési házirend használatával is engedélyezheti. A fájlrendszer-ellenőrzési házirend használata azonban előnyösebb, mivel csak az NTFS-hozzáférési eseményeket követi nyomon.
- mentse el a módosításokat, és frissítse a helyi csoportházirend-beállításokat a következő paranccsal:
gpupdate /force
.
Fájl törölt ellenőrzési beállításainak konfigurálása megosztott mappában
most a naplózást annak a hálózati megosztási mappának a tulajdonságaiban kell konfigurálnia, amelyhez a hozzáférést nyomon szeretné követni. Futtassa a File Explorer programot, és nyissa meg a mappa tulajdonságait. Menjen a Biztonság fülre. Kattintson a Speciális gombra – > lépjen a naplózás fülre.
ha megjelenik a “rendszergazdának kell lennie, vagy megfelelő jogosultságokat kapott az objektum ellenőrzési tulajdonságainak megtekintéséhez” üzenet, kattintson a Folytatás gombra.
Ezután kattintson a Hozzáadás gombra annak a felhasználónak vagy csoportnak a megadásához, amelyhez naplózási eseményeket szeretne rögzíteni. Ha az összes felhasználó hozzáférési eseményeit szeretné nyomon követni, adja meg a mindenki csoportot.
ezután meg kell adnia, 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 hagyja a naplózást csak a mappa-és fájltörlési eseményekre-az almappák és fájlok törlése.
$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
most, ha a felhasználó töröl egy fájlt vagy mappát a megosztott hálózati mappában, a fájlrendszer -> Audit Success file delete esemény megjelenik a biztonsági naplóban a 4663 eseményazonosítóval a Microsoft Windows biztonsági naplózási forrásból.
nyissa meg az Eseménynapló 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.
nyissa meg a fennmaradó események bármelyikét az Eseménynaplóban. Amint láthatja, 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 és a folyamat nevéről.
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
miután engedélyezte a fájlhozzáférés-ellenőrzési házirendet, megtalálható a biztonsági naplóban :
- 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 írhatok 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, problémás lehet valamit találni a naplókban. Először is, elég nehéz megtalálni egy adott bejegyzést több ezer esemény között (a Windows rendszerben nincs kényelmes eszköz egy esemény rugalmas szűrővel történő keresésére). 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 elmentheti az SQL adatbázisba. Az események tárolásához használhatja a Microsoft SQL Server, az Elasticsearch vagy a MySQL/MariaDB adatbázisokat.
ebben a példában megmutatjuk, hogyan kell naplózni a naplózási eseményeket egy külön adatbázis táblába egy MySQL-en. A következő táblázat formátumot fogom használni:
- szerver neve;
- a törölt fájl neve;
- dátum és idő;
- a fájlt törölt felhasználó neve.
a táblázat létrehozásához szükséges MySQL lekérdezés így 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));
Ha Microsoft SQL Server adatbázist szeretne használni, olvassa el a “hogyan futtathat MSSQL szerver lekérdezést a PowerShell – ből?”
az EventID 4663 használatával kapcsolatos események lekéréséhez az aktuális nap biztonsági naplójából a következő PowerShell parancsfájlt használhatja:
$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
}
}
a következő PowerShell parancsfájl a MySQL adatbázisba érkező adatokat egy távoli szerverre í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;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()