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

Quoi journaliser et surveiller

Après cette leçon: Je peux choisir ce qu’il faut journaliser et surveiller sur un système.

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

Pourquoi surveiller un système informatique ?

La surveillance de sécurité consiste à noter ce que font vos machines, puis à lire ces notes pour repérer une attaque. Ces notes s’appellent des journaux.

Un soir, quelqu’un essaie mille mots de passe sur le serveur d’une boutique en ligne. Si le serveur ne note rien, personne ne le sait. Si les bons événements sont notés, une alerte part en quelques minutes.

Cette leçon vous apprend à choisir quoi noter et quoi regarder.

À la fin de cette leçon

Remarque

Je peux choisir ce qu’il faut journaliser et surveiller sur un système.

Mots-clés

MotCe que ça veut direExemple
Journalun fichier où une machine note ce qui s’est passéauth.log
Événementune chose qui s’est passée et qui a été notée
Sourcela machine ou le programme qui écrit une ligne
Signalun événement qui montre un vrai problème
Bruitdes événements normaux qui cachent les signaux
Métriqueun nombre mesuré au fil du temps

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

Un journal utile répond à une question

Un journal ne sert pas à faire joli. Il sert à répondre à des questions précises : qui s’est connecté, d’où et à quelle heure ?

Partez donc des questions, puis choisissez les événements qui y répondent. Notez toujours l’heure, la source et le résultat. N’écrivez jamais un mot de passe dans un journal : toute personne qui lit le journal le lirait aussi.

Exemple travaillé : de la question à l’événement

QuestionÉvénement à noterOù il s’écrit
Qui a essayé d’entrer ?Chaque connexion réussie ou refuséeLe journal des connexions
Un compte a-t-il changé ?Création, suppression ou changement de droitsLe journal du système
Quelles pages sont demandées ?Chaque requête et son code d’étatLe journal du serveur web
Une tâche inconnue se lance-t-elle ?Chaque lancement d’une tâche planifiéeLe journal de cron

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

Quels journaux la machine garde-t-elle ?

Commande
ls case/var/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.

Combien de lignes dans chacun des deux journaux ?

Commande
wc -l case/var/log/auth.log 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.

Plusieurs sources racontent la même histoire

Chaque programme écrit dans son propre journal. Le journal des connexions et celui du serveur web ne disent pas les mêmes choses.

Pour les comparer, comptez les événements par genre. Une commande compte les lignes d’un genre. Une autre compte les codes d’état du serveur web : 200 veut dire réussi, 404 introuvable, 403 refusé.

Compter les essais sur des comptes inexistants

Commande
grep -c "Invalid user" 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.

Compter les événements par niveau

Code: python
# Chaque ligne d’un journal a un niveau : INFO, AVERT ou ERREUR.
niveaux = ["INFO", "ERREUR", "INFO", "AVERT", "INFO", "ERREUR"]
comptes = {}
for niveau in niveaux:
    if niveau in comptes:
        comptes[niveau] = comptes[niveau] + 1
    else:
        comptes[niveau] = 1
print(comptes)

# À vous : ajoutez "ERREUR" deux fois à la liste, puis relancez.

Le signal se cache dans le bruit

Un serveur écrit des milliers de lignes par jour, et presque toutes sont normales. Ce sont le bruit. Un signal est la ligne, ou le groupe de lignes, qui sort de l’ordinaire.

Pour le voir, il faut connaître le normal. Mesurez une métrique, par exemple les refus par heure, et comparez la valeur du jour à la valeur habituelle.

Exemple travaillé : normal ou signal ?

MesureNormal par heureAujourd’huiVerdict
Connexions refusées5120Signal : 24 fois plus que d’habitude
Pages introuvables1012Bruit : presque comme d’habitude
Lignes du pare-feu6000Signal : la source s’est tue
Connexions acceptées89Bruit

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

Erreur fréquente

Attention

Beaucoup de gens pensent qu’il faut tout journaliser et tout regarder. Trop de lignes cachent le signal et remplissent les disques. Journalisez ce qui répond à vos questions, et regardez des mesures claires plutôt que chaque ligne.

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