debian syslog Nous avons deux machines A (l'entrepot) et B (le client). B souhaite envoyer ses logs sur A. Voici la configuration:
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).
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
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