Table of Contents
Centraliser les logs de plusieurs machines sur un syslog central
debian syslog 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