Bonjour à tous, la semaine dernière je vous ai partagé une configuration rsyslog pour recevoir, écrire dans des fichiers tampon et re-forwarder des logs vers d’autres sources. Cette semaine, on refait la même chose avec la modification et stockage des logs avec syslog-ng.
Et vous allez voir, c’est quasiment la même chose.
Syslog-NG ?
Syslog-ng est une alternative « semi-opensource » à rsyslog pour gérer vos syslog. Il remplace rsyslog si vous l’installer sur votre Debian par exemple. Le produit est disponible sous licence LGPL en version Community et vous pouvez y ajouter des licences premium (payantes) pour avoir des consoles de gestion ou des Appliances spécifiques incluant de la recherche dans vos log (micro SIEM).
La solution est plus récente que rsyslog et est donc un poil plus facile à aborder (notamment au niveau des fichiers de confs) et la présence d’une version payante permet de s’appuyer sur le support éditeur en production (toujours souhaitable). En revanche c’est un poil moins connus dans la communauté et il peut parfois être plus dur de trouver de la ressources documentaires (la où rsyslog en a trop de son côté et pour 40 version différentes…^^)
Installation et configuration.
Bref, on veut ici utiliser syslog-ng pour recevoir et gérer la modification et le stockage des logs avec syslog-ng. Il faut commencer par un simple :
apt-get install syslog-ng
pour l’installer sur votre Debian. Ensuite il vous faudra simplement éditer le fichier confifuration /etc/syslog-ng/syslog-ng.conf
avec votre éditeur préféré (.e vim 🙂 )
... # Ajouter un port réseau en écoute. source s_net { tcp(ip(0.0.0.0) port(10514)); }; ... # version un fichier de log par heure destination d_syslogtest { file("/var/log/syslogng-remote/$YEAR-$MONTH-$DAY-$HOUR-mysource.log"); }; ... # filtre par défaut filter f_syslogtest { not facility(auth, authpriv, mail) and not filter(f_debug); }; ... # réécriture des log key=value en csv like. rewrite r_rewrite_format{ subst("reason=", "", value("MESSAGE"),flags("global","ignore-case")); subst("event_id=", ",", value("MESSAGE"),flags("global","ignore-case")); subst("protocol=", ",", value("MESSAGE"),flags("global","ignore-case")); subst("action=", ",", value("MESSAGE"),flags("global","ignore-case")); subst("\t", "", value("MESSAGE") flags(global)); }; ... # lié toutes les configuration pour gérer ces logs. log { source(s_net); rewrite (r_rewrite_format); filter(f_syslogtest); destination(d_syslogtest); };
Enfin n’oubliez pas d’ajouter dans votre crontab le nettoyage régulier de vos fichiers au risque de saturer le disque…
#penser au nettoyage find /var/log/syslogng-remote -name "*.log" -type f -mmin +1440 -delete
Enfin si vous souhaiter re-forwarder ces logs vers d’autres serveurs. Il suffit simplement de rajouter autre configuration de destination.
Conclusion
Voilà, comme quoi c’est tout simple la modification et stockage des logs avec syslog-ng. Si vous êtes habitué à jardiner dans des fichiers de conf c’est assez logique et plus intuitif que Syslog. Je vous invite à geeker un peu sur syslog-ng du coup. C’est un bon produit !