Loggare i LOGON/LOGOFF degli utenti su Active Directory
Nel caso ci fosse la necessità di avere una soluzione pratica e veloce per tenere traccia delle operazioni di logon/logoff è sufficente creare un paio di script batch e appoggiarsi alle GPO ( Group Policy ) di Active Directory.
La soluzione più veloce da attuare ( ma anche quella meno sicura ) consiste nel creare un paio di script batch che si occupino di creare dei file di log in cui salvino le operazioni di logon/logoff.
Si crea quindi una cartella condivisa sul Domain Controller che sia accessibile a tutti in lettura/scrittura ( e qui sta la poca sicurezza che dicevo sopra, chiunque se scopre il percorso di log può cancellare e/o modificare i log, sta all’amministratore adottare la politica di sicurezza migliore per la situazione in cui si trova ), esempio \\SERVER\PATH.
Esempio script per il logon:
1 2 3 4 5 6 7 8 9 10 11 |
@echo off rem Ricava la data per usarla come parametro nel nome file for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set CURR_DAY=%%u for /f "tokens=2 delims=.:/-, " %%u in ('date /t') do set CURR_MONTH=%%u for /f "tokens=3 delims=.:/-, " %%u in ('date /t') do set CURR_YEAR=%%u rem Esegue la segnalazione di che utente si (s)collega a tal computer echo Log On %DATE% %TIME% %USERNAME% >> \\SERVER\PATH\%COMPUTERNAME%-%CURR_YEAR%-%CURR_MONTH%-%CURR_DAY%.log rem Esegue la segnalazione di quale computer si è (s)collegato tal utente echo Log On %DATE% %TIME% %COMPUTERNAME% >> \\SERVER\PATH\%USERNAME%-%CURR_YEAR%-%CURR_MONTH%-%CURR_DAY%.log |
Per quanto riguarda lo script per il logoff non sto a ripeterlo due volte in quanto è uguale a quello del logon, cambia solo il testo nel log da “Log On” a “Log Off”.
Una volta che abbiamo creato i due script esempio con nome LOGON.CMD e LOGOFF.CMD li salviamo nel percorso comune \\SERVER\PATH.
Ora sempre dal Domain Controller andiamo a editare il nostro GPO, apriamo la nostra gestione Manage users and computers in Active Directory, clicchiamo con il tasto destro sul nostro dominio e scegliamo Properties, ci spostiamo nella sezione Group Policy, selezionamo la voce Default Group Policy e clicchiamo sul pulsante Edit, apriamo User Configuration, apriamo Windows Settings e clicchiamo su Scripts (Logon/Logoff).
A questo punto nella finestra a destra avremo due voci, Logon e Logoff, le selezioniamo e clicchiamo sul collegamento Properties a sinistra, poi clicchiamo sul pulsante Add e infine nel campo Script Name andiamo a indicare il percorso del nostro script di logon ( \\SERVER\PATH\LOGON.CMD ) o logoff che sia ( \\SERVER\PATH\LOGOFF.CMD ).
Confermiamo tutte le finestre e chiudiamo il nostro GPO.
A questo punto basta fare un logon/logoff con un utente qualsiasi su un computer e vedremo creare e aggiornare i nostri file di log.
Una soluzione invece un pelo più sicura potrebbe essere il registrare questi log su un database esempio MySQL, serve però prepararsi una pagina ( es. in PHP ) che riceva dei parametri e li inserisca sul database.
Dentro ai nostri script batch sopra citati è sufficente far richiamare la pagina in questione, magari con il programma wget per Windows o uno simile, passando via GET i parametri da loggare, esempio per il logon:
1 |
wget http://server/log.php?action=logon&username=%USERNAME%&computer=%COMPUTERNAME% |
o per il logoff:
1 |
wget http://server/log.php?action=logoff&username=%USERNAME%&computer=%COMPUTERNAME% |
Non sto a creare l’esempio della pagina PHP in quanto sono operazioni di programmazione molto basilari reperibili facilmente in rete e non riguardano l’argomento trattato.