02 - Journalisation
02 - Journalisation Contact
Dans cette page :
Introduction
Historique
Développer 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).
Le protocole
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)
Sévérité
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. |
Fonctionnalité
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) |
Différentes topologies
Avec syslog, il existe 3 topologies.
Local
La machine s’envoie les logs à elle-même et les stocke en local.
Serveur
La machine envoie ses logs à un serveur distant. Elle peut aussi les stocker en local.
Relais
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.
Le service
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
local6.info /var/log/local6
Redémarrer rsyslog
$ service rsyslog restart
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
Le service distant
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
$ service rsyslog restart
À partir d’un client tester le log
$ logger -p local6.emerg -n [ip server] -t TEST "Test de serveur syslog"
Laboratoire
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"
logrotate
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/syslog
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.
Et aussi
Klogd
-
Permet de logguer les messages venant du kernel.
-
Est actif par défaut sur la majorité des Linux.
-
Dans Centos 7 il existe mais les messages du kernel sont envoyés à syslog par journald.
Accounting
-
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.
Audit
-
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.