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
- 2. Abilitare le policy di controllo
- 3. Configurare l'auditing sulle cartelle
- 4. Leggere gli eventi nel registro di sicurezza
- 5. Esportare il registro in un file .evtx
- 6. Analizzare gli eventi con lo script Analizza-Evtx.ps1
- 7. Riepilogo e risoluzione dei problemi
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:
| Sottocategoria | Successo | Errore | Cosa registra |
|---|---|---|---|
| Controlla File system | Sì | Sì | Accessi e modifiche a file e cartelle con una voce di controllo (eventi 4656, 4660, 4663, 4670) |
| Controlla Condivisione file | Sì | Sì | Accessi alle condivisioni di rete (evento 5140) |
| Controlla condivisione file dettagliata | Sì | Sì | Ogni accesso a file e cartelle tramite condivisione (evento 5145) |
| Controlla Altri eventi di accesso agli oggetti | Sì | 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.

⚠️ 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:
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:
- vai su Sicurezza > Avanzate > Controllo;
- clicca Aggiungi e poi Seleziona un'entità;
- inserisci il gruppo da controllare: Everyone per registrare le attività di tutti gli utenti, oppure un gruppo specifico;
- in Tipo seleziona Esito positivo e in Si applica a La cartella selezionata, le sottocartelle e i file;
- se necessario clicca Mostra autorizzazioni avanzate, seleziona le voci della tabella seguente e conferma con OK in tutte le finestre.
| Autorizzazione | Controllo | Operazione registrata |
|---|---|---|
| Creazione file/Scrittura dati | Esito positivo | Creazione di file e modifica del contenuto |
| Creazione cartelle/Aggiunta dati | Esito positivo | Creazione di cartelle e aggiunta di dati ai file |
| Scrittura attributi | Esito positivo | Modifica degli attributi (sola lettura, nascosto…) |
| Scrittura attributi estesi | Esito positivo | Modifica degli attributi estesi |
| Elimina sottocartelle e file | Esito positivo | Eliminazione di elementi contenuti nella cartella |
| Elimina | Esito positivo | Eliminazione e rinomina di file e cartelle |
| Cambia autorizzazioni | Esito positivo | Modifica delle autorizzazioni NTFS |
| Diventa proprietario | Esito positivo | Cambio del proprietario |
Se vuoi individuare anche i tentativi non autorizzati, imposta Tipo su Tutto: vengono registrati sia gli esiti positivi sia quelli negativi.

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:
$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, InheritanceFlags4. 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 evento | Descrizione |
|---|---|
| 4656 | Richiesta di handle a un oggetto |
| 4663 | Accesso effettivo a un oggetto (file o cartella) |
| 4660 | Eliminazione di un oggetto |
| 4670 | Modifica delle autorizzazioni di un oggetto |
| 5140 | Accesso a una condivisione di rete |
| 5145 | Controllo 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.

Per limitare la visualizzazione usa Filtra registro corrente nel riquadro Azioni e indica gli ID, ad esempio 4663,4660. Da PowerShell:
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4663, 4660 } -MaxEvents 50 |
Select-Object TimeCreated, Id, Message | Format-ListDimensione 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:
wevtutil sl Security /ms:4294967296Sui 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).

Da riga di comando puoi esportare solo gli eventi utili allo script, ottenendo un file molto più piccolo:
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 report | Maschera di accesso | Note |
|---|---|---|
| Eliminazione / rinomina | 0x10000 DELETE | Anche rinomina e spostamento generano un'eliminazione sul vecchio nome |
| Scrittura / modifica | 0x2 WriteData, 0x4 AppendData | Creazione o modifica del contenuto |
| Modifica attributi | 0x100 WriteAttributes, 0x10 WriteEA | |
| Modifica permessi | 0x40000 WRITE_DAC, 0x80000 WRITE_OWNER | |
| Esecuzione | 0x20 Execute | |
| Lettura | 0x1 ReadData | Esclusa con -EscludiLetture |
| Lettura metadati | 0x80, 0x8, 0x20000 | Inclusa solo con -IncludiMetadati |
| Eliminazione (4660) | Evento 4660 | Percorso 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
.evtxesportato 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:
cd C:\Script
.\Analizza-Evtx.ps1 -ApriReportSenza 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….

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:
| Parametro | Descrizione |
|---|---|
-PercorsoEvtx | File .evtx da analizzare; se indicato, la finestra di selezione non viene mostrata |
-PercorsoReport | Percorso del report HTML (predefinito .\Report_FileAudit.html) |
-EscludiLetture | Esclude le letture dei dati e lascia solo le modifiche |
-IncludiMetadati | Include le letture di attributi e permessi |
-ApriReport | Apre il report nel browser al termine |
# 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.

- 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
.pdfo 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.
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:
Unblock-File C:\Script\Analizza-Evtx.ps17. Riepilogo e risoluzione dei problemi
| Passaggio | Dove | Sezione |
|---|---|---|
| Abilitare le sottocategorie di Accesso agli oggetti | GPO > Configurazione avanzata dei criteri di controllo | Vai |
| Aggiungere la voce di controllo sulla cartella | Proprietà > Sicurezza > Avanzate > Controllo | Vai |
| Aumentare la dimensione del registro | wevtutil sl Security /ms: | Vai |
| Esportare gli eventi | Visualizzatore eventi o wevtutil epl | Vai |
| Generare il report | .\Analizza-Evtx.ps1 | Vai |
Problemi frequenti
| Situazione | Causa probabile | Cosa fare |
|---|---|---|
| Nessun evento 4663 nel registro | Manca la policy di controllo o la voce di controllo sulla cartella | Verifica con auditpol (sezione 2) e la scheda Controllo (sezione 3) |
auditpol riporta Nessun controllo dopo gpupdate | GPO non applicata al server o sovrascritta dai criteri legacy | Controlla con gpresult /h report.html e il criterio imponi impostazioni sottocategorie |
| Mancano gli eventi più vecchi | Registro pieno e sovrascritto | Aumenta la dimensione o archivia il registro (sezione 4) |
| Lo script chiede una sessione avviata come amministratore | Lettura del log attivo senza privilegi elevati | Avvia PowerShell come amministratore oppure analizza un file esportato |
| Errore La finestra di selezione richiede una sessione STA | PowerShell avviato in modalità MTA | Usa powershell.exe -STA -File .\Analizza-Evtx.ps1 oppure indica -PercorsoEvtx |
| Nessun evento 4663/4660 corrispondente ai filtri | Il file non contiene eventi di file system o solo letture di metadati | Verifica 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é sovrascritto | Comportamento atteso: l'eliminazione è registrata ma il percorso non è ricostruibile |




