Utilizzare PowerShell per esportare eventi da Windows Server 2008 e successivi

In alcuni casi si ha la necessità di esportare determinati eventi da un server, ad esempio perché devono essere archiviati in percorsi crittografati (normativa sulla privacy), per mancanza di spazio per l’archiviazione sul server o per permettere una gestione avanzata. Per fare questo esistono numerose soluzioni: dall’utilizzo di software di terze parti che eseguono l’operazione in maniera del tutto automatica all’implementazione di script che vanno a scrivere in database.
In questo articolo proporrò una soluzione semplice per raggiungere l’obiettivo solo con gli strumenti di Windows Server e senza l’utilizzo di database.

Per prima cosa è necessario predisporre un percorso per l’archiviazione dei file del registro eventi (.EVTX). Se necessario crittografare l’intera cartella con EFS o con BitLocker. Se si utilizza una condivisione remota considerare che entrambi i computer dovranno disporre di un certificato valido per eseguire la scrittura e la lettura nella cartella crittografata.

A questo punto è possibile procedere alla creazione dello script (.PS1) e pianificare l’esecuzione dello stesso nell’intervallo di tempo specificato tramite l’ “Utilità di pianificazione” di Windows (taskschd.msc).

Prestare attenzione anche all’Execution Policy di PowerShell. Gli script non firmati di default non possono essere eseguiti, quindi potrebbe essere necessario prima configurare l’Execution Policy su “Unrestricted”.

Microsoft TechNet – Using the Set-ExecutionPolicy Cmdlet

Script PowerShell

Come linguaggio di Scripting è stato utilizzato PowerShell, ma è implementabile anche in VBScript riutilizzando il comando di “wevutil”.

# Percorso o cartella condivisa dove memorizzare i file
$mainpath='\\backupunit\backup_eventi'
# Strutturazione dei nomi file, nel mio caso ho optato per Accounts_giorno_mese
$outputfile=$mainpath+'\Accounts_'+(Get-Date).Month+'_'+(Get-Date).Day+'.evtx'
# Nel mio caso lo script di PowerShell esegue anche l'eliminazione automatica dei file più vecchi di 185 giorni presenti nella cartella
get-childitem $mainpath | where {$_.lastwritetime -lt (get-date).adddays(-185) -and -not $_.psiscontainer -and $_.extension -eq ".evtx"} |% {remove-item $_.fullname -force -verbose}
# Esegue l'esportazione del registro eventi in base al risultato di una query WQL
wevtutil epl Security /q:"*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and ((EventID=4624) or (EventID=4634))] and EventData[(Data[@Name='TargetUserName']!='UtenteDaEscludere']]" $outputfile
# Se il file EVTX viene trovato (quindi il salvataggio è stato eseguito correttamente) viene quindi svuotato l'intero registro appena esportato
if(Test-Path $outputfile) {
wevtutil cl Security
}

Per utilizzare l’esportazione dei record dal registro è stato utilizzata l’utilità “WevtUtil”, la descrizione completa del comando è reperibile qui:

Microsoft TechNet – Wevtutil

La query WQL utilizzata nell’esempio esegue un filtro nel registro “Sicurezza”: include solo gli eventi aventi uno degli ID specificati e che non provengono da un determinato nome utente (ad esempio l’account amministrativo).

In alternativa per creare una query WQL personale è possibile utilizzare direttamente il “Visualizzatore eventi” di Windows (eventvwr.msc).

1) Spostarsi sul registro eventi da utilizzare per esportare i dati e creare un nuovo filtro personalizzato.

filtroregistro

2) Configurare le opzioni desiderate nella scheda “Filtro” quindi, senza chiudere la finestra, spostarsi sulla scheda “XML”. La query WQL da utilizzare è specificata nel tag “<select>”.

Selezionando la spunta “Modifica query manualmente” è possibile anche modificare una query manualmente e vedere gli eventi risultanti dopo aver confermato. Se il risultato è corretto è possibile aprire nuovamente il filtro ed esportare quindi la query WQL.

wqlregistro

Gestione degli eventi

Tutti gli eventi esportati in una singola esecuzione dello script vengono archiviati sotto forma di un unico file EVTX. Per visualizzarli è possibile utilizzare il “Visualizzatore eventi” di un qualsiasi computer dotato di Windows Vista o successivi (di norma l’estensione del file è associata automaticamente al visualizzatore), ovviamente dopo aver eventualmente decrittografato il file se la cartella di archiviazione è protetta.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *