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
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Journal | un fichier où une machine note ce qui s’est passé | auth.log |
| Événement | une chose qui s’est passée et qui a été notée | |
| Source | la machine ou le programme qui écrit une ligne | |
| Signal | un événement qui montre un vrai problème | |
| Bruit | des événements normaux qui cachent les signaux | |
| Métrique | un 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 à noter | Où il s’écrit |
|---|---|---|
| Qui a essayé d’entrer ? | Chaque connexion réussie ou refusée | Le journal des connexions |
| Un compte a-t-il changé ? | Création, suppression ou changement de droits | Le journal du système |
| Quelles pages sont demandées ? | Chaque requête et son code d’état | Le journal du serveur web |
| Une tâche inconnue se lance-t-elle ? | Chaque lancement d’une tâche planifiée | Le journal de cron |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Quels journaux la machine garde-t-elle ?
ls case/var/logAffiché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 ?
wc -l case/var/log/auth.log case/var/log/nginx/access.logAffiché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
grep -c "Invalid user" case/var/log/auth.logAffiché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
awk '{print $9}' case/var/log/nginx/access.log | sort | uniq -cAffiché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
# 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 ?
| Mesure | Normal par heure | Aujourd’hui | Verdict |
|---|---|---|---|
| Connexions refusées | 5 | 120 | Signal : 24 fois plus que d’habitude |
| Pages introuvables | 10 | 12 | Bruit : presque comme d’habitude |
| Lignes du pare-feu | 600 | 0 | Signal : la source s’est tue |
| Connexions acceptées | 8 | 9 | Bruit |
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.