Premetto che la ritengo una gran cagata… e completamente inutile, visto che i log NON HANNO ALCUN VALORE PROBATORIO!
Ma visto che dobbiamo adeguarci… cerchiamo di farlo a COSTO ZERO!
Io ho risolto (sto risolvendo) così:
Installo rsyslog con logging su file sul logserver
Su un server linux CentOs 5.*
con
SYSLOGD_OPTIONS=”-m 0 -r”
local1.*,user.*,auth.*,authpriv.*,kern.* ?DynAuth
$EscapeControlCharactersOnReceive off
%msg:::space-cc%
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
local3.* /var/log/varie.log
Abilitare il logging su tutti i server linux
Su un qualsiasi server linux
auth.*;authpriv.*;local1.* @logserver.dominio
Abilitare il logging su Oracle 9i
chown -R oracle:dba /var/log/oracle/
SHOW PARAMETER audit
ALTER SYSTEM SET audit_trail=OS SCOPE=SPFILE;
ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET audit_file_dest=”/var/log/oracle” SCOPE=SPFILE;
AUDIT SESSION;
SHUTDOWN IMMEDIATE
startup
Abilitare il logging su Postgres
Modifico
/usr/local/pgsql/data/postgresql.conf
come segue:
log_destination = ‘syslog’
syslog_ident = ‘postgres’
log_disconnections = true
log_duration = true
Abilitare il logging su MySql
Nel file
/etc/my.cnf
nella sezione
[mysqld]
aggiungo
log=/var/log/mysql.log
Poi lancio all’avvio il seguente comando:
tail -f /var/log/mysql.log | egrep ‘Connect|Quit’ | logger -p LOCAL1.info -t mysql &
(ringrazio Stefano Coletta (http://www.mindcreations.com/) per la precisazione:
l’egrep va corredato dall’opzione –line-buffered altrimenti non funziona correttamente)
tail -f /var/log/mysql.log | egrep –line-buffered ‘Connect|Quit’ | logger -p LOCAL1.info -t mysql &
e lo salvo nell’ rc.local
e lo metto anche nella sezione postrotate del logrotate in
/etc/logrotate.d/mysql-log-rotate
Altrimenti, come suggeritomi dal buon Alessandro Corbelli di www.web4web.it si possono usare le named pipe:
http://www.linuxjournal.com/article/2156
http://www.linuxjournal.com/content/using-named-pipes-fifos-bash
Non loggo tutto su file ma ho creato una named pipe ed in inittab ho inserito, in respawn, uno script così composto
while [ true ]; do
tail -f <namedpipe> | egrep ‘Connect|Quit’ | logger…
done
Le prestazioni sono ‘abbastanza’ decenti.
Il while sarebbe anche superfluo…
Occorre fare attenzione a un particolare:
Se si utilizza la named pipe con lo script in inittab, nello script NON deve esserci il tail, ma il cat.
Quindi lo script diventa:
while [ true ]; do
cat <namedpipe> | egrep ‘Connect|Quit’ | logger -p LOCAL1.info -t mysql
done
Abilitare il logging sui server Windows
Sui server windows
Ho usato snare:
SnareSetup-3.1.5-MultiArch.exe
http://www.intersectalliance.com/projects/SnareWindows/index.html
Come “Destination snare server address” ho messo lo stesso ip del log server e come porta la 514
Abilitare il logging su Exchange
Gestore sistema Exchange -> Gruppi amministrativi -> <nome> -> server -> NomeServer -> tasto dx sul server -> registrazione Diagnostica
-> MSExchangeIS -> private o cassetta postale -> Accessi = minima; Controllo accessi = minima (oppure logons=minima e access control = minima)
Poi su snare:
Creo un nuovo oggetto:
Identify the high level event = Any event(s)
Event ID Search Term = 1009,1016,1013,1029
General Search Term = *
Select the User Match Type = Include
User Search Term = *admin*
Identify the event types to be captured = Success Audit + Failure Audit
Identify the event logs = Security + Application
Select the Alert Level = Critical
Abilitare il logging sul FileServer
Identify the high level event = Any event(s)
Event ID Search Term = 538,540,552,551,682,683,528
General Search Term = *
Select the User Match Type = Include
User Search Term = *admin*
Identify the event types to be captured = TUTTI
Identify the event logs = Security
Select the Alert Level = Critical
Immodificabilità dei log
Ogni notte, sul logserver, parte un cron che mi crea un md5 di tutti i file di log
Lo chiamo Z_calcola_md5.sh in modo che il cron lo chiama da ultimo DOPO il logrotate
cat /etc/cron.daily/Z_calcola_md5.sh
########################################
#!/bin/bash
TMP=`/bin/date –date=’1 days ago’ +%m/%d`
FILE_NAME=”MD5-`/bin/date –date=’1 days ago’ +%m-%d`.md5″
DEST_DIR01=”/var/log/TUTTI”
DEST_DIR=”$DEST_DIR01/$TMP/”
MD5_DIR=”/var/log/TUTTI/MD5/”
cd $MD5_DIR
find $DEST_DIR -type f -exec md5sum {} \; > $FILE_NAME
#########################################
A questo punto posso creare un tar.gz e salvare i log su un dvd o effettuarne un backup