Come configurare le policy di controllo e l'auditing sulle cartelle condivise per registrare chi crea, modifica, elimina o rinomina i file, e come trasformare il registro di sicurezza in un report HTML interattivo

Obiettivo: registrare sul file server chi ha creato, modificato, eliminato o rinominato un file e quando, usando l'auditing integrato in Windows Server, senza installare software di terze parti.

La guida mostra come abilitare le policy di controllo tramite GPO, impostare l'auditing sulle cartelle da monitorare, leggere gli eventi nel Visualizzatore eventi e analizzarli con lo script PowerShell Analizza-Evtx.ps1, che genera un report HTML con ricerca, filtri e grafico temporale.

Indice

1. Come funziona l'auditing dei file

L'auditing dei file funziona su due livelli, entrambi necessari:

  • le policy di controllo (criteri di controllo avanzati) indicano a Windows quali categorie di eventi registrare, ad esempio gli accessi al file system;
  • la SACL (System Access Control List) di una cartella indica quali utenti e quali operazioni controllare su quella cartella e sul suo contenuto.

Se manca uno dei due livelli nel registro di sicurezza non compare nulla: la policy da sola non registra accessi finché sulla cartella non è presente una voce di controllo, e la voce di controllo viene ignorata se la policy è disattivata.

ℹ️ Dove si configura

Le impostazioni vanno applicate al file server che ospita le cartelle condivise, non ai client: gli eventi vengono scritti nel registro di sicurezza del server su cui risiedono i file.

2. Abilitare le policy di controllo

Apri Gestione Criteri di gruppo e modifica una GPO collegata all'unità organizzativa che contiene il file server (su un server non in dominio usa secpol.msc). Il percorso è:

Configurazione computer > Criteri > Impostazioni di Windows > Impostazioni sicurezza > Configurazione avanzata dei criteri di controllo > Criteri di controllo > Accesso agli oggetti

Abilita le seguenti sottocategorie con Esito positivo ed Esito negativo:

SottocategoriaSuccessoErroreCosa registra
Controlla File systemSìSìAccessi e modifiche a file e cartelle con una voce di controllo (eventi 4656, 4660, 4663, 4670)
Controlla Condivisione fileSìSìAccessi alle condivisioni di rete (evento 5140)
Controlla condivisione file dettagliataSìSìOgni accesso a file e cartelle tramite condivisione (evento 5145)
Controlla Altri eventi di accesso agli oggettiSìSìAltri eventi di accesso agli oggetti, ad esempio attività pianificate e oggetti COM+

Le più importanti sono le prime due. Controlla File system è indispensabile anche per lo script della sezione 6, perché genera gli eventi 4663 e 4660.

Editor Gestione Criteri di gruppo, Configurazione avanzata dei criteri di controllo, Accesso agli oggetti con le sottocategorie File system e Condivisione file abilitate
Figura 1 – Le sottocategorie di Accesso agli oggetti abilitate nella GPO

⚠️ Il volume degli eventi

Controlla condivisione file dettagliata registra un evento per ogni accesso a file e cartelle tramite rete: su un file server molto usato produce centinaia di migliaia di eventi al giorno (nell'esempio della Figura 3 il registro contiene oltre 1,6 milioni di eventi). Abilitala solo se ti serve e dimensiona il registro di sicurezza di conseguenza (sezione 4).

💡 Criteri avanzati e criteri legacy

Se nella stessa GPO sono configurati anche i criteri di controllo legacy (Criteri locali > Criteri di controllo), verifica in Opzioni di sicurezza che il criterio Controllo: imponi impostazioni sottocategorie dei criteri di controllo (Windows Vista o versione successiva) per sostituire le impostazioni di categoria sia attivato, così che prevalgano le sottocategorie avanzate.

Applica la GPO e verifica la configurazione sul file server da un prompt dei comandi con privilegi amministrativi:

Windows CMD
gpupdate /force
auditpol /get /category:"{6997984A-797A-11D9-BED3-505054503030}"

Il secondo comando mostra lo stato delle sottocategorie di Accesso agli oggetti: il GUID rende il comando indipendente dalla lingua del sistema operativo.

3. Configurare l'auditing sulle cartelle

Questa è la parte fondamentale. Apri le Proprietà della cartella da monitorare, ad esempio la cartella principale della condivisione, e segui questi passaggi:

  1. vai su Sicurezza > Avanzate > Controllo;
  2. clicca Aggiungi e poi Seleziona un'entità;
  3. inserisci il gruppo da controllare: Everyone per registrare le attività di tutti gli utenti, oppure un gruppo specifico;
  4. in Tipo seleziona Esito positivo e in Si applica a La cartella selezionata, le sottocartelle e i file;
  5. se necessario clicca Mostra autorizzazioni avanzate, seleziona le voci della tabella seguente e conferma con OK in tutte le finestre.
AutorizzazioneControlloOperazione registrata
Creazione file/Scrittura datiEsito positivoCreazione di file e modifica del contenuto
Creazione cartelle/Aggiunta datiEsito positivoCreazione di cartelle e aggiunta di dati ai file
Scrittura attributiEsito positivoModifica degli attributi (sola lettura, nascosto…)
Scrittura attributi estesiEsito positivoModifica degli attributi estesi
Elimina sottocartelle e fileEsito positivoEliminazione di elementi contenuti nella cartella
EliminaEsito positivoEliminazione e rinomina di file e cartelle
Cambia autorizzazioniEsito positivoModifica delle autorizzazioni NTFS
Diventa proprietarioEsito positivoCambio del proprietario

Se vuoi individuare anche i tentativi non autorizzati, imposta Tipo su Tutto: vengono registrati sia gli esiti positivi sia quelli negativi.

Proprietà della cartella, Impostazioni avanzate di sicurezza scheda Controllo e finestra Voci di controllo con entità Everyone, tipo Tutto e autorizzazioni avanzate
Figura 2 – Dalla scheda Sicurezza alla finestra Voci di controllo della cartella

Nell'esempio della Figura 2 la voce di controllo è impostata con Controllo completo e Tipo Tutto: registra ogni operazione, letture comprese, ed è la configurazione più completa ma anche quella che genera più eventi. Per tracciare solo le modifiche limita la selezione alle voci della tabella. L'opzione Applica queste impostazioni di controllo solo agli oggetti e/o contenitori all'interno di questo contenitore va lasciata disattivata, così il controllo si estende a tutte le sottocartelle.

In alternativa la stessa voce di controllo si può aggiungere con Windows PowerShell 5.1, eseguito come amministratore sul file server. Il diritto Write comprende Creazione file/Scrittura dati, Creazione cartelle/Aggiunta dati, Scrittura attributi e Scrittura attributi estesi; ChangePermissions e TakeOwnership corrispondono a Cambia autorizzazioni e Diventa proprietario:

PowerShell
$cartella = "D:\Condivisioni\Dati"

# Everyone indicato tramite SID, indipendente dalla lingua del sistema
$everyone = New-Object System.Security.Principal.SecurityIdentifier("S-1-1-0")
$diritti  = "Write, Delete, DeleteSubdirectoriesAndFiles, ChangePermissions, TakeOwnership"

$regola = New-Object System.Security.AccessControl.FileSystemAuditRule(
    $everyone, $diritti, "ContainerInherit, ObjectInherit", "None", "Success")

# Legge e riscrive solo la sezione di controllo (SACL), senza toccare le autorizzazioni
$dir = Get-Item -LiteralPath $cartella
$acl = $dir.GetAccessControl([System.Security.AccessControl.AccessControlSections]::Audit)
$acl.AddAuditRule($regola)
$dir.SetAccessControl($acl)

# Verifica
(Get-Acl -LiteralPath $cartella -Audit).Audit |
    Format-Table IdentityReference, FileSystemRights, AuditFlags, InheritanceFlags

4. Leggere gli eventi nel registro di sicurezza

Gli eventi vengono scritti nel registro Sicurezza: apri Visualizzatore eventi > Registri di Windows > Sicurezza (eventvwr.msc). Gli ID evento principali sono:

ID eventoDescrizione
4656Richiesta di handle a un oggetto
4663Accesso effettivo a un oggetto (file o cartella)
4660Eliminazione di un oggetto
4670Modifica delle autorizzazioni di un oggetto
5140Accesso a una condivisione di rete
5145Controllo dettagliato dell'accesso a una condivisione

L'evento da monitorare principalmente è il 4663: permette di ricostruire le operazioni eseguite sui file perché riporta l'utente (Nome account e Dominio account), il percorso completo (Nome oggetto), il processo e la maschera di accesso, che indica il tipo di operazione. Il 4660 segnala un'eliminazione ma non contiene il percorso: va collegato al 4663 che lo precede tramite l'ID handle. Lo script della sezione 6 esegue questa correlazione in automatico.

Visualizzatore eventi, registro Sicurezza con il dettaglio di un evento 5145 Detailed File Share
Figura 3 – Un evento 5145 nel registro Sicurezza: accesso a un file tramite condivisione

Per limitare la visualizzazione usa Filtra registro corrente nel riquadro Azioni e indica gli ID, ad esempio 4663,4660. Da PowerShell:

PowerShell
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4663, 4660 } -MaxEvents 50 |
    Select-Object TimeCreated, Id, Message | Format-List

Dimensione del registro di sicurezza

Con l'auditing attivo il registro si riempie velocemente e, con l'impostazione predefinita Sovrascrivi eventi se necessario, gli eventi più vecchi vengono persi. Aumenta la dimensione massima (es. 4 GB) dalle Proprietà del registro oppure da riga di comando:

Windows CMD
wevtutil sl Security /ms:4294967296

Sui server in dominio è preferibile impostare la dimensione dalla GPO, nella sezione Registro eventi delle Impostazioni sicurezza.

💡 Conservare lo storico

Nelle Proprietà del registro puoi scegliere Archivia il registro quando è pieno, non sovrascrivere gli eventi: Windows salva il registro pieno in un file Archive-Security-.evtx nella cartella C:\Windows\System32\winevt\Logs e ne apre uno nuovo. I file archiviati possono essere analizzati con lo script, ma vanno spostati o eliminati periodicamente per non esaurire lo spazio su disco.

5. Esportare il registro in un file .evtx

Per analizzare gli eventi su un altro computer, o per conservarli, esporta il registro: clic destro su Sicurezza > Salva tutti gli eventi con nome… e scegli il formato File eventi (.evtx).

Menu contestuale del registro Sicurezza nel Visualizzatore eventi con la voce Salva tutti gli eventi con nome
Figura 4 – Esportazione del registro Sicurezza

Da riga di comando puoi esportare solo gli eventi utili allo script, ottenendo un file molto più piccolo:

Windows CMD
wevtutil epl Security C:\Temp\audit-file.evtx /q:"*[System[(EventID=4663 or EventID=4660)]]"

6. Analizzare gli eventi con lo script Analizza-Evtx.ps1

Consultare migliaia di eventi 4663 nel Visualizzatore eventi è poco pratico. Lo script Analizza-Evtx.ps1 legge gli eventi 4663 e 4660 da un file .evtx o direttamente dal registro di sicurezza del server, li classifica per tipo di operazione e genera un report HTML autonomo, consultabile con qualsiasi browser e senza dipendenze esterne. In particolare lo script:

  • classifica ogni operazione in base alla maschera di accesso (tabella seguente);
  • collega gli eventi 4660 (eliminazione) al percorso del file tramite l'ID handle;
  • raggruppa in una sola riga gli eventi identici (stesso utente, percorso, azione e processo) nello stesso minuto, indicandone il numero;
  • esclude per impostazione predefinita le letture di metadati e permessi, che rappresentano gran parte del volume ma raramente sono utili.
Azione nel reportMaschera di accessoNote
Eliminazione / rinomina0x10000 DELETEAnche rinomina e spostamento generano un'eliminazione sul vecchio nome
Scrittura / modifica0x2 WriteData, 0x4 AppendDataCreazione o modifica del contenuto
Modifica attributi0x100 WriteAttributes, 0x10 WriteEA
Modifica permessi0x40000 WRITE_DAC, 0x80000 WRITE_OWNER
Esecuzione0x20 Execute
Lettura0x1 ReadDataEsclusa con -EscludiLetture
Lettura metadati0x80, 0x8, 0x20000Inclusa solo con -IncludiMetadati
Eliminazione (4660)Evento 4660Percorso ricavato dal 4663 con lo stesso ID handle

Se una maschera contiene più diritti, prevale il primo nell'ordine della tabella. Prerequisiti:

  • Windows PowerShell 5.1 oppure PowerShell 7 su Windows;
  • per leggere il registro di sicurezza attivo, una sessione PowerShell avviata come amministratore;
  • per analizzare un file .evtx esportato bastano i permessi di lettura sul file: l'analisi può essere eseguita anche su un PC diverso dal server.

Avvio e selezione del log

Salva lo script in una cartella, ad esempio C:\Script (il download è in fondo alla sezione), apri PowerShell come amministratore e avvialo:

PowerShell
cd C:\Script
.\Analizza-Evtx.ps1 -ApriReport

Senza il parametro -PercorsoEvtx si apre una finestra in cui scegliere la sorgente degli eventi:

  • Log di sicurezza attuale di questo server: il registro attivo C:\Windows\System32\winevt\Logs\Security.evtx. Il file è bloccato dal servizio Registro eventi, quindi lo script lo legge tramite il canale Security: per questo servono i privilegi di amministratore;
  • File .evtx selezionato manualmente: un registro esportato (sezione 5) o archiviato, da scegliere con Sfoglia….
Finestra dello script Analizza-Evtx.ps1 per scegliere tra il log di sicurezza attuale e un file evtx selezionato manualmente
Figura 5 – La finestra di selezione del log di sicurezza

Durante l'analisi la console mostra l'avanzamento ogni 100.000 eventi; al termine riporta il percorso del report e il riepilogo delle operazioni per tipo. Con -ApriReport il report si apre nel browser predefinito. I parametri disponibili sono:

ParametroDescrizione
-PercorsoEvtxFile .evtx da analizzare; se indicato, la finestra di selezione non viene mostrata
-PercorsoReportPercorso del report HTML (predefinito .\Report_FileAudit.html)
-EscludiLettureEsclude le letture dei dati e lascia solo le modifiche
-IncludiMetadatiInclude le letture di attributi e permessi
-ApriReportApre il report nel browser al termine
PowerShell
# Analisi di un file esportato, senza finestra di selezione
.\Analizza-Evtx.ps1 -PercorsoEvtx C:\Temp\audit-file.evtx -ApriReport

# Solo scritture, eliminazioni e modifiche, con un report dal nome personalizzato
.\Analizza-Evtx.ps1 -EscludiLetture -PercorsoReport .\Report_Modifiche.html

⚠️ Criteri di esecuzione

Se PowerShell blocca lo script perché scaricato da Internet, sbloccalo con Unblock-File .\Analizza-Evtx.ps1 oppure consenti l'esecuzione per la sola sessione corrente con Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass.

Il report HTML

Il report è un unico file HTML che contiene dati, grafico e codice: si può archiviare, inviare via email o aprire su un altro computer.

Report HTML generato dallo script con indicatori, filtri, grafico delle operazioni nel tempo e tabella degli accessi ai file
Figura 6 – Il report HTML con indicatori, filtri, grafico temporale e dettaglio delle operazioni
  • indicatori in alto: operazioni totali, file coinvolti, utenti, scritture/modifiche ed eliminazioni/rinomine, aggiornati in base ai filtri;
  • ricerca libera su percorso, utente e processo, ad esempio .pdf o il nome di una cartella;
  • filtri per utente, tipo di azione e intervallo di date;
  • grafico temporale per ora o per giorno: un clic su una barra filtra quel periodo;
  • tabella ordinabile cliccando sull'intestazione delle colonne, con 100 righe per pagina;
  • Esporta CSV delle righe filtrate, con separatore punto e virgola, apribile direttamente in Excel.

💡 Chi ha eliminato quel file?

Seleziona come azione Eliminazione / rinomina e cerca il nome del file o della cartella: ottieni l'utente, la data e l'ora dell'operazione. Nella colonna Processo il valore Rete (SMB) indica un'operazione eseguita tramite la condivisione; in caso contrario compare il processo locale, ad esempio explorer.exe.

Download dello script

📦 Analizza-Evtx.zip

L'archivio contiene lo script Analizza-Evtx.ps1. Estrailo in una cartella del server o del PC su cui eseguire l'analisi, ad esempio C:\Script.

Scarica Analizza-Evtx.zip

Dopo l'estrazione sblocca il file, che Windows segnala come scaricato da Internet, ed esegui lo script come descritto in Avvio e selezione del log:

PowerShell
Unblock-File C:\Script\Analizza-Evtx.ps1
PassaggioDoveSezione
Abilitare le sottocategorie di Accesso agli oggettiGPO > Configurazione avanzata dei criteri di controlloVai
Aggiungere la voce di controllo sulla cartellaProprietà > Sicurezza > Avanzate > ControlloVai
Aumentare la dimensione del registrowevtutil sl Security /ms:Vai
Esportare gli eventiVisualizzatore eventi o wevtutil eplVai
Generare il report.\Analizza-Evtx.ps1Vai

Problemi frequenti

SituazioneCausa probabileCosa fare
Nessun evento 4663 nel registroManca la policy di controllo o la voce di controllo sulla cartellaVerifica con auditpol (sezione 2) e la scheda Controllo (sezione 3)
auditpol riporta Nessun controllo dopo gpupdateGPO non applicata al server o sovrascritta dai criteri legacyControlla con gpresult /h report.html e il criterio imponi impostazioni sottocategorie
Mancano gli eventi più vecchiRegistro pieno e sovrascrittoAumenta la dimensione o archivia il registro (sezione 4)
Lo script chiede una sessione avviata come amministratoreLettura del log attivo senza privilegi elevatiAvvia PowerShell come amministratore oppure analizza un file esportato
Errore La finestra di selezione richiede una sessione STAPowerShell avviato in modalità MTAUsa powershell.exe -STA -File .\Analizza-Evtx.ps1 oppure indica -PercorsoEvtx
Nessun evento 4663/4660 corrispondente ai filtriIl file non contiene eventi di file system o solo letture di metadatiVerifica la configurazione e prova con -IncludiMetadati
Nel report compare (percorso non risolto)Il 4663 con lo stesso ID handle non è nel file, ad esempio perché sovrascrittoComportamento atteso: l'eliminazione è registrata ma il percorso non è ricostruibile

Allegati

Leave A Comment

Allegati