L'anticamera del cestino

Raccolta differenziata di esperienze di dubbia utilità

Backup dell’EventLog di Windows

leave a comment »

Chi non l’avesse ancora capito prima o poi scoprirà che, nella maggior parte dei casi, non ci è dato sapere come funziona il software proprietario. Possiamo utilizzare gli strumenti che ci fornisce la casa produttrice del software e sperare che questi facciano esattamente quello che vogliamo. In questa piccola cronaca vi spiegherò come effettuare il backup dei log di Windows (EventLog) con particolare riferimento ai Security log con il duplice scopo di fornire qualche indicazione all’amministratore di rete che dovesse risolvere il medesimo problema evidenziando il fatto che il software proprietario è una gran fregatura.

Perchè è necessario effettuare il backup dei log di windows?

La normativa Italiana in materia di privacy impone all’amministratore di sistema la conservazione dei log di accesso (logon/logoff) per almeno 6 mesi. Se avete impostato l’audit sul logon e logoff del vostro dominio, Microsoft Windows Server 2003 traccerà gli accessi nell’EventLog. Fatto questo dovrete certamente configurare l’EventLog per tenere traccia di almeno 6 mesi di attività ed è qui che arriva il primo problema. Windows non dispone di un sistema di rotazione dei log come quello presente su GNU/Linux ma permette solo di scegliere la dimensione massima del file di log e la politica di mantenimento dei log: sovrascrivi gli eventi se necessario, scrivi eventi anteriori a n giorni, non sovrascrivere eventi. Se il vostro dominio ha un elevato numero di client le configurazioni dell’EventLog di Windows saranno probabilmente insufficienti e dovrete forse impostare una strategia di backup e “svuotamento” dei log.

“Niente di più facile” direte voi. I file di log vengono scritti nella directory C:\WINDOWS\System32\config\ quindi mi copio tutta la directory con un software di backup e fine della storia. Purtroppo non funziona. Se riprisatinate un file di log copiato in questo modo tutto quello che otterrete è il messaggio “File is corrupted!”.

La spiegazione di questo comportamento ce la fornisce Miscrosoft:
«This error message is the result of a unique characteristic of event log files. When a computer starts, the Event service changes several bits in each event log file header.»

Quindi come possiamo effettuare il backup dell’EventLog? Molto semplice, con un metodo di VisualBasic. Ovviamente dobbiamo prendere per buono lo strumento fornito da Microsoft senza porci troppe domande.

Prima di lasciarvi con il codice dello script di backup in vbs vorrei farvi notare una cosa. Non conosco assolutamente il VisualBasic, quindi mi sono trovato a dover scrivere questo script copiando codice un po’ in giro. Mi sembrava una cosa utile assegnare al file di backup la classica notazione con la data del tipo aaaammgg. Guardando un po’ di documentazione mi è sembrato di capire che VisualBasic non ha un sistema per scrivere mese, giorno, ora e minuti con la doppia cifra, ovvero una funzione che mi permetta di scrivere gennaio come 01 piuttosto che 1. Ho dovuto scrivere quindi un po’ di righe per anteporre lo 0 ai numeri inferiori a 10. Ecco il codice:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate, (Backup, Security)}!\\" _
        & strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery _
    ("Select * from Win32_NTEventLogFile where LogFileName='Security'")

' Aggiunge lo 0 a mese, giorno, ore, minuti se < 10
	If month(now) < 10 Then
		sMonth = "0" & month(now)
	Else
		sMonth = month(now)
	End If

	If Day(now) < 10 Then
		sDay = "0" & Day(now)
	Else
		sDay = Day(now)
	End If

	If Hour(now) < 10 Then
		sHour = "0" & Hour(now)
	Else
		sHour = Hour(now)
	End If

	If Minute(now) < 10 Then
		sMinute = "0" & Minute(now)
	Else
		sMinute = Minute(now)
	End If

For Each objLogfile in colLogFiles
     OutputFile = "C:\" & "Security"
     OutputFile = OutputFile & year(now) & sMonth & sDay & sHour & sMinute
     OutputFile = OutputFile & ".evt"
    errBackupLog = objLogFile.BackupEventLog(OutputFile)

    If errBackupLog = 0 Or errBackupLog = 183 Then
         objLogFile.ClearEventLog()
    Else
        Wscript.Echo "The Security event log could not be backed up."
    End If

Next

Written by Max-B

30 marzo 2010 a 08:34

Pubblicato su Windows Server 2003

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: