Vincenzo Ingrosso Weblog
  • System Admin
  • Random Post
  • Authors
  • Become an Author
  • Messages Box
  • Crumbs!
  • Privacy Policy
  • About me
  • Contact
Facebook Page
  • Authors
  • Become an Author
  • Messages Box
  • Crumbs!
  • Privacy Policy
3 Likes
0 Followers
28 Followers
Iscriviti
Vincenzo Ingrosso Weblog
Vincenzo Ingrosso Weblog
  • System Admin
    • Debian & Sysadmin
    • Server
    • Bash
    • Ispconfig
    • Mac OSX
  • Random Post
  • About me
  • Contact
  • Bash
  • Debian & Sysadmin

syslog-ng: Setting up a Remote Logging Server and Client

  • 4 Dicembre 2013
  • Vincenzo Ingrosso
Total
1
Shares
0
0
1

Per chi volesse un server sicuro esistono migliaia di guide e opinioni su come proteggerlo al meglio. Una cosa che il sistema deve di certo fare è quella di registrare tutte
Install and setup syslog-ng le operazioni che vengono svolte; questo per avere da un lato informazioni utili per risolvere eventuali malfunzionamenti e dall’altro canto per avere uno strumento di controllo contro attacchi o tentativi di intrusione.

Syslog-ng monitorerà i nostri server in locale e con una corretta configurazione duplicherà i log su un server centrale in remoto.

Quindi qualora uno sconsiderato nullafacente decidesse di condurre un attacco verso uno dei nostri server potrà di certo nascondere al meglio le proprie tracce, cancellando i segni del proprio operato dai file di log ma dovrà fare altrettanto su un secondo server! È difficile scampare ad un attacco ben congegnato, ma almeno rendiamogli la vita difficile!

Abbiamo già anticipato la nostra scelta per quanto riguarda il log-server che utilizzeremo per il nostro scopo, vale a dire syslog-ng sia per l’ottima granularita’ nella definizione delle regole di filtraggio, che per la disponibilita’ di maggiore documentazione.

Installiamo su ogni macchina il nostro pacchetto:

apt-get install syslog-ng

questo rimuoverà rsyslog. Fate attenzione quindi!!!

Syslog-ng lavora secondo un semplice schema: il log di una determinata sorgente viene filtrato e inviato ad una destinazione. Se questo non vi appare complicato leggere il file di configurazione non sarà assolutamente difficile.

Cosa ho fatto quindi: sul quello che sarà il server centrale di raccolta dei log degli altri server ho aggiunto una sorgente che arriva dalla rete, ho usato gli stessi filtri del sistema locale e ho indirizzato il tutto verso dei file posti in cartelle separate per ogni client-server.

Chiamiamo il server remoto di salvataggio dei log “central.example.com” e diamo ai vari server i nomi “client1.example.com”, “client2.example.com” … “client4.example.com” e così di seguito.

Apriamo il file di configurazione posto nella cartella /etc/syslog-ng/ sul server “central” e aggiungete del righe evidenziate. Non ci dovrebbe esseri grossi problemi a capirle:

...

# First, set some global options.
options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no);
	  owner("root"); group("adm"); perm(0640); stats_freq(0);
	  bad_hostname("^gconfd$");
	  keep_hostname(yes);
	  chain_hostnames(on);
	  create_dirs(yes);
};

...

source s_net { tcp( ip(192.168.1.50) port(1000) keep-alive (yes)); };

...

destination net_auth { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/auth.log"); };
destination net_cron { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/cron.log"); };
destination net_daemon { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/daemon.log"); };
destination net_kern { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/kern.log"); };
destination net_lpr { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/lpr.log"); };
destination net_mail { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/mail.log"); };
destination net_syslog { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/syslog"); };
destination net_user { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/user.log"); };
destination net_uucp { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/uucp.log"); };
destination net_mailinfo { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/mail.info"); };
destination net_mailwarn { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/mail.warn"); };
destination net_mailerr { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/mail.err"); };
destination net_newscrit { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/news/news.crit"); };
destination net_newserr { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/news/news.err"); };
destination net_newsnotice { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/news/news.notice"); };
destination net_debug { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/debug"); };
destination net_error { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/error"); };
destination net_messages { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/messages"); };
destination net_ppp { file("/var/log$HOST/$YEAR/$MONTH/$DAY/ppp.log"); };

...

log { source(s_net); filter(f_auth); destination(net_auth); };
log { source(s_net); filter(f_cron); destination(net_cron); };
log { source(s_net); filter(f_daemon); destination(net_daemon); };
log { source(s_net); filter(f_kern); destination(net_kern); };
log { source(s_net); filter(f_lpr); destination(net_lpr); };
log { source(s_net); filter(f_syslog3); destination(net_syslog); };
log { source(s_net); filter(f_user); destination(net_user); };
log { source(s_net); filter(f_uucp); destination(net_uucp); };
log { source(s_net); filter(f_mail); destination(net_mail); };
log { source(s_net); filter(f_news); filter(f_crit); destination(net_newscrit); };
log { source(s_net); filter(f_news); filter(f_err); destination(net_newserr); };
log { source(s_net); filter(f_news); filter(f_notice); destination(net_newsnotice); };
log { source(s_net); filter(f_debug); destination(net_debug); };
log { source(s_net); filter(f_error); destination(net_error); };
log { source(s_net); filter(f_messages); destination(net_messages); };
log { source(s_net); filter(f_console); destination(d_console_all); destination(d_xconsole); };
log { source(s_net); filter(f_crit); destination(d_console); };

...

Nelle prime righe di opzione generale è importante il create_dirs!

Non ho aggiunto filtri particolari, ho fatto riferimento a quelli già presenti. Inoltre ho utilizzato le macro proprie di syslog-ng per categorizzare in sotto cartelle i file di log ($HOST $YEAR $MONTH $DAY). Date uno sguardo anche a qualche destinazione particolare e cioè: destination(d_console_all); destination(d_xconsole) con l’uso di questi parametri si indirizzano i messaggi in console dei client sulla console del server in tempo reale!

Fatto riavviate il demone perché si possa mettere in ascolto sulla porta 1000 in attesa dei log dei client.

/etc/init.d/syslog-ng restart

Passiamo ai “clients”. In linea geniale questi non dovranno fare altro che destinare i log verso il server remoto. Quindi aggiungeremo al file di configurazione dei client una direttiva “log” che indirizzi gli stessi messaggi delle sorgenti in locale verso una destinazione remota.

Aggiungete al file di configurazione di ogni server-client due righe simili:

...

destination d_net { tcp( "192.168.1.50" port(1000) log_fifo_size(1000) ); };
# All messages send to a remote site
#
log { source(s_src); destination(d_net); };

...

Riavviate tutti i demoni dei client perché aprano la connessione verso il nostro server di log centralizzato:

/etc/init.d/syslog-ng restart

Se tutto è andato a buon fine potrete notare che nella cartella /var/log sul server “central.example.com” si è create un altero di directory simili a questa

# tree /var/log/client1
/var/log/client1
└── 2013
    └── 12
        ├── 03
        │   ├── auth.log
        │   ├── cron.log
        │   ├── daemon.log
        │   ├── debug
        │   ├── error
        │   ├── kern.log
        │   ├── mail.log
        │   ├── messages
        │   ├── syslog
        │   └── user.log
        ├── 04
        │   ├── auth.log
        │   ├── cron.log
        │   ├── daemon.log
        │   ├── debug
        │   ├── error
        │   ├── kern.log
        │   ├── mail.log
        │   ├── messages
        │   ├── syslog
        │   └── user.log
        └── 05
            ├── auth.log
            ├── cron.log
            ├── daemon.log
            ├── debug
            ├── error
            ├── kern.log
            ├── mail.log
            ├── messages
            ├── syslog
            └── user.log

5 directories, 30 files

NOTA: tutte le macchine sono poste sotto una VPN per questo non mi sono preoccupato di criptare nuovamente lo scambio dei log. Diversamente avremmo dovuto non solo pensare ad utilizzare un protocollo TLS di cifratura del messaggio ma anche un sistema di mutua autenticazione fra client-server basato su certificati x509.

ATTENZIONE: la macchina “central.example.com” deve essere particolarmente protetta contro un eventuale attacco. Mi spiego: non è che tante volte la password di root dei server-client è uguale a quella del server-central? Tutto questo lavoro sarebbe assolutamente vanificato da errori così grossolani!!!

Total
1
Shares
Share 0
Tweet 0
Pin it 1
Related Topics
  • daemon
  • log
  • server
  • setup
  • shell
Vincenzo Ingrosso

Sono un lavoratore in-dipendente. Non ho titoli di studio che possano testimoniare le mie conoscenze in ambito informatico, ma sono dietro una tastiera dal '95. La mia prima distribuzione linux è stata RedHat, per passare nel giro di tre mesi a Slackware con la quale ho convissuto per circa 13 anni. Ad un certo punto ho realizzato Sflack, vale a dire Slackware Linux a 64bit puri, senza quindi utilizzo di multi-lib. Successivamente per mancanza di tempo e per comodità sono passato a Debian. Oggi lavoro davanti ad un iMac, ho una famiglia e mi occupo di tutt'altro.

Articolo Precedente
  • Random Post

Slackware 14.1 is released!

  • 9 Novembre 2013
  • Vincenzo Ingrosso
Visualizza Post
Articolo Successivo
  • Debian & Sysadmin
  • Ispconfig

sieve: howto postfix/dovecot in ispconfig3 environment

  • 17 Luglio 2014
  • Vincenzo Ingrosso
Visualizza Post
You May Also Like
Visualizza Post
  • Bash
  • Debian & Sysadmin
  • Server

Initramfs: install sshd to remote access

  • Vincenzo Ingrosso
  • 17 Luglio 2017
Visualizza Post
  • Bash
  • Debian & Sysadmin
  • Server

OpenVPN: setup guide on Debian (routed and bridged VPN)

  • Vincenzo Ingrosso
  • 22 Luglio 2015
Visualizza Post
  • Bash
  • Debian & Sysadmin
  • Server

Debian: from Wheezy (7.0) to Jessie (8.0)

  • Vincenzo Ingrosso
  • 14 Luglio 2015
Visualizza Post
  • Bash
  • Debian & Sysadmin
  • Server

Intrusion Detection System: Setup Arno’s Iptables Firewall, Port Scan Attack Detector, Firewall Snort

  • Vincenzo Ingrosso
  • 11 Luglio 2015
Visualizza Post
  • Bash
  • Debian & Sysadmin

WordPress: Disable or Enable All Plugins

  • Vincenzo Ingrosso
  • 9 Luglio 2015
Visualizza Post
  • Debian & Sysadmin
  • Ispconfig

Snippets: ISPConfig directive for nginx

  • Vincenzo Ingrosso
  • 8 Luglio 2015
Visualizza Post
  • Bash
  • Debian & Sysadmin

uTorrent®: howto install and setup utserver in Debian Wheezy

  • Vincenzo Ingrosso
  • 1 Luglio 2015
Visualizza Post
  • Bash
  • Debian & Sysadmin
  • Ispconfig

Ispconfig : how to migrate from Apache to nginx

  • Vincenzo Ingrosso
  • 17 Ottobre 2014
  • Initramfs: install sshd to remote access

    Visualizza Post
  • OpenVPN: setup guide on Debian (routed and bridged VPN)

    Visualizza Post
  • Debian: from Wheezy (7.0) to Jessie (8.0)

    Visualizza Post
  • Intrusion Detection System: Setup Arno’s Iptables Firewall, Port Scan Attack Detector, Firewall Snort

    Visualizza Post
  • WordPress: Disable or Enable All Plugins

    Visualizza Post
Facebook Page
Instagram
#yamaha #moto #motorcycle #motogp #honda #motorbike #bike #ducati #suzuki #kawasaki #italy #ktm #bikelife #biker #instamoto #racing #bikeporn #photooftheday #instagood #46 #motocross #ride #picoftheday #love #photography #scorpionsports #fabioquartararo #yamahar1 #yamahar1m
#r1 #yamahar1 #r1m #superbike #sbk
#r1m #yamahar1 #yamaha #wer1 #riderich #sportbike #sportbikes #bikersofinstagram #bikerboysofinstagram #sportbikelife #fastbikes #sportbikesaddicts #bikefam
#sportbike #superbikes #yamaharacing #motor #yamahayzfr #kawasakininja #ninja #sportbike #superbikes #yamaharacing #cc #indonesia #motor #yamahayzfr #kawasakininja #ninja
#sportbike #superbikes #yamaharacing #motor #yamahayzfr #kawasakininja #ninja #sportbike #superbikes #yamaharacing #cc #indonesia #motor #yamahayzfr #kawasakininja #ninja #superbikesgram #bmws #motorcycles #panigale #bikers #duke #yamahamotogp #suzukigsxr #riders #vr #bikeporn #rider #ktmduke #racing #italy #agv #instamoto #bikes
Segui
TRENDING POSTS
  • Initramfs: install sshd to remote access
    • 17 Luglio 2017
  • OpenVPN: setup guide on Debian (routed and bridged VPN)
    • 22 Luglio 2015
  • Debian: from Wheezy (7.0) to Jessie (8.0)
    • 14 Luglio 2015
  • Intrusion Detection System: Setup Arno’s Iptables Firewall, Port Scan Attack Detector, Firewall Snort
    • 11 Luglio 2015
  • WordPress: Disable or Enable All Plugins
    • 9 Luglio 2015
Legalese
Licenza Creative Commons

Questo Blog di Vincenzo Ingrosso è distribuito con Licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 4.0 Internazionale.
Debian
FOLLOW ME
Facebook 3 Likes
Instagram 0 Followers
Twitter 28 Followers
#yamaha #moto #motorcycle #motogp #honda #motorbike #bike #ducati #suzuki #kawasaki #italy #ktm #bikelife #biker #instamoto #racing #bikeporn #photooftheday #instagood #46 #motocross #ride #picoftheday #love #photography #scorpionsports #fabioquartararo #yamahar1 #yamahar1m
#r1 #yamahar1 #r1m #superbike #sbk
#r1m #yamahar1 #yamaha #wer1 #riderich #sportbike #sportbikes #bikersofinstagram #bikerboysofinstagram #sportbikelife #fastbikes #sportbikesaddicts #bikefam

Let's keep in touch

Subscribe now to my newsletter

about
Vincenzo Ingrosso

About the site

Sono un lavoratore in-dipendente. Non ho titoli di studio che possano testimoniare le mie conoscenze in ambito informatico, ma sono dietro una tastiera dal '95. La mia prima distribuzione linux è stata RedHat, per passare nel giro di tre mesi a Slackware con la quale ho convissuto per circa 13 anni. Ad un certo punto ho realizzato Sflack, vale a dire Slackware Linux a 64bit puri, senza quindi utilizzo di multi-lib. Successivamente per mancanza di tempo e per comodità sono passato a Debian. Oggi lavoro davanti ad un iMac, ho una famiglia e mi occupo di tutt'altro.
Victoria’s Secret

Recent Posts
  • Initramfs: install sshd to remote access
    • 17 Luglio 2017
  • OpenVPN: setup guide on Debian (routed and bridged VPN)
    • 22 Luglio 2015
  • Debian: from Wheezy (7.0) to Jessie (8.0)
    • 14 Luglio 2015
Vincenzo Ingrosso Weblog
  • System Admin
  • Random Post
  • About me
  • Contact
... I follow my passion ...

Inserisci la chiave di ricerca e premi invio.