încă nu sunteți sigur cum să urmăriți cine a șters fișierul/folderul din windows server 2016 cu Politica de audit? Aruncati o privire la acest blog.
aici, la Bobcares, am văzut mai multe astfel de erori legate de Windows ca parte a serviciilor noastre de gestionare a serverului pentru gazdele web și furnizorii de servicii online.
astăzi vom vedea cum să urmăriți fișierul/folderul șters Windows.
- cum să urmăriți cine a șters fișierul/folderul din Windows Server 2016 cu Politica de Audit
- cum se activează Politica de audit a accesului la fișiere și foldere pe Windows
- configurarea setărilor de Audit șterse de fișiere într-un Folder partajat
- cum să scrieți evenimente de ștergere a fișierelor în baza de date SQL (MySQL/MSSQL)
- fișier de înregistrare ștergeți evenimentele de Audit într-un fișier Text
cum să urmăriți cine a șters fișierul/folderul din Windows Server 2016 cu Politica de Audit
acum, să aruncăm o privire la modul în care inginerii noștri de asistență găsesc cine a șters fișierul/folderul de pe server.
folosim auditul evenimentului de acces la obiecte din sistemul de fișiere pentru a identifica un anumit utilizator care a creat, șters sau modificat un anumit fișier.
vom vedea acum cum să configurați auditul evenimentelor pentru fișierele dintr-un folder de rețea partajat pe Windows Server 2016. După configurarea auditului, folosim informațiile din Vizualizatorul de evenimente pentru a găsi utilizatorul care a șters un anumit fișier de pe serverul de fișiere.
cu toate acestea, atunci când ștergem un fișier dintr-un folder de rețea partajat, acesta este șters imediat în loc să fie trimis în coșul de reciclare al utilizatorului.
cum se activează Politica de audit a accesului la fișiere și foldere pe Windows
în mod implicit, auditul de acces la obiectele sistemului de fișiere nu va fi activat pe Windows Server. Putem activa și configura setările de audit folosind Politica de grup. Iată pașii pe care îi urmăm pentru a configura auditarea pe un server utilizând editorul de Politici de grup Local.
-
- mai întâi, deschidem consola editorului de Politici de grup Local – gpedit.msc
- apoi, mergem la secțiunea GPO cu politici avansate de audit: Setări Windows >> Setări de securitate >> Configurare avansată a Politicii de Audit >> acces obiect
- după aceea, deschidem Politica sistemului de fișiere de Audit și specificăm că dorim să înregistrăm numai evenimente de acces de succes la obiectele sistemului de fișiere (Configurați următoarele evenimente de audit >> succes)
- în cele din urmă, salvăm modificările și actualizăm setările politicii de grup local folosind comanda de mai jos.
gpupdate /force
configurarea setărilor de Audit șterse de fișiere într-un Folder partajat
acum configurăm auditarea în proprietățile folderului de rețea partajată la care dorim să urmărim accesul.
1. Mai întâi, rulăm File Explorer și deschidem proprietățile folderului. Mergem la fila Securitate și facem clic pe butonul Advanced. Apoi mergem la fila audit.
2. Dacă apare mesajul de mai jos, faceți clic pe butonul Continuare.
You must be an administrator or have been given the appropriate privileges to view the audit properties of this object
3. Apoi facem clic pe butonul Adăugare pentru a specifica utilizatorul sau grupul pentru care dorim să surprindem evenimente de audit. Dacă dorim să urmărim evenimentele de acces pentru toți utilizatorii, specificăm grupul toată lumea.
4. După aceea, specificăm, de asemenea, ce permisiuni utilizate pentru a accesa obiectul ar trebui să fie înregistrate. Pentru a salva numai evenimentele de ștergere a fișierelor în Jurnalul de evenimente, facem clic pe butonul Afișare permisiuni avansate. În lista de evenimente, lăsăm auditul numai pentru evenimentele de ștergere a dosarelor și fișierelor – ștergeți și ștergeți subfolderele și fișierele.
în caz, utilizatorul șterge orice fișier sau folder din folderul de rețea partajat. Apoi, evenimentul File System -> Audit Success file delete apare în Jurnalul de securitate cu ID-ul evenimentului 4663 din sursa de audit de securitate Microsoft Windows.
apoi deschidem consola MMC Event Viewer (eventvwr.msc), extindeți secțiunea jurnale Windows – > securitate. Activați filtrul jurnal de evenimente de EventID 4663.
după aceea, deschidem oricare dintre evenimentele rămase în vizualizatorul de evenimente. Vedem că conține informații despre numele fișierului șters, contul utilizatorului care a șters fișierul și numele procesului.
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
După activarea politicii de audit a accesului la fișiere, putem găsi detaliile de mai jos în Jurnalul de securitate:
- cine a șters fișierul din folderul de rețea partajat și când s-a întâmplat
- ce aplicație (proces) a fost utilizată pentru a șterge fișierul
- care este data copiei de rezervă care trebuie restaurată
cum să scrieți evenimente de ștergere a fișierelor în baza de date SQL (MySQL/MSSQL)
cu toate acestea, chiar dacă auditul fișierelor șterse este activat, poate fi dificil să găsiți ceva în jurnalele. În primul rând, este destul de greu să găsești o intrare specifică printre mii de evenimente. În al doilea rând, dacă un fișier a fost șters cu mult timp în urmă, acest eveniment poate lipsi în jurnale, deoarece a fost suprascris de evenimente noi.
salvăm toate evenimentele de ștergere a fișierelor în baza de date SQL. Pentru aceasta, folosim baze de date Microsoft SQL Server, Elasticsearch sau MySQL/MariaDB pentru a stoca evenimentele.
de exemplu, să vedem cum să înregistrăm evenimentele de audit într-un tabel de baze de date separat pe MySQL. Putem folosi următorul format de tabel:
- numele serverului
- numele fișierului șters
- Data și ora
- numele utilizatorului care a șters fișierul
interogarea MySQL pentru a crea acest tabel arată mai jos:
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));
pentru a obține evenimente cu EventID 4663 din Jurnalul de securitate pentru ziua curentă, folosim următorul script PowerShell:
$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}}
următorul script PowerShell va scrie datele pe care le primim în baza de date MySQL pe un server de la distanță (cu adresa IP 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()
după salvarea evenimentelor într-o bază de date externă, putem șterge acest jurnal de evenimente.
acum, pentru a afla cine a șters fișierul „AnnualReport.DOC”, rulăm scriptul de mai jos în consola PowerShell.
$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()
în cele din urmă, acum, vedem numele de utilizator și momentul în care fișierul a fost șters în consola PS.
fișier de înregistrare ștergeți evenimentele de Audit într-un fișier Text
dacă nu dorim să folosim un server de baze de date separat, salvăm evenimentele de audit pentru ștergerea fișierelor într-un fișier jurnal text simplu. Pentru aceasta, folosim acest script PowerShell pentru a salva ieșirea într-un fișier text:
$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}}