160 likes | 254 Views
File di log: importanza e analisi Seconda parte Yvette ‘vodka’ Agostini vodka@s0ftpj.org Valerio ‘Hypo’ Verde amover@libero.it. Secure Remote Log Server. Introduzione. DIFFUSIONE INTERNET. BANDA LARGA. COSTI RIDOTTI. AUMENTO LIVELLO MEDIO KNOWLEDGE. +. +. +.
E N D
File di log: importanza e analisiSeconda parteYvette ‘vodka’ Agostinivodka@s0ftpj.orgValerio ‘Hypo’ Verdeamover@libero.it
Secure Remote Log Server Introduzione DIFFUSIONEINTERNET BANDALARGA COSTIRIDOTTI AUMENTO LIVELLO MEDIOKNOWLEDGE + + + INCREMENTO DIHACKERSCRACKERSSCRIPT KIDDIES
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ù sempliceanalisi real-time dei logreport periodico delle attività delle macchinearchiviazione e backup dei log
Secure Remote Log Server Installazione 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 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-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 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 666/tcp appsrvs 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 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 In particolare verrà utilizzato per poter inviare i messaggi di log tra la macchina client e la macchina server, in maniera sicura Syslog-ng locale Stunnel locale Stunnel remoto Syslog-ng remoto SSL
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/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 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 vodka@s0ftpj.org Amodiovalerio “Hypo” Verde hypo@rtfm.it - amover@libero.it
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