File di log:
importanza e analisi
Seconda parte
Yvette ‘vodka’ Agostini
[email protected]
Valerio ‘Hypo’ Verde
[email protected]
Secure Remote Log Server
Introduzione
DIFFUSIONE
INTERNET
+
BANDA
LARGA
+
COSTI
RIDOTTI
INCREMENTO DI
HACKERS
CRACKERS
SCRIPT KIDDIES
+
AUMENTO
LIVELLO
MEDIO
KNOWLEDGE
Secure Remote Log Server
Introduzione
Chi si occupa della sicurezza di una rete o dell’amministrazione
dei server DEVE poter tracciare :
intrusioni andate a buon fine
tentate intrusioni
modifiche 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 Server
Cosa è 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ù semplice
analisi real-time dei log
report periodico delle attività delle macchine
archiviazione e backup dei log
Secure Remote Log Server
Installazione ideale
Tutte le macchine da controllare devono inviare i log ad una
macchina remota
Semplifica l’amministrazione e il controllo delle macchine
Rende vani i tentativi di un attacker di cancellare i log sulla macchina locale
Inviare i log in maniera crittografata
Avendo 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 sicuro
Il log server dovrebbe essere accessibile solo da console
In nessun caso dovrebbe avere servizi aperti verso l’esterno
I log sul log server devono essere organizzati
Una 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 attacker
La 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 Server
Cosa 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 Server
I client - libol
Prepariamo la macchina client generica
Effettuare il download delle libol necessarie a syslog-ng
http://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 Server
I 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 Server
I client - /etc/services
Editare il file /etc/services ed aggiungere :
appsrv
appsrvs
666/tcp
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 syslogng
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 Server
I client - configurazione di syslog-ng
Eliminare syslog dagli script di startup
Copiare 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 Server
I client - configurazione di stunnel
stunnel è un programma che consente di crittografare
connessioni TCP arbitrarie tramite SSL, che si appoggia ad
OpenSSL o SSLeay
Syslog-ng
locale
Stunnel
locale
SSL
Stunnel
remoto
Syslog-ng
remoto
In particolare verrà utilizzato per poter inviare i messaggi di log
tra la macchina client e la macchina server, in maniera sicura
Secure Remote Log Server
I 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 boot
stunnel -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 Server
Il 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/syslogremote/$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/syslogremote/nomehost/nomefacility
Secure Remote Log Server
Il 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 boot
stunnel -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
Contacts
Per contattarci :
Yvette “Vodka” Agostini
[email protected]
Amodiovalerio “Hypo” Verde
[email protected] - [email protected]
Greetings
Greetings 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
Scarica

secure remote log server