Provvedimento del garante sugli Amministratori di sistema

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.*

yum install rsyslog*
vim /etc/sysconfig/rsyslog
sostituisco
SYSLOGD_OPTIONS=”-m 0″
con
SYSLOGD_OPTIONS=”-m 0 -r”
vim /etc/rsyslog.conf
###################################################
$template DynAuth, “/var/log/TUTTI/%$MONTH%/%$DAY%/%FROMHOST%.log”
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

cat /etc/syslog.conf

auth.*;authpriv.*;local1.*          @logserver.dominio

Su ogni server devo poi creare utenti PERSONALI da assegnare a tutti gli AdS:
useradd -G wheel -m -s /bin/bash username
passwd username
Aggiungo
AllowUsers username
in /etc/ssh/sshd_config
lancio
visudo
e aggiungo o decommento la riga seguente:
%wheel  ALL=(ALL)       ALL
In questo modo gli AdS dovranno loggarsi con il loro account ed usare sudo
(consiglio il sudo -i o sudo -u per diventare root)
Il vantaggio dell’uso di sudo sta nel fatto che ho potuto cambiare password a root e metterla in cassaforte senza la necessità di comunicarla a tutti gli AdS (dato che sudo permette di diventare root inserendo la propria password)

Abilitare il logging su Oracle 9i

mkdir /var/log/oracle/
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
Occorre poi creare un cron sul logserver che filtra solo i login/logout e prelevi i risultati.
Nella ver 9i infatti non è possibile inviare i log a un remote syslog

Abilitare il logging su Postgres

Modifico
/usr/local/pgsql/data/postgresql.conf
come segue:

log_destination = ‘syslog’

syslog_facility = ‘LOCAL1’
syslog_ident = ‘postgres’
log_connections = true
log_disconnections = true
log_duration = true
log_hostname = true

Abilitare il logging su MySql

Dato che mysql non supporta la scrittura di log su syslog si può risolvere nel seguente modo:

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

Per abilitare il logging sel mailserver:

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

Creo un nuovo oggetto:
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

95 risposte a “Provvedimento del garante sugli Amministratori di sistema”

  1. 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 :-))

    1. 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.

  2. 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

  3. 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.

  4. 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?

  5. per postgres devi aggiungere anche questo:

    log_destination = ‘syslog’
    perchè sul mio era configurato di default ‘stderr’ così è più completo 🙂

  6. 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?

    1. 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

  7. Ho qualche dubbio sull’utilizzo del syslog come accentratore dei log.. Questo salvandoli in un file di testo non ne garantisce l’immodificabilità..

    Ciao

    1. 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

  8. 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

    1. 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

  9. 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?

    1. @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

  10. 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

    1. 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

  11. 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ù…

    1. “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
      🙂

  12. 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…

  13. 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”)

    1. 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

  14. 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

    1. 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…

  15. Si ho files server, server di posta, etc. ma ogni volta che entro in una macchina comunque viene registrato l’accesso sul DC, quindi…

  16. 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 😉

    1. 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

  17. 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)…

  18. 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

    1. 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

  19. 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

    1. @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.

  20. 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

    1. 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

  21. 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

    1. @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.

  22. 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

    1. @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.

  23. 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

    1. @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

    1. @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.

  24. Ciao,
    ottima soluzione, dato che anche io sto seguendo lo stesso sistema 🙂

    Suggerimenti per configurare l’AS400 affinchè mandi messaggi al Syslog Server?

  25. 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

    1. @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

  26. 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

  27. 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.

  28. 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

  29. 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

  30. 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?

    1. La soluzione che ho adottato è phplogcon.
      In più, se il titolare lo richiede, può avere una copia su cd/dvd dei logfiles.
      Saluti

  31. 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

  32. Ciao, post grandioso! Lo script per l’immodificabilità dei log, può essere applicato con gli stessi comandi in ubuntu che tu sappia? Grazie

  33. 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?

    1. Questo è chiaro 🙂
      L’amministratore può anche disabilitare i log, fare tutto quel che vuole e riattivare i log senza che nessuno sappia niente 🙂

  34. E quindi non c’è una garanzia con questo sistema, giusto? Può essere comunque utilizzato?

    1. Secondo me non c’è garanzia con NESSUN sistema, perchè un amministratore può far tutto (nel bene e nel male) 🙂

  35. 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.

    1. 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

    1. 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

  36. 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”?

  37. 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 &

  38. 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 &

  39. 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

  40. 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.

  41. 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

  42. 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.

    1. 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

  43. 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 ! 🙂

  44. 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

    1. 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 :-/

  45. 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 😉

    1. 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

  46. 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 😉

  47. 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.

  48. 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

  49. 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

  50. 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

I commenti sono chiusi.