Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Journaux et surveillance

Après cette leçon: Je peux trouver dans un journal ce qui s’est mal passé.

Leçon de 55 min7 commandesLab de réponse à incident et d’investigation : enquêter sur un serveur compromis

Des commandes que personne n’a passées

Un lundi matin, le site d’une boutique affiche des commandes que personne n’a passées. Rien n’a été modifié le week-end.

Vous ne devinez pas. Vous ouvrez le journal. Il dit ce que la machine a fait, et à quelle heure.

À la fin de cette leçon

Remarque

Je peux trouver dans un journal ce qui s’est mal passé.

Mots-clés

MotCe que ça veut direExemple
Journalun fichier où un programme note ce qu’il a faitauth.log
Ligne de journalune entrée : une heure, une source et un message
Horodatagela date et l’heure écrites sur une ligne de journal
Filtrene garder que les lignes qui vous intéressentgrep
Chronologiedes événements de plusieurs journaux classés par heure
Preuveune ligne de journal qui appuie ce que vous affirmez

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une ligne de journal a des parties

Les machines écrivent leurs journaux selon un modèle régulier, pour qu’un outil puisse les lire. Apprenez le modèle une fois et chaque ligne devient facile.

Une ligne du journal des connexions donne la date et l’heure, la machine, le programme, puis un message. Le message contient les faits : qui a essayé, d’où, et si cela a marché.

Les pièces du dossier d’enquête

Commande
ls case

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Combien de lignes dans le journal des connexions ?

Commande
wc -l case/var/log/auth.log

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Les deux premières lignes du journal web

Commande
head -n 2 case/var/log/nginx/access.log

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Les trois dernières lignes du journal web

Commande
tail -n 3 case/var/log/nginx/access.log

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Exemple travaillé : une ligne du journal web

PartieExempleSens
Adresse192.0.2.77Qui a demandé
Heure[14/Oct/2026:00:01:49 +0000]Quand
Requête"GET /login HTTP/1.1"Ce qu’on a demandé
État200La réponse : 200 réussi, 404 introuvable, 403 refusé
Taille2557Octets renvoyés

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Filtrer d’abord, compter ensuite

grep garde les lignes qui contiennent certains mots. grep -c les compte au lieu de les afficher.

Pour compter selon une colonne, découpez la colonne avec awk, triez-la, et laissez uniq -c compter les séries. Un second sort -rn met le plus grand nombre en premier.

Compter les mots de passe refusés

Commande
grep -c "Failed password" case/var/log/auth.log

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Compter les connexions acceptées

Commande
grep -c "Accepted" case/var/log/auth.log

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Compter le journal web par code d’état

Commande
awk '{print $9}' case/var/log/nginx/access.log | sort | uniq -c

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un petit extrait à lire

Code: bash
Oct 14 02:11:03 web01 sshd[2211]: Invalid user admin from 203.0.113.5 port 4410
Oct 14 02:11:03 web01 sshd[2211]: Failed password for invalid user admin from 203.0.113.5 port 4410 ssh2
Oct 14 02:11:09 web01 sshd[2214]: Failed password for root from 203.0.113.5 port 4418 ssh2
Oct 14 02:14:40 web01 sshd[2230]: Accepted password for lea from 192.0.2.44 port 5120 ssh2

Exemple travaillé : compter par adresse

ÉtapeCe qu’elle faitRésultat pour l’extrait
1Garder les lignes Failed password2 lignes
2Découper l’adresse après « from »203.0.113.5 deux fois
3Compter chaque adresse203.0.113.5 : 2
4Chercher une ligne Accepted venant d’elleAucune : elle n’est jamais entrée

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Erreur fréquente

Attention

Beaucoup de gens pensent que l’adresse aux plus nombreux échecs est celle qui est entrée. Les échecs et les réussites sont des lignes différentes. Une adresse peut échouer mille fois sans jamais réussir. Cherchez toujours une ligne de réussite, puis vérifiez qu’elle vient de l’adresse soupçonnée.

Une chronologie réunit les journaux

Un seul journal raconte rarement toute l’histoire. Classez les événements de plusieurs journaux par heure. Cherchez ensuite ce qui est arrivé en premier.

Le premier événement compte le plus. Ce qui suit peut en être la conséquence.

Exemple travaillé : une chronologie

HeureSourceÉvénement
02:11Journal des connexionsBeaucoup de mots de passe refusés depuis une adresse
02:14Journal des connexionsUne connexion acceptée pour lea depuis une autre adresse
02:16Journal webUne demande de page d’administration, réponse 200
02:30Journal de cronUne nouvelle tâche s’exécute pour la première fois

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Suivre un journal, lire un long fichier

Tapez tail -f suivi du nom d’un journal pour voir arriver les nouvelles lignes. Ctrl+C arrête la commande. Un Run ne peut pas appuyer sur Ctrl+C : tapez celle-ci vous-même.

Tapez less et le nom d’un journal pour parcourir un long fichier. Appuyez sur / et un mot pour chercher, et sur q pour quitter.

Pour aller plus loin

Dans le journal web, la colonne 7 est la page demandée. Écrivez un seul enchaînement qui garde les lignes 404, découpe la colonne 7 et compte chaque page.

Triez pour mettre le plus grand nombre en tête et gardez les trois premières. Dites ensuite en une phrase quel genre de visiteur demande des pages qui n’existent pas.

À propos de ce labo et de sa source: Lab de réponse à incident et d’investigation : enquêter sur un serveur compromis

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.