Upload
eligio-caselli
View
217
Download
5
Tags:
Embed Size (px)
Citation preview
File di log: importanza e analisi
Seconda parte
Yvette ‘vodka’ [email protected]
Valerio ‘Hypo’ [email protected]
Secure Remote Log ServerIntroduzione
DIFFUSIONEINTERNET
BANDALARGA
COSTIRIDOTTI
AUMENTO LIVELLO MEDIO
KNOWLEDGE+ + +
INCREMENTO DIHACKERSCRACKERS
SCRIPT KIDDIES
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
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
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
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
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
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
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.
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
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
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
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
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
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