Quels sont les journaux Linux de /var/log/ et comment les lire

Pour dépanner ou auditer son système Linux, il est nécessaire d'obtenir des informations sur le système ou les applications.
Par exemple, les avertissements, les erreurs ou informations de debug.
Pour cela, Linux et les applications enregistrent des journaux (logs) dans le dossier /var/log grâce au daemon syslog.

En tant que qu'administrateur système, vous devez savoir pour quel fichier journal devrait être vérifié pour un problème de service particulier.
Dans ce tutoriel, j'aborde plusieurs fichiers journaux Linux à connaître.
Vous trouverez la liste complète des journaux Linux, puis enfin d'article, quelques explications comment les voir.

Quels sont les journaux Linux de /var/log/ et comment les lire

Liste complète des journaux (logs) Linux

syslog est un daemon qui enregistre les journaux dans /var/log.
Ce daemon tend à disparaître depuis l'arrivée de systemd qui apporte la journalisation par le service journald.
Toutefois, la plupart des distributions Linux continuent de l'utiliser;

Linux créé plusieurs fichiers journaux systèmes que l'on retrouve dans toutes les distributions Linux.
Il existe quelques subtilités différentes mais globalement les journaux sont à peu près les mêmes d'une distribution Linux à un autre.

Voici la liste complètes des journaux systèmes :

  • /var/log/auth.log : Journaux d'authentification (le journal d'authentification stocke tous les journaux d'authentification, y compris les tentatives réussies et échouées)
  • /var/log/btmp: Enregistrements des tentatives de connexion infructueuses
  • /var/log/boot.log : Journal de démarrage du système (le journal de démarrage stocke toutes les informations relatives aux opérations de démarrage)
  • /var/log/cron : stocke tous les messages liés à des cron tels que lorsque le démon cron a initié un travail, des messages d'échec associés, etc. Ce fichier n'existe pas forcément sur toutes les distributions Linux
  • /var/log/dmesg : Messages relatifs aux pilotes de périphérique. La commande DMESG peut être utilisée pour afficher les messages dans ce fichier.
  • /var/log/debug : Journaux de débogage (le journal de débogage stocke des messages détaillés liés au débogage et est utile pour dépanner des opérations système spécifiques)
  • /var/log/daemon.log : journaux des démons (le journal des démons contient des informations sur les événements liés à l'exécution de l'opération Linux)
  • /var/log/faillog: Contient des informations toutes les tentatives de connexion échouées, utiles pour obtenir des informations sur la tentative de violation de la sécurité, telles que celles qui tentent de pirater des informations d'identification de connexion ainsi que des attaques de brute force
  • /var/log/kern: Stocke les journaux de noyau Linux et les données d'avertissement. Ce journal est précieux pour le dépannage des noyaux personnalisés
  • /var/log/maillog ou /var/log/mail.log : Journaux du serveur de messagerie (le journal de messagerie stocke les informations relatives aux serveurs de messagerie et à l'archivage des e-mails)
  • /var/log/messages : Enregistre les messages importants, non débogués et non critiques. Ce journal doit être considéré comme le journal "Activité du système général".
  • /var/log/kern.log : Journaux du noyau Linux
  • /var/log/btmp : Enregistrements d'échecs de tentatives de connexion
  • /var/log/utmp : Etat de connexion actuel, par utilisateur
  • /var/log/wtmp : Historique des connexions / déconnexions
  • /var/log/lastlog : Informations sur les dernières connexions pour tous les utilisateurs. Ce fichier binaire peut être lu par la commande lastlog
  • /var/log/syslog : Enregistre tout exceptés les messages liés aux authentifications
  • /var/log/utmp: État de connexion actuel, par utilisateur
  • /var/log/wtmp: Historique de connexion / déconnexion
  • /var/log/xferlog: Contient toutes les sessions de transfert de fichiers FTP, y compris des informations sur le nom de fichier et l'initiation de transferts FTP
Liste complète des journaux (logs) Linux

Mais chaque application peut aussi créer ses propres journaux.
Par exemple, on peut voir des journaux dpkg liés au gestionnaire de paquet Debian, Ubuntu ou Mint.
Mais aussi nginx peut aussi y créer ses journaux, php-fpm, apache ou n'importe quelle autre application qui fonctionne en tant que service/daemon.

Enfin le système effectue une rotation des journaux à travers logrotate afin consulter les journaux précédents.
Le journal du jour sera copié vers un fichier du même nom avec .1.
Le journal .1 sera copié et compressé en gzip vers .2
Puis .2 est copié vers .3
Enfin le dernier journal est supprimé.

Cette rotation des journaux peut être journalière, hebdomadaire ou mensuelle.

Comment lire les journaux Linux

En plus de la liste complète, voici un descriptif des principaux journaux Linux.

Les commandes Linux pour lire les logs

Linux fournit plusieurs commandes afin de pouvoir lire des fichiers textes.
Ce tableau récapitule les principales commandes utiles.
Toutefois, vous n'aurez besoin que de trois commandes : cat, more, less
Si vous devez chercher un élément en particulier, aidez vous de la commande grep.

CommandesActions
awk / gawkLangage de balayage et de traitement des motifs
catAfficher le contenu d'un fichier
cutSupprimer des sections d'un fichier
grepRechercher l'occurence dans un fichier
headAfficher l'entête du fichier
moreAfficher le contenu d'un fichier page par page
lessComme more mais en plus rapide
lookMontre les lignes commençant par un pattern
nlEcrit chaque fichier sur la sortie standard, avec des numéros de ligne ajoutés
sedRecherche/remplacer, substitution de texte
sortTrier le flux d'entrée
teeLit l'entrée standard et l'écrit à la fois dans la sortie standard et dans un ou plusieurs fichiers
tailAffiche les dernières lignes d'un fichier
trTransforme une liste de caractère en une autre liste
wcAfficher le nombre de lignes d'un fichier texte
Les commandes de base Linux sur les textes

Enfin pour naviguer dans un fichier log avec less :

nsulter les journaux Linux avec journalctl

Enfin notez que vous pouvez utiliser la commande journalctl afin de consulter les journaux Linux SystemD :

Enfin pour lire les journaux en temps réel :

La structure d'un fichier journal

Voici un exemple d'un fichier journal Linux :

Aug  9 16:39:53 nsxxxx kernel: [   10.076795] e1000e: eno1 NIC Link is Up 100 Mbps Full Duplex, Flow Control: None
Aug  9 16:39:53 nsxxxx kernel: [   10.076884] e1000e 0000:00:19.0 eno1: 10/100 speed: disabling TSO
Aug  9 16:39:53 nsxxx kernel: [   10.077009] IPv6: ADDRCONF(NETDEV_CHANGE): eno1: link becomes ready
Aug 10 00:00:09 nsxxx rsyslogd:  [origin software="rsyslogd" swVersion="8.1901.0" x-pid="506" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Aug 10 00:00:09 ns320684 rsyslogd:  [origin software="rsyslogd" swVersion="8.1901.0" x-pid="506" x-info="https://www.rsyslog.com"] rsyslogd was HUPed

On trouve les colonnes suivantes :

  • Date / horodatage
  • Nom d'hôte système
  • Nom du service (et parfois pid aussi)
  • Texte du message

Quels sont les journaux (logs) Linux ?

Fichier journal consolidé du système : /var/log/messages

Tous les services système qui n'ont pas leur propre fichier journal spécial, écrit normalement dans /var/log/messages. La majeure partie de l'activité système.
En effet, ce fichier log enregistre les messages importants, non débogués et non critiques.
Cela fait de /var/log/messages un des principaux log à consulter pour auditer et suivre l'activité du système.

Device driver messages : dmesg

DMESG est utilisé pour examiner ou contrôler la mémoire tampon du noyau Linux.
L'action par défaut consiste à afficher tous les messages du tampon d'anneau du noyau.

On y trouve les logs du démarrage Linux (/var/log/boot.log) et système.
Ces messages aident à résoudre les problèmes de dépannage ou d'initialisation des pilotes.
Pour visualiser ces journaux, saisissez la commande :

dmesg

Service success/failures at boot : /var/log/boot.log

Dès le démarrage de votre PC ou serveur, SystemD enregistre les journaux systèmes.
Notamment, cela permet de visualiser les services en cours de démarrage et leur statut de réussite ou d'échec est affiché sur la console locale.
Les mêmes journaux peuvent être obtenus à partir du journal de démarrage post-boot.
Ce fichier répertorie tout le statut de réussite / échec du service au démarrage de manière à pouvoir être référé plus tard pour dépanner les problèmes liés au service.

Pour afficher le journal des messages de démarrage, exécutez la commande ci-dessous:

sudo cat /var/log/boot.log

Logs Authentication : /var/log/secure, /var/log/auth.log

Ce journal enregistre les tentatives d'authentification réussies ou non.
Cela inclut les connexions dans un terminal local ou à distance (pts).
C'est un bon moyen pour suivre les attaques par brute force.

Aug 10 07:17:01 ns320684 CRON[19220]: pam_unix(cron:session): session opened for user root by (uid=0)
Aug 10 07:17:01 ns320684 CRON[19220]: pam_unix(cron:session): session closed for user root
Aug 10 07:39:01 ns320684 CRON[19613]: pam_unix(cron:session): session opened for user root by (uid=0)

Par exemple ci-dessous, il s'agit de tentatives de connexion au service SSH :

Voici la structure :

  • Date / horodatage
  • Nom d'hôte de serveur
  • Service d'authentification ou daemon (parfois avec PID)
  • Un message

Sur Debian, cron enregistre les connexions cron dans ce journal mais les exécutions des tâches se trouvent dans /var/log/syslog

les journaux cron

Lorsque utilise cron pour créer des tâches planifiées ; il peut être utile de connaître les exécutions lorsque la tâche planifiée ne s'exécute pas.
Certains distributions Linux créent à cet effet /var/log/cron
Sur Debian, les journaux cron se trouvent dans /var/log/syslog

Sur Debian :

cat /var/log/syslog|grep CRON

Logs des mails : /var/log/mail.log ou /var/log/maillog

Si un MTA comme exim, postfix ou qmail est installé sur Linux, les mails envoyés ou reçus sont logués dans /var/log/mail.log ou /var/log/maillog.
Cela affiche le nom d'hôte du MX, avec le statut du mail (250, ...).
C'est le log à vérifier si vous rencontrez des problèmes pour envoyer ou recevoir des mails depuis votre système.

Dernier journaux : /var/log/lastlog

Les détails de connexion récents de tous les utilisateurs du système sont enregistrés dans ce fichier journal.
Le journal /var/log/lastlog n'est pas lisible par défaut car au format binaire.
Mais la commande lastlog permet d'afficher les données.
lle trie les utilisateurs avec le fichier de leur commande dans /etc/passwd, l'adresse IP de connexion est affichée, le port (TTY) et date.

Logs des transferts de fichiers : /var/log/xferlog

Ce journal contient des informations provenant du programme de transfert de fichiers / des démons de service.
Certains daemon FTP comme vsftp, proftpd peuvent écrire dedans.

Tags: