Collecte de journaux réseau : Découverte du protocole Syslog
Quand vous gérez des dizaines ou des centaines de serveurs, surveiller chacun séparément devient impossible. La solution est la collecte centralisée des journaux à l'aide du protocole Syslog. Dans cet article, nous examinerons en détail comment il fonctionne et comment le configurer.
Qu'est-ce que Syslog ?
Syslog est un protocole standard pour la transmission de messages de journal au niveau système sur un réseau. Il permet de collecter les journaux de divers appareils et systèmes sur un seul serveur central. Ceci est particulièrement important pour :
- Réseaux d'entreprise
- Systèmes distribués
- Infrastructures cloud
- Surveillance de la sécurité
Histoire de Syslog
Le protocole Syslog a été développé dans les années 1980 par Eric Allman pour BSD Unix. Depuis, il est devenu la norme de facto pour la transmission de messages de journal dans les réseaux IP. En 2009, le RFC 5424 a été adopté, qui définit la version moderne du protocole.
Architecture de Syslog
Un système Syslog se compose de trois composants principaux :
- Client Syslog (originateur) — appareil ou application qui génère les messages
- Serveur Syslog (collecteur) — destinataire des messages
- Réseau — canal de transmission (généralement UDP ou TCP)
Format des messages Syslog
Chaque message Syslog se compose de trois parties :
PRI (Priorité)
Contient les informations sur la priorité du message :
<PRI>
PRI est calculé à l'aide de la formule : facility * 8 + severity, où :
- facility — source du message (0-23)
- severity — importance du message (0-7)
HEADER
Contient : - TIMESTAMP — heure de l'événement - HOSTNAME — nom d'hôte de l'expéditeur - APP-NAME — nom de l'application - PROCID — ID du processus - MSGID — ID du message
MSG
Contient : - STRUCTURED-DATA — paramètres structurés - MESSAGE — texte du message
Exemple d'un message complet :
<34>1 2026-03-03T15:00:00.123Z monserveur app 12345 ID47 [exampleSD@32473 iut="3" event="start"] Démarrage...
Niveaux de gravité
Syslog définit 8 niveaux de gravité :
- 0 — Emergency (situation d'urgence)
- 1 — Alert (nécessite une intervention immédiate)
- 2 — Critical (erreur critique)
- 3 — Error (erreur)
- 4 — Warning (avertissement)
- 5 — Notice (événement normal mais significatif)
- 6 — Informational (message informatif)
- 7 — Debug (message de débogage)
Codes de commodité (Facility)
La commodité (facility) définit la source du message :
- 0 — messages du noyau
- 1 — messages au niveau utilisateur
- 2 — système de messagerie
- 3 — démons système
- 4 — messages de sécurité/autorisation
- 5 — messages générés en interne par syslogd
- 6 — sous-système d'imprimante en ligne
- 7 — sous-système de nouvelles réseau
- 8 — sous-système UUCP
- 9 — démon d'horloge
- 10 — messages de sécurité/autorisation
- 11 — démon FTP
- 12 — sous-système NTP
- 13 — audit de journal
- 14 — alerte de journal
- 15 — démon d'horloge
- 16-23 — commodités locales
Configuration du serveur Syslog
Dans Linux
rsyslog
Rsyslog est une version améliorée du syslog classique. Installez-le :
```bash
Ubuntu/Debian
sudo apt-get install rsyslog
CentOS/RHEL
sudo yum install rsyslog ```
Activez la réception des messages réseau en modifiant /etc/rsyslog.conf :
```
Activer le module UDP
module(load="imudp") input(type="imudp" port="514")
Activer le module TCP
module(load="imtcp") input(type="imtcp" port="514") ```
Créez un fichier séparé pour les messages réseau : ```
Tous les messages réseau dans un fichier séparé
. @remote-server-ip:514 ```
Redémarrez le service :
bash
sudo systemctl restart rsyslog
syslog-ng
Option alternative :
bash
sudo apt-get install syslog-ng
Fichier de configuration /etc/syslog-ng/syslog-ng.conf :
``` source s_network { udp(port(514)); tcp(port(514)); };
destination d_remote_logs { file("/var/log/remote/${FULLHOST}/messages.log"); };
log { source(s_network); destination(d_remote_logs); }; ```
Dans Windows
Windows ne prend pas en charge Syslog par défaut, mais il existe plusieurs solutions :
NXLog Community Edition
- Téléchargez et installez NXLog
- Configurez le fichier de configuration
/conf/nxlog.conf:
``` Module im_udp Host 0.0.0.0 Port 514 Protocol udp ParseFormat syslog
Kiwi Syslog Server
Solution commerciale populaire avec interface graphique.
Configuration des clients
Clients Linux
Pour envoyer des messages à un serveur distant, ajoutez une ligne à /etc/rsyslog.conf :
```
Envoyer tous les messages au serveur distant
. @@remote-server-ip:514 ```
Pour des types de messages spécifiques : ```
Erreurs uniquement
*.err @@remote-server-ip:514
Messages du noyau uniquement
kern.* @@remote-server-ip:514 ```
Configuration des applications
De nombreuses applications peuvent envoyer des journaux via Syslog. Exemple pour Apache :
```
Dans le fichier de configuration Apache
LogLevel warn ErrorLog "| /usr/bin/logger -t httpd -p local6.error" ```
Clients Windows
Pour envoyer des journaux depuis des machines Windows, vous pouvez utiliser :
- NXLog — envoi d'événements depuis le journal des événements
- SolarWinds Free Syslog Sender
- Scripts PowerShell personnalisés
Sécurité Syslog
Le Syslog traditionnel utilise UDP sans chiffrement, ce qui crée des risques :
- Interception des messages
- Usurpation de source
- Violation de l'intégrité des données
Pour résoudre ces problèmes :
- Utilisez TCP au lieu d'UDP
- Implémentez le chiffrement TLS (RFC 5425)
- Appliquez l'authentification de la source
- Utilisez un VPN pour la transmission des journaux
Recommandations pratiques
Choisir la bonne solution
- Pour les petits réseaux : rsyslog ou syslog-ng
- Pour les environnements d'entreprise : Splunk, ELK Stack, Graylog
- Pour le cloud : solutions de gestion des journaux cloud
Surveillance des performances
- Surveillez le volume des données transmises
- Surveillez la charge de l'interface réseau
- Vérifiez les performances du serveur de journaux
Architecture haute disponibilité
- Configurez plusieurs serveurs de journaux
- Utilisez l'équilibrage de charge
- Mettez en œuvre la sauvegarde des journaux
Conclusion
Syslog est un outil puissant pour la collecte centralisée des journaux. En configurant correctement ce système, vous pouvez surveiller et analyser efficacement les événements dans votre infrastructure. N'oubliez pas la sécurité et l'évolutivité lorsque vous planifiez l'architecture de votre système de journaux.