Le tracce di audit sono conservate nel formato binario BSM,
così devono essere usati degli strumenti appositi
per modificare o convertirli a testo. Il comando praudit(1)
converte file di traccia a semplice formato testo; il comando
auditreduce
può essere usato per ridurre
file di traccia per analisi, archiviazione o stampa.
auditreduce(1) supporta una varietà di
parametri di selezione, incluso il tipo di evento, la classe
dell'evento, l'utente, la data o l'ora dell'evento, ed il percorso
del file o l'oggetto su cui si opera.
Per esempio, l'utility praudit
farà il
dump dell'intero contenuto di uno specifico file di log di audit
in semplice formato testuale:
#
praudit /var/audit/AUDITFILE
Dove AUDITFILE
è il nome del file di log di cui fare il dump.
Le tracce di audit consistono in una serie di record di audit
composti da token, che praudit
scrive sequenzialmente
uno per linea. Ogni token è per un tipo specifico,
come header
che tiene un header di un record
audit, o path
che tiene un percorso di file
da una ricerca del nome.
Il seguente è un esempio di un evento execve
:
header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec exec arg,finger,doug path,/usr/bin/finger attribute,555,root,wheel,90,24918,104944 subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100 return,success,0 trailer,133
Questo audit rappresenta una chiamata di successo a
execve
, in cui il comando
finger doug
è stato eseguito.
Il token degli argomenti contiene la riga di comando presentata
dalla shell al kernel. Il token path
contiene
il percorso dell'eseguibile usato dal kernel.
Il token attribute
descrive il binario, ed in particolare
include i permessi del file che possono essere usato per determinare
se l'applicazione era setuid. Il token subject
descrive il processo
in oggetto e conserva in sequenza l'id utente dell'audit, l'id effettivo
dell'utente, il group id, lo user id reale ed il group id reale,
il process id, l'id della sessione, l'id della porta e l'indirizzo di login.
Nota che l'audit user id ed il real user id sono diversi:
l'utente robert
è diventato
root
prima di eseguire questo comando, ma questo
viene tenuto sotto audit usando lo user id originale. Infine, il token
return
indica l'esecuzione andata a buon fine, ed il
trailer
chiude il record.
In FreeBSD 6.3 e successive, praudit
supporta
anche il formato di output XML, che può essere selezionato
usando l'argomento -x
.
Dato che i log dell'audit possono essere molto grandi, un amministratore probabilmente vorrà selezionarne solo un sottoinsieme utile, ad esempio i record associati con un utente specifico:
#
auditreduce -u trhodes /var/audit/AUDITFILE | praudit
Questo selezionerà tutti i record di audit per
l'utente trhodes
conservati nel file
AUDITFILE
.
I membri del gruppo audit
hanno
il permesso di leggere tracce di audit in /var/audit
;
di default questo gruppo e' vuoto, così solo
root
può leggere le tracce di audit.
Utenti possono essere aggiunti al gruppo audit
per delegare diritti di lettura sull'audit.
Dato che l'abilità di tracciare contenuti del log di audit
fornisce significative informazioni sul comportamento di utenti
e processi, si raccomanda che la delega di lettura sia fatta con cautela.
Le pipe di audit sono degli pseudo-device clonanti nel file system dei device che permettono alle applicazioni di intercettare lo stream dei record di audit in tempo reale. Questo è di primario interesse per i creatori di applicativi di intrusion detection e di monitoraggio di sistemi. In ogni caso, per l'amministratore il device della pipe dell'audit è un modo conveniente per permettere il monitaraggio dal vivo senza incontrare problemi con i permessi della traccia audit o la rotazione dei log che interrompono lo stream degli eventi. Per tracciare lo stream degli eventi dell'audit, usa la seguente linea di comando:
#
praudit /dev/auditpipe
Di default, i nodi di device delle pipe dell'audit sono accessibili
solo dall'utente root
. Per renderlo accessibile
ai membri del gruppo audit
, aggiungi una
regola devfs
al file devfs.rules
:
add path 'auditpipe*' mode 0440 group audit
Leggi devfs.rules(5) per altre informazioni su come configurare il filesystem devfs.
È facile produrre cicli di feedback di eventi audit,
in cui il semplice osservare ogni evento di audit risulta nella
creazione di più eventi di audit. Per esempio, se tutto
il traffico di rete viene tenuto sotto audit, e praudit(1) viene
eseguito da una sessione SSH, un flusso continuo di notevoli dimensioni di eventi
audit sarà generato, dato che ogni evento scritto genererà
un altro evento. È consigliabile eseguire
praudit
su un device
pipe di audit da sessioni senza audit I/O in grande dettaglio, per evitare
fenomeni come questo.
Le tracce di audit sono scritte solo dal kernel, e gestite
solo dal demone dell'audit, auditd. Gli
amministratori non dovrebbero cercare di usare newsyslog.conf(5)
o altri tool per ruotare direttamente i log di audit. Invece,
il tool di gestione audit
può essere usato
per interrompere l'audit, riconfigurare il sistema di audit,
ed eseguire la rotazione dei log. Il seguente comando fa sì
che il demone audit crei un nuovo log di audit e segnali al kernel
di usare il nuovo log. I vecchio log sarà terminato
e rinominato, ed a questo punto potrà essere manipolato
dall'amministratore.
#
audit -n
Se il demone auditd non sta girando al momento, questo comando fallirà e sarà prodotto un messaggio di errore.
Aggiungendo la seguente linea a
/etc/crontab
forzerà la rotazione
ogni dodici ore da parte di cron(8):
0 */12 * * * root /usr/sbin/audit -n
Il cambiamento prenderà effetto dopo che hai salvato
il nuovo /etc/crontab
.
La rotazione automatica della traccia dell'audit basata
sulla dimensione del file è possibile attraverso l'opzione
filesz
in audit_control(5), ed è
descritta nella sezione sui file di configurazione di questo capitolo.
Man mano che i file di traccia dell'audit diventano
di grandi dimensioni, è spesso desiderabile
comprimerli o in qualche modo archiviarli dopo che sono
stati chiusi dal demone audit. Lo script audit_warn
può essere usato per eseguire operazioni personalizzate
per una varietà di eventi relativi all'audit, incluse
la chiusura pulita delle tracce di audit quando sono ruotate.
Ad esempio, il seguente comando può essere aggiunto
allo script audit_warn
per comprimere
le tracce di audit alla chiusura:
# # Compress audit trail files on close. # if [ "$1" = closefile ]; then gzip -9 $2 fi
Altre attività di archiviazione possono includere copiare i file di traccia su di un server centralizzato, cancellare file di traccia vecchi, o ridurre la traccia di audit per rimuovere i record non voluti. Lo script sarà eseguito solo quando i file di traccia sono chiusi in maniera pulita, così non sarà eseguito su tracce lasciate non terminate a seguito di uno shutdown improprio.
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Per domande su FreeBSD, leggi la
documentazione prima di contattare
<questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a
<doc@FreeBSD.org>.