Centraliser les logs de plusieurs machines sur un syslog central

Nous avons deux machines A (l'entrepot) et B (le client). B souhaite envoyer ses logs sur A. Voici la configuration:

Machine A: l'entrepot

A est un serveur sous Debian Lenny sur lequel nous allons dire à syslogd de mettre un port en écoute. Cela se fait dans /etc/default/syslogd/:

 10 #
 11 # For remote UDP logging use SYSLOGD="-r"
 12 #              
 13 SYSLOGD="-r"

On relance le demo avec le script dans init.d

# /etc/init.d/sysklogd restart

Et on voit ainsi un port UDP en écoute:

# netstat -taupen|grep syslog
udp   0  0 0.0.0.0:514   0.0.0.0:*       0        3847879    2172/syslogd

Ne pas oublier d'ouvrir le firewall pour accepter les paquets entrant vers le port 514 (depuis les sources identifiées évidemment).

Machine B: le client

Sur le client, on va copier toutes les entrées syslog du fichier /etc/syslog.conf et remplacer le fichier de destination par l'adresse de la machine A:

Ca donne, sur Debian Etch, un fichier qui a cette tête là:

############## REMOTE SYSLOG ############################
# copy everything from the above to machineA.reseau.com  
#  
# First some standard logfiles.  Log by facility.  
#  
 
auth,authpriv.*        @machineA.reseau.com  
*.*;auth,authpriv.none -@machineA.reseau.com 
 
daemon.*               -@machineA.reseau.com 
kern.*                 -@machineA.reseau.com 
lpr.*                  -@machineA.reseau.com 
mail.*                 -@machineA.reseau.com 
user.*                 -@machineA.reseau.com 
uucp.*                  @machineA.reseau.com  
 
#  
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#  
mail.info              -@machineA.reseau.com 
mail.warn              -@machineA.reseau.com 
mail.err                @machineA.reseau.com  
 
# Logging for INN news system 
#  
news.crit              @machineA.reseau.com  
news.err               @machineA.reseau.com  
news.notice            -@machineA.reseau.com 
 
#  
# Some `catch-all' logfiles.  
#  
*.=debug;\  
  auth,authpriv.none;\  
  news.none;mail.none  -@machineA.reseau.com 
*.=info;*.=notice;*.=warn;\
  auth,authpriv.none;\  
  cron,daemon.none;\ 
  mail,news.none       -@machineA.reseau.com 

De même ici, on ouvre le firewall pour sortir vers le port UDP/514 de machine A.

Reste à relancer syslogd:

# /etc/init.d/sysklogd restart

Test de bon fonctionnement

De retour sur la machine A, utiliser tcpdump pour vérifier que B envoi bien ses logs. Par exemple, quand je me log en SSH sur la machine B, la machine A reçoit:

# tcpdump -Svni eth0 -s 1500 udp and port 514

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes

11:11:02.039673 IP (tos 0x0, ttl 55, id 0, offset 0, flags [DF], proto UDP (17), length 109) 11.22.33.44.514 > 10.12.88.55.514: SYSLOG, length: 81
        Facility auth (4), Severity info(6)
        Msg: sshd[27827]: Accepted password for admin from 10.12.88.55 port 35439 ssh2\012

11:11:02.043547 IP (tos 0x0, ttl 55, id 0, offset 0, flags [DF], proto UDP (17), length 97) 11.22.33.44.514 > 10.12.88.55.514: SYSLOG, length: 69
        Facility auth (4), Severity info (6)
        Msg: sshd[27831]: (pam_unix) session opened for user toto by (uid=0)\012
fr/ressources/astuces/cental_syslog.txt · Last modified: 2011/03/16 01:41 (external edit)
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0