Historique
Développé en 1980 pour le projet sendmail sur BSD puis tellement bon qu’il s’est développé et est maintenant utilisé sur tous les *NIX.
Qu’est-ce que syslog?
Outil permettant la journalisation des évènements et leur centralisation.
Syslog est basé sur une architecture client/serveur et peut donc être distribué.
Syslog c’est un protocole ET un service (daemon).
Utilise le port UDP 514 par défaut mais peut être modifié.
Modèle client/serveur avec plusieurs fonctions:
Client: génère les informations et les envoie au serveur.
Relais (facultatif)
Serveur: reçoit les informations du client et crée les journaux.
Le message envoyé par le client est en 4 partie:
Date Hostname Nom de la source MSG (contenu)
Avec syslog, il existe 3 topologies.
La machine s’envoie les logs à elle-même et les stocke en local.
La machine envoie ses logs à un serveur distant. Elle peut aussi les stocker en local.
La machine peut envoyer ses logs à un relais qui les envoie àa son tour à un serveur. Le relais est donc à la fois client et serveur. Ceci est utile pour n’autoriser qu’une machine à passer à travers un firewall par exemple.
Code | Gravité | Mot-clé | Description |
---|---|---|---|
0 | Emergency | emerg (panic) | Système inutilisable. |
1 | Alert | alert | Une intervention immédiate est nécessaire. |
2 | Critical | crit | Erreur critique pour le système. |
3 | Error | err (error) | Erreur de fonctionnement. |
4 | Warning | warn (warning) | Avertissement (une erreur peut intervenir si aucune action n’est prise). |
5 | Notice | notice | Événement normal méritant d’être signalé. |
6 | Informational | info | Pour information. |
7 | Debugging | debug | Message de mise au point. |
Code | Mot-clé | Description |
---|---|---|
0 | kern | kernel messages |
1 | user | user-level messages |
2 | mail system | |
3 | daemon | system daemons |
4 | auth | security/authorization messages |
5 | syslog | messages generated internally by syslogd |
6 | lpr | line printer subsystem |
7 | news | network news subsystem |
8 | uucp | UUCP subsystem |
9 | clock daemon | |
10 | authpriv | security/authorization messages |
11 | ftp | FTP daemon |
12 | - | NTP subsystem |
13 | - | log audit |
14 | - | log alert |
15 | cron | clock daemon |
16 | local0 | local use 0 (local0) |
17 | local1 | local use 1 (local1) |
18 | local2 | local use 2 (local2) |
19 | local3 | local use 3 (local3) |
20 | local4 | local use 4 (local4) |
21 | local5 | local use 5 (local5) |
22 | local6 | local use 6 (local6) |
23 | local7 | local use 7 (local7) |
Sylogd configuré par syslog.conf et lancé au démarrage par défaut sur tous les *NIX
$ ps -ef | grep syslog 0 117 1 0 10:57 ?? 0:07.26 /usr/sbin/syslogd
Le syslog.conf
(rsyslog.conf
) se trouve dans /etc/
Contient une série d’instructions
Une instruction est composée:
Le sélecteur
peut contenir * ou none
Fichier
: logue dans un fichier
Serveur
: envoie vers un serveur
Utilisateur
: envoie sur l’écran de l’utilisateur
*
: envoie sur l’écran de tous les utilisateurs
Lire le fichier /etc/rsyslog.conf
Dans quel fichier sont logués les informations sur les mails?
/var/log/maillog
Dans quel fichier se trouve la majorité des logs?
/var/log/messages
Pour envoyer un message de test au service syslog:
$ logger -p local0.alert -t TEST "Test de l'utilisateur: $USER"
Vous pouvez ensuite vérifier le fichier à l’aide la commande:
$ tail -3 /var/log/messages
Pour configurer syslog pour qu’il envoie local6 dans /var/log/local6
on écrit la règle suivante dans /etc/rsyslog.conf
local6.info /var/log/local6
Redémarrer rsyslog
$ systemctl restart rsyslog
Envoyer un test et valider que le message est dans /var/log/local6
$ logger -p local6.info -t TEST "Test de l'utilisateur: $USER"
Configurer local6 pour que seuls les messages emerg log dans /var/log/local6
local6.emerg /var/log/local6
Redémarrer le service, envoyer un test et valider que ça fonctionne
Modifier rsyslog.conf pour qu’il accepte les connexions distantes
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
Redémarrer le service
$ systemctl restart rsyslog
À partir d’un client tester le log
$ logger -p local6.emerg -n [ip server] -t TEST "Test de serveur syslog"
Un serveur a été configuré pour recevoir le syslog venant d’une autre machine.
Maintenant il faut configurer la machine à partir de laquelle vous avez envoyé un message vers le syslog du serveur pour que celle-ci envoie automatiquement tout ce qui concerne local1 vers votre serveur syslog.
Assurez-vous d’avoir désactivé le firewall sur les 2 machines.
Dans syslog.conf de la machine cliente
Local1.* @<adresse ip du serveur>
Redémarrer syslog
Envoyer un évènement au syslog:
$ logger -p local1.info -t LAB "Le lab fonctionne"
Permet la rotation des fichiers de logs
Regarder man logrotate
(rapide)
Trouver où ajouter le fichier /var/log/local6
que vous avez créé précédemment
/etc/logrotate.d/rsyslog
Lancer logrotate pour effectuer la rotation de votre fichier:
$ logrotate -v /etc/logrotate.conf
Votre fichier a-t-il subit une rotation?
Comment faire pour la forcer?
$ logrotate -v /etc/logrotate.conf -f
Vérifier qu’il y a eu rotation.
Permet de logguer les messages venant du kernel.
Est actif par défaut sur la majorité des Linux.
Dans Alma 9 il existe mais les messages du kernel sont envoyés à syslog par journald.
Les commandes last
, lastlog
et who
permettent de suivre l’activité des utilisateurs.
Les commandes, lorsqu’activées, ac
et sa
permettent de suivre l’activité des processus.
Permet d’avoir plus de détails sur les activités des utilisateurs et de nombreux autres évènements systèmes.
Lourd à configurer et génère beaucoup d’information.