SERVEUR RSYSLOG
Table des matières
1. Préambule ............................................................................................................................................. 2
2. Pré-requis .............................................................................................................................................. 2
3. Installation et configuration du serveur ................................................................................................ 3
3.1. Installation ......................................................................................................................................... 3
3.1.1. Rsyslog ........................................................................................................................................... 3
3.1.2. php-syslog-ng ................................................................................................................................ 3
3.2. Configuration ..................................................................................................................................... 4
3.2.1. Déviation vers une base de données mysql .................................................................................. 4
4. Installation et configuration du client ................................................................................................... 6
4.1. Machine cliente Linux........................................................................................................................ 6
4.2. Machine cliente Windows ................................................................................................................. 6
4.3. Périphériques réseaux ....................................................................................................................... 7
5. Tests de la configuration ....................................................................................................................... 7
6. Pour aller plus loin ................................................................................................................................. 7
6.1. Mise en place de filtres ..................................................................................................................... 7
6.2. Utilisation de TCP comme méthode d'échange ................................................................................ 8
6.3. Mise en place de rotation des logs.................................................................................................... 9
7. Sources ................................................................................................................................................ 11
1. Préambule
rsyslog fonctionne en 2 partie. Un serveur ainsi qu'un client. Le client peut-être soit à
installer manuellement soit déjà implémenté dans certains systèmes tel que les routeurs,
téléphones IP et autres périphériques réseaux.
Dans ce tutoriel nous installerons rsyslog ainsi que php-syslog-ng qui va nous permettre
d'obtenir une interface de gestion de nos logs qui seront stockés dans une base de données
MySql
2. Pré-requis
- 1 Serveur Linux (debian Squeeze dans le cadre ce tutoriel) avec un LAMP fonctionnel
2|Page
http://www.webprk.net
3. Installation et configuration du serveur
3.1. Installation
3.1.1.Rsyslog
3.1.2. php-syslog-ng
Créez une base de données au préalable dans Mysql qui sera dédié à php-syslog-ng
Une fois décompressé, ouvrez votre navigateur web pour passer à l'installation de php-
syslog-ng en vous plaçant dans le répertoire http://[ip_de_votre_serveur]/html/install/
Suivez les étapes de l'installation. Aucune particularité n'est à signaler dans ce processus.
N'oubliez pas comme indiqué dans la dernière étape de l'installation de supprimer le répertoire
install.
3|Page
http://www.webprk.net
3.2. Configuration
Supprimez les commentaires sur les entrées suivantes afin de permettre la réception de syslog
via le protocole TCP et UDP.
Votre serveur est désormais prêt à recevoir des paquets syslog via le port TCP/UDP 514.
Nous activerons ces 2 protocoles car en fonction de l'implémentation de syslog, il ne vous sera
pas toujours possible de recourir au protocole TCP.
Nous allons maintenant nous attaquer au plus intéressant. La déviation des logs
récupérés dans la base de données Mysql de php-syslogg-ng.
Pour se faire, rsyslog offre un système de template que l'on peut enclencher dès lors
qu'un log correspond à la règle où vous souhaitez appliquer le template.
*.* :ommysql:[server],[dbname],[user],[passwd]
http://www.webprk.net
logs(host,facility,priority,level,tag,datetime,program,msg)
VALUES ('%HOSTNAME%', '%syslogfacility-text%',
'%syslogpriority-text%', '%syslogseverity-text%',
'%syslogtag%','%timereported:::date-mysql%','%programname%',
'%msg%')",SQL
*.* >[server],[dbname],[user],[password];syslogNg
Vous devriez voir dès à présent des lignes dans votre interface php-syslog-ng. Si ce n'est pas le
cas générez du log en démontant remontant votre carte réseau par exemple :
Si vous n'avez toujours pas de log dans votre base vérifiez bien la syntaxe du template.
(j'ai rencontré beaucoup de soucis mais celui que je vous fourni est fonctionnel. Je préconise
d'insérer le template sur une seule ligne).
Exemple :
5|Page
http://www.webprk.net
4. Installation et configuration du client
Une fois que votre serveur est prêt nous allons passer à la configuration du client.
*.* @[ip_serveur]:[port]
Cette directive va indiquer à rsyslog de forwarder tous les logs qu'il acquiert au serveur
mentionné via le port indiqué.
Il est possible d'appliquer des filtres afin de ne pas tout rediriger. Ce point sera abordé plus loin
dans ce document.
Afin de pouvoir remonter des journaux d'évènement d'un système Windows sur notre
serveur syslog il existe différentes applications. Ayant réellement testé EventReporter mais qui
est toutefois payant, je préfère compléter cette partie plus tard une fois que j'aurais trouvé un
freeware ou un soft openSource pour une tâche équivalente.
Voici toutefois les liens nécessaires que j'ai suivis pour l'installation :
http://www.eventreporter.com/en/
http://www.mwagent.com/sub-articles/centralized-logging-in-a-hybrid-environment-
windowslinux-step-3/
6|Page
http://www.webprk.net
4.3. Périphériques réseaux
5. Tests de la configuration
Afin de tester notre configuration nous allons générer du log à partir de notre machine
cliente pour cela exécutez simplement la commande suivante :
Consultez dès lors vos logs depuis phpsyslog-ng et vérifiez que des logs de votre machine
cliente sont présents.
Si ce n'est pas le cas vérifiez que vous avez bien activé l'écoute des ports sur votre
serveur (point 3) et que votre client est bien configuré (point 4).
En enregistrant tous les logs dans votre base de données vous allez vous apercevoir que
le volume va croître très rapidement surtout si votre serveur est la référence de nombreux
périphériques (routeurs, téléphones, serveurs, stations clientes).
La mise en place de filtres permet en plus de réduire le volume de votre base de données
permet aussi de ne remonter à votre serveur que certains types de logs que l'on peut
sélectionner par :
Type d'application
7|Page
http://www.webprk.net
Criticité de l'événement
Ainsi il est par exemple possible de remonter uniquement les événements dont la criticité
est supérieure ou égale à un avertissement.
Les événements d'information qui ne sont pas source potentielle de problème ne seront
donc pas remontés.
Il est toutefois recommandé de conserver les journaux d'un système sur un seul système.
Pour plus de détails sur la mise en place de filtres consultez le lien suivant :
http://www.rsyslog.com/doc/rsyslog_conf_filter.html
Voici un exemple simple de mise en place de filtre sur notre prédicat précédent :
*.warn @[ip_de_votre_serveur]
Il faut veiller au préalable que votre serveur syslog puisse accepter la communication en
TCP. Cette vérification se fait par le biais des directives suivantes dans rsyslog.conf
A ce stade le serveur est opérationnel pour écouter en TCP sur le port défini dans son fichier de
configuration.
Maintenant il faut configurer le client pour qu'il transmette en mode TCP ses paquets :
8|Page
http://www.webprk.net
# rsyslog va forwarder ses logs en TCP
*.* @@[ip_serveur]:[port]
Il est important de noter que certains périphériques réseaux n’implémentent pas le dialogue en
TCP. Par conséquent il est préférable de toujours écouter le port 514 en UDP.
Si vous souhaitez remonter des journaux depuis des périphériques propriétaires. Si ce n'est pas
le cas et que vous avez la main sur la configuration de syslog vous pouvez le désactiver.
Une base de données qui contient des logs de plusieurs système va grossir indéfiniment
c'est indéniable. C'est pourquoi il existe dans le package de php-syslog-ng un script
logrotate.php
Ce script va vous permettre de réaliser une purge de vos données de la base afin de ne
pas altérer les performances de votre base de données.
En fonction de votre utilisation des logs il est peut-être préférable de les sauvegarder
dans un script ou dans une requête SQL avant de les perdre définitivement.
9|Page
http://www.webprk.net
Il faut d'abord configurer le fichier config.php de php-syslog-ng situé dans le répertoire config :
define('LOGROTATERETENTION', 90);
Une fois votre valeur définie il vous faut planifier le rythme d'exécution du script
logrotate.php
sudo crontab -e
10 | P a g e
http://www.webprk.net
Ainsi votre base sera régulièrement purgée afin de ne pas faire croitre sa taille indéfiniment.
7. Sources
- http://wiki.rsyslog.com/index.php/Php-syslog-ng
- http://www.rsyslog.com/doc/manual.html
- http://www.deimos.fr/blocnotesinfo/index.php?title=Php-syslog-
ng_:_Interpr%C3%A9tation_des_logs_Syslog-ng_dans_une_interfa%C3%A7e_web
11 | P a g e
http://www.webprk.net