07 - Journalisation

Introduction

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).

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)

Différentes topologies

Avec syslog, il existe 3 topologies.

Local

La machine s’envoie les logs à elle-même et les stocke en local.

Local

Serveur

La machine envoie ses logs à un serveur distant. Elle peut aussi les stocker en local.

Serveur

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.

Relais

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 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)

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:

Relais

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

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

$ systemctl restart rsyslog

À partir d’un client tester le log

$ logger -p local6.emerg -n [ip server] -t TEST "Test de serveur syslog"

Distant

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/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.

Et aussi

Klogd

  • 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.

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.