16
File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini [email protected] Valerio ‘Hypo’ Verde [email protected]

File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini [email protected] Valerio ‘Hypo’ Verde [email protected]

Embed Size (px)

Citation preview

Page 1: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

File di log: importanza e analisi

Seconda parte

Yvette ‘vodka’ [email protected]

Valerio ‘Hypo’ [email protected]

Page 2: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerIntroduzione

DIFFUSIONEINTERNET

BANDALARGA

COSTIRIDOTTI

AUMENTO LIVELLO MEDIO

KNOWLEDGE+ + +

INCREMENTO DIHACKERSCRACKERS

SCRIPT KIDDIES

Page 3: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerIntroduzione

Chi si occupa della sicurezza di una rete o dell’amministrazione dei server DEVE poter tracciare :intrusioni andate a buon finetentate intrusionimodifiche fatte dall’attacker al sistema violato

Il tracciamento dell’attività avviene anche e soprattutto tramite un analisi approfondita dei log di sistema, e quindi bisogna essere sicuri che i log siano validi e non siano stati modificati in alcun modo

In realtà quello che si vuole è una copia che sia sempre valida dei log, anche se venissero modificati localmente, cosa che di solito un attacker fa, in caso di intrusioni andate a buon fine, con lo scopo di rimanere nascosti all’admin della macchina

Page 4: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerCosa è un log server

L’utilizzo di un log server , ovvero una macchina che ha il solo e preciso compito di raccogliere i log di altre macchine, consente di avere una copia sicuramente valida dei log delle macchine che lo utilizzano

In tal modo, anche se l’attacker può modificare i log sulla macchina locale, ci sarà una copia non modificabile dei log sulla macchina remota, che non può essere ( o meglio, non dovrebbe ) essere raggiunta dall’attacker

Inoltre un sistema sicuro di remote logging, può migliorare e semplificare notevolmente la gestione centralizzata dei log di diverse macchine e anche l’analisi di eventuali intrusioni o tentativi di intrusione

Avendo un unico centro di raccolta, diventa più sempliceanalisi real-time dei logreport periodico delle attività delle macchinearchiviazione e backup dei log

Page 5: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerInstallazione ideale

Tutte le macchine da controllare devono inviare i log ad una macchina remotaSemplifica l’amministrazione e il controllo delle macchineRende vani i tentativi di un attacker di cancellare i log sulla macchina locale

Inviare i log in maniera crittografataAvendo una struttura centralizzata, dobbiamo evitare che i log possano essere intercettati, perché potrebbero fornire troppe informazioni utili ad un attacker

Il log server deve essere molto sicuroIl log server dovrebbe essere accessibile solo da consoleIn nessun caso dovrebbe avere servizi aperti verso l’esterno

I log sul log server devono essere organizzatiUna buona organizzazione consente di minimizzare il tempo per controllare i log

Non devo rischiare di perdere messaggi ( UDP vs TCP )Occorre minimizzare il rischio di perdere messaggi a causa di una rete congestionata o picchi di messaggi provenienti da più macchine

Invisibile ad un attackerLa presenza di un log server remoto dovrebbe non essere visibile ad un attacker in modo tale da poter continuare a monitorarlo fino a decisione contraria

Page 6: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerCosa occorre

Il nostro scopo è creare un secure remote log server e per farlo utilizzeremo syslog-ng e stunnel

syslog-ng ci consente di gestire in maniera semplice i log provenienti da diversi host, ed è la scelta ideale per un log server

Inoltre syslog-ng ci consente di inviare i log via TCP e non solo in UDP come syslogd, ed è quindi la scelta ideale anche per le macchine client

Stunnel ci consente di creare un tunnel SSL tra la macchina client e il log server, impedendo ad un attacker di capire che cosa sta passando tra le due macchine

NB Questa è una misura non definitiva, in quanto un attacker che abbia preso il controllo di una macchina, ha tutti gli strumenti per accorgersi che i log vengono inviati ad un log server

Page 7: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerI client - libol

Prepariamo la macchina client generica

Effettuare il download delle libol necessarie a syslog-nghttp://www.balabit.hu/en/downloads/syslog-ng/downloads/

Estrarre l’archivio, compilare e installare le libol eseguendo./configure && make && make install

In alternativa è possibile non installare le libol, compilandole solamente e specificando in fase di configure del syslog-ng il parametro --with-libol=/path/to/libol

Page 8: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerI client - syslog-ng

Effettuare il download di syslog-ng http://www.balabit.hu/en/downloads/syslog-ng/downloads/

Estrarre l’archivio ed editare il file src/syslog-ng.h modificando la linea#define PATH_SYSLOG_NG_CONF /etc/syslog-ng/syslog-ng.conf in qualcosa di un poco più nascosto tipo#define PATH_SYSLOG_NG_CONF /etc/.conf/default.conf

Il motivo per il quale modifichiamo da sorgente il file di configurazione, è quello di renderlo invisibile ad un ps.

Compilare e installare eseguendo./configure && make && make install

oppure nel caso non si siano installate le libol./configure --with-libol=/path/to/libok && make && make install

Page 9: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerI client - /etc/services

Editare il file /etc/services ed aggiungere :

appsrv 666/tcpappsrvs 1666/tcp

Sia i nomi che le porte sono del tutto arbitrarie. Usiamo un nome ed una porta non standard per lo stesso motivo per il quale abbiamo cambiato il file di configurazione di default di syslog-ng

Se un attacker che riesce a violare la macchina, esegue un ps, vedrà un tunnel con indicate porte e nomi che magari gli faranno pensare ad un application server.

Page 10: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerI client - configurazione di syslog-ng

Eliminare syslog dagli script di startupCopiare lo startup script di syslog-ng ( contrib/init.d* )Creare un file di configurazione di syslog-ng di base :

options { use_fqdn(yes); keep_hostname(yes); use_dns(yes);long_hostnames(off); sync(3); log_file_size(300); };

source client-01 { unix-stream (“/dev/log”); internal(); };

destination local { file (“/var/log/syslog”); };

destination remote { tcp(“localhost” port(1666)); };

log { source(client-01); destination(local); };

log { source(client-01); destination(remote); };

In questa maniera TUTTI i messaggi verranno loggati in /var/log/syslog e inviati a stunnel

Page 11: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerI client - configurazione di stunnel

stunnel è un programma che consente di crittografare connessioni TCP arbitrarie tramite SSL, che si appoggia ad OpenSSL o SSLeay

In particolare verrà utilizzato per poter inviare i messaggi di log tra la macchina client e la macchina server, in maniera sicura

Syslog-nglocale

Stunnellocale

Stunnelremoto

Syslog-ngremoto

SSL

Page 12: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerI client - configurazione di stunnel

Per poter installare stunnel occorrerà avere, sulle macchine client e sulla macchina server, OpenSSL o oppure in alternativa SSLeay

Effettuare il download di stunnel da [www.stunnel.org]

Estrarre e installare stunnel come di consueto :./configure && make && make install

Editare un file di init ( ad esempio rc.local ) per eseguire al bootstunnel -c -d 127.0.0.1:appsrv -r ip.log.server:appsrvs

Questo comando lancia stunnel in client mode, ascoltando connessioni sull’host 127.0.0.1 porta appsrv e rispedendole all’host ip.log.server porta appsrvs in modo crittografato

Page 13: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerIl server - libol e syslog-ng

Procediamo con il download e l’installazione delle libol e di syslog-ng come fatto con i client

Usare un file di configurazione di base :options { use_fqdn(yes); sync(0); use_dns(yes);

chain_hostnames(yes); keep_hostname(yes); log_fifo_size(1000);};

source locallog { unix-stream (“/dev/log”); internal(); };

source remotelog { tcp(ip(port(666) max-connections(10); };

destination local { file (“/var/log/syslog”); };

destination remote { file (“/var/log/syslog-remote/$HOST/$FACILITY” create_dirs(yes)); };

log { source(locallog); destination(local); };

log { source(remotelog); destination(remote); };

In questa maniera TUTTI i messaggi locali verranno loggati in /var/log/syslog e quelli remoti nella dir /var/log/syslog-remote/nomehost/nomefacility

Page 14: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

Secure Remote Log ServerIl server - configurazione di stunnel

Anche per stunnel eseguiamo la configurazione come per i client

Sul log server, stunnel gira in server mode, quindi occorrerà generare un certificato per stunnel

Editare un file di init ( ad esempio rc.local ) per eseguire al bootstunnel -p /path/del/certificato -d ip.log.server:667 -r

ip.log.server:666

Questo comando lancia stunnel in daemon mode, ascoltando connessioni sull’host 127.0.0.1 porta appsrvs e rispedendole all’host ip.log.server porta appsrv in modo non crittografato

Page 15: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

ContactsPer contattarci :

Yvette “Vodka” [email protected]

Amodiovalerio “Hypo” [email protected] -

[email protected]

Page 16: File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it

GreetingsGreetings goes to :

Tutta Sikurezza.org per la bella comunità

Tutto blackhats.it per esistere

Tutto s0ftpj perche’ non so perche’

Tutto il Webb.it per l’organizzazione ed il supporto

…e naturalmente a chi ci ha seguito fin qui