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
Ciao,
ottimo questo documento…ma per quanto riguarda mysql quali sono i passi per creare il named pipe e poi cosa dove và scritto nel file inittab lo script, puoi spiegarlo meglio passo passo :-))
Come sta scritto nei link che avevo riportato nel post:
Named pipes are created via mkfifo or mknod:
$ mkfifo /tmp/testpipe
$ mknod /tmp/testpipe p
saluti
M.
come si crea mi è chiaro, non mi è chiaro come si fa a passare a testpipe (nel mio caso mysqlpipe) il log di mysql… è la prima volta che uso i named pipe
io ho creato il mime
$ mkfifo /tmp/mysqlpipe
ho creato lo script /root/script-mysql
#!/bin/bash
pipe=/tmp/mysqlpipe
while [ true ]; do
tail -f $pipe | egrep ‘Connect|Quit’|logger -p local7.info -t mysql &
done
ho modificato /etc/inittab
7:2345:respawn:/root/script-mysql
ma non mi funziona
non ho capito cosa non ti funziona.
A me in effetti inizialmente non si riavviava il mysql.
Occorre avere il mysql almeno alla ver 5.0.x
Fai eseguire lo script con
telinit q
in /etc/my.cnf nella sez. [mysqld] aggiungi
log=/tmp/mysqlpipe
poi riavvia mysql
Dovrebbe funzionare.
Per testarlo connettiti al mysql e lancia
flush logs;
Fammi sapere se ok.
Saluti
M.
Altro aggiornamento…
se si usa lo script con la named pipe non si deve usare il tail ma il cat
io ho come db MySQL: 4.1.7 con 2 db
sarà per questo che non mi funziona.
ho provato la tua soluzione senza named pipe, quando lancio il comando tail -f …
mi loggo il primo accesso mysql poi anche se il comando è attivo in memoria non mi logga più gli accessi. se tiro giù il processo e lo faccio ripartire mi logga ancora il primo accesso e poi gli accessi successivi non vengono loggati…cosa mi manca per farlo loggare sempre e non solo la prima volta che lancio il comando?
Come ti ho già detto non devi usare il tail -f ma il cat
Ri-leggi il post (lo aggiorno continuamente)
Saluti
M.
per postgres devi aggiungere anche questo:
log_destination = ‘syslog’
perchè sul mio era configurato di default ‘stderr’ così è più completo 🙂
Hai ragione… mi era sfuggita.
Grazie 1000000000
Ciao, sto realizzando una soluzione simile alla tua.. salvo che dovrò comprare anche un agent per IBM iSeries per gli accessi su questo sistema 🙁
Quali eventi hai pensato di loggare sui server Windows? I domain controller generano gli eventi Kerberos 672 e 673 rispettivamente quando viene emesso un ticket granting ticket e un ticket granting service. Mi pare che dovrebbe essere sufficiente loggare questi due eventi, quando generati da un sysadmin, e alla fine sono pochi anche numericamente. Invece se logghi tutto quello che c’è nel registro Security, è una montagna di roba. Cosa ne pensi?
Per i login logout sulla macchina e sul dominio snare prevede già un “object” preimpostato, ho solo aggiunto un filtro sugli utenti da loggare, specificando solo gli AdS.
Per Exchange, invece ho loggato solo gli eventi il cui id è 1009,1016,1013,1029
Per il FileServer, invece ho loggato solo gli eventi il cui id è 538,540,552,551,682,683,528
Saluti
Ho qualche dubbio sull’utilizzo del syslog come accentratore dei log.. Questo salvandoli in un file di testo non ne garantisce l’immodificabilità..
Ciao
A mio avviso l’immediata immodificabilità non è richiesta. In tal senso rimando anche alla faq nr 10 del garante che, a un certo punto, dice:
“Comunque è sempre possibile effettuare un’estrazione o un filtraggio dei logfiles al fine di selezionare i soli dati pertinenti agli AdS.”
Se li posso filtrare, li posso modificare.
Saluti
L’immodificabilità del log è richiesta fin dal momento della creazione dello stesso, altrimenti spiegami che senso avrebbe!!!!
Un’estrazione o un filtraggio non significa una modifica, significare creare un sottoinsieme dei log selezionando solo quelli utili senza modificarli..
Ciao
Il tuo doscorso è (IMHO) un po’ contraddittorio.
Se “L’immodificabilità del log è richiesta fin dal momento della creazione dello stesso, altrimenti spiegami che senso avrebbe!” allora non ha senso neppure “Un’estrazione o un filtraggio”. Una modifica è una modifica, che senso ha fare differenze fra togliere qualcosa o modificare qualcosa. Se tolgo potrei togliere tutto ciò che mi riguarda… 🙂
Cmq.. il senso non è rendere i log immodificabili (anche xchè vorrei proprio vedere come… sei io sono l’AdS sono DIO e quindi POSSO TUTTO 🙂 ) ma dicevamo, lo scopo non è rendere i log immodificabili, anche xchè non hanno NESSUN VALORE PROBATORIO, ma è sensibilizzare il titolare verso i poteri degli AdS. I log servono perchè il titolare possa, ogni tanto, controllare che i suoi AdS facciano quello che hanno dichiarato di fare.
In pratica, il garante si è accorto che i titolari non hanno la + pallida idea dei poteri degli AdS e delle loro responsabilità, e quindi cerca di fare in modo che i titolari dei dati SE NE RENDANO CONTO! Tutto qui!
🙂
Saluti
ciao, ma se io salvo tutti i log tramite rsyslog in un database, posso tramite una query sql esportare solo quelli che mi servono (accessi) o secondo voi è meglio salvarli a parte su un file coma l’utilissima procedura qui sopra?
Intendevo dire che puoi filtrare solo la tipologia di eveto che ti interessa tralasciando gli altri, senza distinguere tra quelli dello stesso tipo…
E comunque ribasco il concetto che non devono essere modificabili fin dalla creazione sennà finisce tutto a tarallucci e vino!!!
Purtroppo dobbiamo adeguarci a questa norma troppo poco chiara consci del fatto che, dal punto di vista informatico, non ha senso.
Personalmente credo che mi limiterò ad abilitare sui Domain Controller Windows l’auditing per gli account logon events e logon events sia per i success che per le failure e salvandomi il log Security per almeno 6 mesi.
Saluti
Aggiungo un’altro concetto che ho già ribadito in un altro forum.
E’ da sempre che si sa che un ADS di una rete informatica può aver accesso a tutte le informazioni, tralasciando files e email criptate, e a tutti è sempre andato bene così. Ora improvvisamente sembra che non vada più bene… Bisogna monitorare l’operato dell’ADS.
Io rimango sempre dell’idea di fondo che ci debba essere la fiducia da parte del titolare dell’azienda per il proprio ADS, altrimenti si cambia. Un pò come avviene per il medico, o ci si fida di lui o si cambia.
Tutto il resto sono solo perdite di tempo e costi che non danno nessuna garanzia in più…
Personalmente sono arrivato alla conclusione che mi porta a dire ” tutto ciò che non è richiesto è superfluo” 🙂 quindi ritengo la tua soluzione adeguata. Ti consiglio solo di scrivere (e far firmare al titolare) una relazione di adeguatezza con la quale spieghi la soluzione attuata e il perchè hai adottat quelle scelte. La non modificabilità del log dalla sorgente mi sembra pura utopia… se stacco il cavo di rete non c’è log che tenga, se ho accesso root alla macchina non c’è log che tenga, quindi i log non potranno MAI avere valore probatorio in un tribunale e quindi cercare di renderli non modificabili è uno sforzo inutile e, come dicevo prima, non richiesto 🙂 Saluti
“Io rimango sempre dell’idea di fondo che ci debba essere la fiducia da parte del titolare dell’azienda per il proprio ADS, altrimenti si cambia. Un pò come avviene per il medico, o ci si fida di lui o si cambia.
Tutto il resto sono solo perdite di tempo e costi che non danno nessuna garanzia in più…”
Quoto in pieno!!!
Secondo me sta norma è nata a causa dei problemi sulle intercettazioni illegali .. .ecc… in italia ci si pongono problemi assurdi solo dopo che succede qlcs…
Saluti
🙂
Mm…. Mi sa che dovrò cambiare strategia…
Da un cliente ho 4 DC e nei due della sede principale il security log ha già raggiunto i 3 MB in 1 ora!!!
A questo punto penso di tornare all’idea principale, uno script di logon e uno di logoff che mi scrive in un file i dati degli utenti che entrano e escono.. Questo però non include i tentativi errati…
Bel problemone…
Con snare for windows puoi filtrare i logon/logoff dei SOLI AdS, quindi riduci considerevolmente i log. (Sperando che non vengano usati account AdS per il lavoro “comune”)
Si anche con LogParser (http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en) si può fare..
Farò così, ogni settimana estraggo i dati e li metto in un file di testo..
Più di così non è umano..
Ciao
Si, anche LogParser è buono.
Puoi metterlo in “Operazioni Pianificate” di Win ed eseguirlo ogni settimana o ogni giorno.
Poi, come ti dicevo, ti consiglio di scrivere (e far firmare al titolare) una relazione di adeguatezza con la quale spieghi la soluzione attuata e il perchè hai adottato quelle scelte.
Cmq la soluzione mi sembra buona anche se, con 4 DC (e immagino una rete di dimensioni considerevoli) io un serverino di log centralizzato lo metterei… anche perchè… sugli altri server non hai dati personali??? Applichi il logparser settimanale a tutti?
Ciao
Dunque la rete è abbastanza grande, ci sono sui 100/150 utenti complessivamente distribuiti su 4 site tutto sotto AD, quindi tutti i log sono centralizzati nei 4 DC.
Tutto il gestionale si trova sotto AS/400 e di quello non me ne occupo io quindi 🙂
Ciao
@Ghido
Secondo me la tua soluzione può andar bene, ma ti consiglio di masterizzare spesso i dati estratti in modo da ottemperare a quanto richiesto in termini di non modificabilità. E poi, allega una relazione di adeguatezza nella quale dichiari che la tua soluzione è corretta tecnicamente richiamando appunto il principio di adeguatezza che il garante cita spesso. Saluti
Ok, ma oltre al gestionale avrai (immagino) un fileServer, un server di posta, ecc… Su quei server sono presenti dati pèersonali, quindi sono sottoposti al provvedimento. Del gestionale, anche se non te ne occupi te, dovrai garantire i backup, manutenerlo, ecc… quindi ogni accesso tuo e di altri AdS esterni deve essere loggato, e queste operazioni competono al titolare…
Si ho files server, server di posta, etc. ma ogni volta che entro in una macchina comunque viene registrato l’accesso sul DC, quindi…
Allora ok 🙂
Saluti
Salve,
è assurdo vedere come poi le problematiche legate a questo decreto ricadano sugli ADS soggetti al controllo. Il controllato deve provvedere a controllarsi….
Cmq vorrei capire con voi se qualcuno ha una soluzione su come loggare i seguenti sistemi poi :
– Mssql server
– Oracle 10, ha possibilità di inviare a syslog?
– AS400 / DB2
– SAP
Grazie e buon logging 😉
che sia assurdo… tutto il provvedimento è chiaro!
Oracle 10 dovrebbe supportare il syslog
prova a cercare:
ALTER SYSTEM SET audit_trail=Syslog SCOPE=SPFILE;
Ciao
Ma bisogna fare tutta ‘sta manfrina anche se il titolare dell’azienda e l’ADS sono la stessa persona (mio caso)? Tra l’altro nel mio caso particolare tutta la parte di autenticazione e controllo di accesso ai dati è affidata al gestionale che usiamo, che salva i dati in un suo db integrato non standard (spero almeno crittografato)…
Intanto grazie per la dritta, ho implementato la tua soluzione che trovo molto intelligente vista la normativa piuttosto stupida, l’unica eccezzione che mi hanno sollevato riguarda la parte di reportistica. Sinceramente ho finto di non sentire (saranno problemi di chi si deve spulciare i log) ma non so come interpretarla. Grazie e tanti auguri
Intanto grazie:-)
Per la reportistica io ho adottato phplogcon (www.phplogcon.org) abilitando il logging sia su db che su file tramite rsyslog.
Sinceramente, però, il garante non ha specificato niente, quindi, a mio avviso, sarebbe sufficiente fornire al titolare il cd o dvd dei log masterizzati una volta al mese (o con altra cadenza regolare). Questo complica la vita al titolare, ma permette di ottemperare al provvedimento senza ulteriori complicazioni.
Saluti
Ciao
tu ti sentiresti di consigliare anche ad aziende medio grandi, con più di 100 server e 10.000 dipendenti una soluzione fatta in casa? Si rischia qualcosa secondo te?
come già ti ha chiesto bbortig noi anche avremmo esigenza di loggare
– Mssql
– Oracle 10
– As400/db2
– SAP
e anche lotus domino. A parte la dritta su oracle 10, hai qualche soluzione per gli altri sistemi?
ciao
ciao a tutti, come vi siete adeguati per i log dei vostri printer server o DC windows? Ho notato che quando un utente stampa viene generato un id event 538 (logon) e quindi mi viene inviato al syslog server (nel mio caso rsyslog+phplogcon), mi piacerebbe poter distinguere i “veri” logon/logoff da quelli generati da stampe oppure nel caso dei DC da quelli generati per l’uso di una risorsa.
saluti
ciao,
come configuri rsyslog per loggare sia su file che su db?
Grazie
😉
Così:
$template AdS, "/var/log/AdS/%$MONTH%/%$DAY%/%FROMHOST%.log"
local0.*,local1.*,local2.*,local3.*,local4.*,auth.*,authpriv.* ?AdS
& : ommysql:127.0.0.1,Syslog,UTENTE,PASSWORD
Saluti
Ciao,
come da suggerimento ho installato snare for windows su un PCs Win XP Pro.
Da configurazione Network noto che è possibile inserire solo un indirizzo IP e porta di ascolto : 514 . Da prove direi che funziona bene.
Ma è possibile inserire + client o Server ? per un unico log di snare?
Grazie e Saluti
Ho seguito passo passo le informazioni del blog.
I log vengono creati all’interno del file messages.
Ci sono e sono ok.
Avrei però bisogno di capire come estrapolare il file dei log per mandarlo su un server windows.
A questo punto butto la lapossibilità di estrapolare i log in un file protetto da password. è fattibile?
Questo potrebbe risolvere in parte il dilemma dell’immodificabilità del file.
ADS mette in atto il salvataggio dei log e il titolare SOLO sa la password del file che viene creato regolamente(giornalmente-settimalmente…)
In attesa di notizie ringrazio
Buongiorno, stavo cercando un freeware per ovviare alla richiesta del garante a propositod ei log sul server aziendale.
Non sono nubbiod ei PC, ma con i server e la programazione c’ho sempre azzeccato.
Volevo sapere se questa è una procedura che potrei portare semplicemente a termine o se, come mi sembra a prima vista, è un po’ troppo da “esperti” (mezzi termini neanche li ho capiti!!) 🙂
grazie
@Giacomo
Sinceramente non ho ben capito perchè vorresti mandare tutto su una macchina win, visto che hai già tutto su una macchina linux.
Personalmente ti posso consigliare di far scegliere la pass di root del logserver al titolare, e di creare un processo automatizzato di masterizzazione direttamente sul logserver.
In questo modo l’operatore non deve far altro che sostituire il cd o dvd quando è pieno e nessuno oltre al titolare può accedere alla macchina logserver.
Saluti
M.
@VRGnet
Scusa ma nn ho capito a cosa ti serve inserire diversi indirizzi ip su snare.
La macchina su cui arrivano tutti i log (nella mia soluzione) è una sola, il logserver, e quindi in snare devi indicare l’ip di quella macchina.
Saluti
M.
@Filippo
Bhè, la soluzione proposta si basa sul presupposto di essere AdS e di conoscere il funzionamento degli strumenti utilizzati.
Sinceramente non conosco software freeware per realizzare la stessa cosa.
Mi spiace.
Saluti
@Cri
Ciao,
personalmente penso che per adattare la mia soluzione ad un ambiente enterprise delle dimensioni che dici, ci vorrebbe qualche modifica, ma niente di esagerato.
Per quanto riguarda oracle 10 so per certo che permette l’invio dei log su syslog, ma non mi ci sono ancora imbattuto perchè ho solo oracle 9i.
Sugli altri prodotti, purtroppo, non so dirti niente, occorrerebbe provare.
Saluti
M.
io dovrei implementarla su un Microsoft Server 2008
Ciao,
ottima soluzione, dato che anche io sto seguendo lo stesso sistema 🙂
Suggerimenti per configurare l’AS400 affinchè mandi messaggi al Syslog Server?
@Simone
Grazie 🙂
Purtroppo non ho macchine as400 quindi non so aiutarti.
Saluti
M.
@Filippo
Se hai un solo server 2008 ti consiglio di mettere nelle “Operazioni Pianificate” un export dell’event log di windows e masterizzare quello con cadenza regolare.
Secondo me è la cosa più semplice da fare, anche se non rispetta alla lettera tutte le richieste del garante.
Per rendere tutto il più conforme possibile alle richieste del garante forse conviene masterizzare i log ogni giorno.
Per avere risultati migliori forse ti conviene mettere in piedi n serverino linux (anche virtuale) e inviargli tutti i log con snare.
Saluti
M.
Giusta osservazione
Posso chiederti di essere così gentile da suggerirmi come far fare la masterizzazione su CentOS in automatico o visto che sto utilizzando una macchina virtuale magari trovare un modo per far mettere da parte questi log regolarmente al Titolare.
Grazie
@giacomo
Per masterizzare da linea di comando ti suggerisco di leggere questo:
http://www.telug.it/gianfranco/Masterizzare-micro-howto.html
Ti ricordo che la masterizzazione è necessaria ai fini del provvedimento perchè il garante richiede che i log siano (alla fine) non modificabili.
Un’altra soluzione, altrimenti, potrebbe essere quella di conservare i log sulla stessa macchina e far scegliere la pass di root al titolare (che non deve darla a nessuno) e magari, per agevolare la consultazione potresti condividere via samba la directory (in sola lettura) e accessibile al solo titolare.
Ma quest’ultima soluzione è un po’ al limite.
🙂
Saluti
Ciao a tutti, ho implementato Snare (la parte free) sul mio win2003 e tutto funziona perfettamente tranne una cosa: ho attivato l’accesso a ” file or directory” per loggare eventuali miei accessi (via local o via share) a tutti i files sotto D:dati del server. Il problema è che quando accedo a D:dati e poi apro un file in una folder sotto Dati, il log risultante afferma che io ho acceduto a tutte le folders sotto D:dati e questo non è vero. E’ come se fossi entrato ovunque. Strano. Qualcuno ha avuto lo stesso problema con snare windows? grazie
Joe
Io, avendo solo postazioni windows, ho realizzato la cosa con kiwi syslog open source + snare agent.
Ad una data ora zippo il file e lo proteggo tramite password.
uso poi sendEmail per mandarlo da PEC (fornita dall’inps) a PEC della mia azienda.
La mattina dopo il protocollo informatico importa in automatico tutte le mail pec (che sono cifrate e sicure per propria natura) all’interno del protocollo informatico. Immodificabilità garantita dal software del protocollo stesso. E credo proprio di essere a posto.
Se poi c’è bisogno lo posso anche esportare e masterizzare quando voglio.
ciao Maurizio, ho perso spunto dalle tue idee per mettere in piedi un sistema di centralizzazione dei log con Snare agent e syslog-ng. Ho customizzato un po’ lo script che crea l’hash md5, te lo riporto:
#!/bin/bash
LOG_DIR=/var/log/win
MD5_DIR=/var/log/win/MD5
DATE_NAME=`/bin/date +%d-%m-%Y`
DEST_DIR=$MD5_DIR/`date +%Y`/`date +%m`
mkdir -p $DEST_DIR 2>/dev/null
FILE_NAME=”MD5-`/bin/date +%d-%m-%Y`.md5″
# aggiunge una intestazione
echo “data del controllo: `/bin/date +%d-%m-%Y`” > $DEST_DIR/$FILE_NAME
# se si vuole processare solo i file della directory corrente usare -maxdepth 1
find $LOG_DIR -maxdepth 1 -type f -exec md5sum {} ; >> $DEST_DIR/$FILE_NAME
# invia una mail con l’md5 dei file
cat $DEST_DIR/$FILE_NAME | mailx -s “invio md5 privacy” admin@tuo-dominio.it
io l’ho messo in /etc/init.d, e viene invocato da logrotate con l’opzione postrotate, quindi appena fatta la rotazione notturna:
/var/log/win/windows2003.log {
rotate 180
daily
compress
dateext
postrotate
/usr/sbin/invoke-rc.d syslog-ng reload >/dev/null
/etc/init.d/calcola_md5.sh
endscript
}
in questo modo il responsabile del trattamento dati riceve quotidianamente una mail con l’md5 dei log.
Grazie anche a tutti i partecipanti alla discussione, mi fate sentire meno solo nel districarmi tra i meandri di questa boiata colossale.
Ciao
zebedeo
@redlion
Anche io ho tutte macchine win…ma kiwi syslog, sei sicuro che sia open source?
@ tommybifi
hai ragione non è open source.
E’ freeware..
O per lo meno, esiste una versione freeware previa registrazione.
Comunque la versione completa costa 200 bucks…
mi hai capito che spesa..
http://www.solarwinds.com/register/kiwi_registration.aspx?Program=874&c=70150000000EIV7
Scusate, ma non ha capito una cosa: visto che il syslog crea ogni giorno un nuovo file, bisogna modificare il logrotate? Se si lascia di default, mi pare che ruoti ogni 4 settimane….e come a ruotare se ogni giorno cambia il nome file?
Grazie in anticipo
Avete pensato a strumenti per l’analisi dei log, visto che raccoglierli non è suff. per il provvedimento, ma l’analisi da parte del titolare è un requisito essenziale?
La soluzione che ho adottato è phplogcon.
In più, se il titolare lo richiede, può avere una copia su cd/dvd dei logfiles.
Saluti
Scusate ma non ho trovato nessuno che a fronte di questo provvedimento abbia segnalato difficoltà oggettive ad attivare funzionalità di audit su DBMS commerciali quali Oracle o IBM-DB2 in termini di cali di performance fino a raggiungere una inoperatività totale….per limitarsi a rispondere al provvedimento del garante qualcuno può indicarmi le soluzioni più furbe per loggare i tentativi di login e logout delgi utenti privilegiati ??
GRAZIE
Ciao, post grandioso! Lo script per l’immodificabilità dei log, può essere applicato con gli stessi comandi in ubuntu che tu sappia? Grazie
Domanda, pur creando l’md5, l’amministratore di sistema, non potrebbe modificare il file di log e ricreare l’md5 a mano?
Quindi vanificando l’operato?
Questo è chiaro 🙂
L’amministratore può anche disabilitare i log, fare tutto quel che vuole e riattivare i log senza che nessuno sappia niente 🙂
E quindi non c’è una garanzia con questo sistema, giusto? Può essere comunque utilizzato?
Secondo me non c’è garanzia con NESSUN sistema, perchè un amministratore può far tutto (nel bene e nel male) 🙂
Chiaro, a meno che l’amministratore non abbia accesso alla macchina..! 😉
E per l’accesso ai database come può essere gestita la cosa? Il decreto prevede anche questo aspetto….
“Tra gli accessi logici a sistemi e archivi elettronici sono comprese le autenticazioni nei confronti dei data base management systems (DBMS),
che vanno registrate.”
In ultimo, esiste qualche applicativo per leggere in maniera più chiara i log? 🙂
Grazie.
Per gli accessi ai db… dipende dal DBMS.
Con mysql una soluzione è quella descritta della name pipe, postgres e oracle dalla 10 in poi gestiscono il syslog nativamente.
Per altri casi occorre valutare dbms per dbms.
Per la reportistica io ho adottato phplogcon (www.phplogcon.org).
Saluti
Bello phplogcon ! 🙂 Grazie.
Per i database access è previsto qualcosa?
ah ah ah !!! dai non scherzare!! 🙂
Stiamo parlando di DBMS non di giochetti 🙂
cmq per access (che io sappia) non esiste nulla, e sinceramente non so neppure se rientra nel provvedimento.
Saluti
Blog interessante.Ho implementato come soluzione un server syslog-ng, e sui sistemi wndows server lo snare.Per l’interfaccia di log sto utilizzando un refuso di ex-colleghi ma presto provo phplogcon o splunk.
Ho comunque un problema: alcuni utenti hanno nella loro console mmc registrato il componente per gestire il dominio AD e lasciano la console sempre aperta visto che ci lavorano spesso.Il problema è dovuto al fatto che producono migliaia di righe di log (riferite a Login-Logoff).Come posso filtrare effettivamente gli accessi alle macchine da quelli “applicativi”?
Mi permetto di far notare che per mysql l’egrep va corredato dall’opzione –line-buffered altrimenti non funziona correttamente.
Grazie! Ho aggiornato il post. Saluti.
Altra cosa, se si usa la FIFO è necessario utilizzare un programma come unbuffer (del pacchetto expect), con l’opzione -p, per risolvere i problemi di buffering dei comandi in pipe. Quindi la riga diventa:
cat /var/log/mysql.log | egrep –line-buffered ‘Connect|Quit’ | unbuffer -p logger -p LOCAL1.info -t mysql &
Incredibile ma vero, su CentOS 5.4 esiste un problema di buffering, mentre su Ubuntu 10.04 no. Ho scoperto la causa dopo varie ore di lavoro.
Il problema consiste nel fatto che non viene loggato il Quit da mysql.
Indovinate perchè? E’ troppo corta la riga! Si risolve mettendo
sed -u -e ‘s/Quit/Quit ——————————-/g’
nella pipe, prima di passarla a logger.
Lo so, sembra più voodoo che informatica ma probabilmente esisterà una costante cablata da qualche parte, diversa per ogni distribuzione che definisce la quantità minima di caratteri prima dell’output.
Il comando completo diventa quindi, per CentOS:
cat /var/log/mysql.log | egrep –line-buffered ‘Connect|Quit’ | sed -u -e ‘s/Quit/Quit ——————————-/g’ | unbuffer -p logger -p LOCAL1.info -t mysql &
Ottimo articolo. Solo un commento: se il VPS da gestire sta in ARUBA per capirci (basic o professionale), chiudendo il codice di root (quindi lavorando solo con sudo -i, sudo -u) – non ho provato — presumo non ci sia nemmeno la possibilita’ di collegarsi alla porta 4643 con root per effettuare login, quindi monitorare il sistema e poi lanciare un backup.
E se ci fosse questa possibilita’ forse bisogna salvare anche i files di apache?
thanks
Intervento #65, admin dice:
“admin
Friday 30 April 2010 12:54
Questo è chiaro
L’amministratore può anche disabilitare i log, fare tutto quel che vuole e riattivare i log senza che nessuno sappia niente ”
qui c’e’ molto da discutere. Infatti io sono ‘fresco’ di un seminario tenuto presso l’ente dove lavoro e tutto e’ stato spiegato chiaramente da un legale esperto di informatica legale e consulente presso un Tribunale.
Lui dice che l’unico vero modo per garantire l’inalterabilità dei dati è quello di adottare sistemi di crittografazione a livello del KERNEL, il che significa che molti non potrebbero farlo in quanto nei VPS di norma questo non e’ possibile (se non sbaglio corriggeretemi, non son un papa) o comunque e’ a pagamento e magari e’ difficoltoso, ecc.
L’esperto legale ha affermato che utilizzando una chiave per la crittografazione e una chiave per la decrittografazione si puo’ fare e che se questa viene spedita a se stessi in busta chiusa e lettera raccomandata “mai aperta”, c’e’ la certezza e prova che l’ADS non e’ in grado di “aprire” i files e modificarli.
Certamente qualsiasi altra attività extra-kernel permette all’ADS di manomettere i files a piacimento, ad esempio prendere un file di log, togliere alcune righe per poi fare un md5 e salvarlo su un DVD non riscrivibile, ecc.
L’idea pero’ di fare una operazione notturna salvando i files di log e quindi in qualche modo “attestando” anche che l’utente root o altri in quello specifico momento non erano collegati e che quindi il documento e’ inalterato, per poi spedirlo crittografato altrove non e’ per niente male.
Thanks for comprehesive tutorial. Saved for future use
Le istruzioni per l’attivazione dello script legato al pipe generano errori sotto debian lenny; questa la riga per adattare lo script:
cat $pipe | egrep ‘.Connect|Quit.’ | logger -p local1.info -t mysql
(quindi niente -f o f come parametro ‘cat’ e apici per le condizioni egrep)
a me ora funziona
Un utente ha chiesto:
“Ciao, solo un informazione come si abilita l’audit di un file server?”
Altri problemi, registrati in numerose prove sotto DEBIAN LENNY; dando il comando:
cat $pipe | egrep ‘.Connect|Quit.’ | logger -p local1.info -t mysql
creata correttamente la pipe come da istruzioni, ogni volta il file viene ricorsivamente riempito con i contenuti precedenti. Non sembra una buona soluzione perche’ viene creato un file di log ENORME.
Scusa ma non capisco… la named pipe non è un file, ma un “buffer” temporaneo. Non può duventare enorme perchè non archivia nulla serve solo da “tramite” per il logger.
Ciao
Ma con “log=/var/log/mysql.log” io abilito il logging di tutto, query comprese.
Una roba del genere fa salire il carico di una macchina in modo esponenziale, o sbaglio ?
Se poi devo anche mettermi a filtrare Connect/Quit e inviarle ad un syslog centralizzato… è un bel costo in termini di risorse ! 🙂
hai ragione, purtroppo con mysql non ci sono alternative 🙁
Oggi ho sentito il garante della privacy e la risposta di base è:
C’è questa norma, va rispettata. Se con il prodotto che usi questo comporta una perdita di performance, forse è meglio pensare ad un altro sw.
Il problema è grande però: uno deve farsi il know-how, fare delle migrazioni, testare,
formare il personale, ecc… di sicuro aziende con Facebook in italia non potrebbero mai nascere…
Facebook uses MySQL to process 13 million queries per second
http://www.readwriteweb.com/hack/2010/11/facebook-mysql-scale.php
E questo dispiace, mette tristezza. Anche perchè personalmente trovo il tutto molto inutile. Basti pensare ad una sessione aperta sotto screen, server mysql sempre acceso, l’samministratore di sistema si logga quindi una volta all’anno, le query non vengono loggate, se uno vuol fare porcate le fa. Chi vuol essere in regola ha dei costi più.
Vabbeh scusa lo sfogo
https://code.google.com/p/memcached/wiki/NewProgrammingFAQ#How_do_I_authenticate?
Ovviamente questo da noi comporterebbe l’arresto…. 😀
Sto pensando di fare una patch per mysql versione italiota che preveda un sistema di logging specifico per certe utenze e con una facility apposita (solo Connect e Quit).
Penso sia la soluzione più efficace, se vi va poi vi passo il tutto e mi fate anche da betatester 😉
Hai perfettamente ragione!
è un provvedimento del tutto inutile.
Personalmente penso che l’amministratore di sistema (in quanto tale) possa fare TUTTO sui sistemi che gestisce e neppure un simile provvedimento glielo potrebbe impedire.
Basti pensare che se voglio fare un macello stacco il cavo di rete, stoppo il logger, faccio un gran macello e riattivo tutto.
E poi elimino tutti i log locali…
(giusto x fare un esempio)
Questa è una delle tante ca***te scritte da chi non ne sa nulla e vuole pararsi il cu*o.
Per la serie “la norma l’abbiamo fatta, se non è applicabile affari vostri”
bah….
scusa lo sfogo :-/
sarebbe una manna…
rimarrebbe il “problema” di doverla ricontrollare e riapplicare ad ogni aggiornamento rilasciato da mysql ufficiale.
Ma sarebbe una buona cosa.
Fammi sapere se procedi con l’idea, mi interesserebbe molto.
Saluti
Beh se riesco a fare la patch gliela sottopongo con la solita filosofia opensource per evitare di dover ricompilare il tutto ogni volta che escono aggiornamenti.
Sperando che gli oracoliani l’accettino 😉
Ciao,
ti ringrazio per l’articolo molto interessante.
Mi sorge però un dubbio: come faccio a discriminare gli accessi dei soli amministratori di sistema ? Se l’utente “pippo”, che fa parte del gruppo “wheel”, effettua un login sulla macchina linux “host”, nel log centralizzato vedo che l’utente “pippo” ha effettuato un accesso alla macchina “host”, ma nulla mi dice che “pippo” è un amministratore di quella macchina.
Saluti.
In effetti sono partito dal presuppostyo che un utente che fa login su una macchina e che è nel gruppo wheel (e quindi può fare sudo) sia anche amministratore di sistema.
Saluti
Buongiorno a tutti,
ho provato ad applicare la procedura per analizzare mysql ma quando creo lo script e lo inserisco nell’inittab ottengo questo errore:
init: Id “7” respawning too fast: disabled for 5 minutes
In pratica lo script viene eseguito continuamente creando tantissimi comandi “cat”.
Ho anche provato a rimuover il ciclo while attorno ma nulla, il problema rimane.
A voi non esce? Avete idee?
Grazie
IMHO questa è la classica/ennesima normativa all’italiana che si risolve un una sorta di autocertificazione
un merito però gli va riconosciuto
è nella direzione di rendere gli AmministraotriDelegati consapevoli dell’importanza del ruolo dell’amministratore di sistema
Solitamente questo ruolo è apprezzato solo quando si verifica una castrofe (dal punto di vista IT) e l’operatore di turno riesce a rendere nuovamente l’azienda operativa
mentre un SysAdmin veramente bravo che previene i punti di fail, viene considerato inutile
Ho lavorato in aziende assolutamente stupide da questo punto di vista
Spesso quando c’erano problemi oltre allo stress di sapere che l’azienda era ferma alla massima concentrazione epr diagnosticare il piu in fretta possibile il problema e al tempo stesso cercare la soluzione che ofsse piu rapida da mettere in pratica e meno invasiva, ti ritorvari il figlio del titolare che ti urlava addosso di sbrigarti perchè l’azienda era ferma
in un azienda di servizi del terziario avanzato gli amministratori di sistema dovrebbero avere un ruolo pari a quello del responsabile qualità in un azienda dell’industria manifatturiera