====== Centraliser les logs de plusieurs machines sur un syslog central ====== {{tag> 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