Pour les étudiants en BTS CIEL ou SIO, savoir lire et exploiter les logs est essentiel.
Les journaux permettent de :
- diagnostiquer une panne
- détecter une intrusion
- comprendre le fonctionnement du système
Cette fiche présente les principaux fichiers de logs Debian et les commandes pour les exploiter efficacement.

Commandes d’analyse des logs (bloc unique)
# =========================================================
# CONSULTATION DES LOGS
# =========================================================
# Lire un fichier complet
cat /var/log/syslog
# Lire avec pagination
less /var/log/syslog
# Voir les dernières lignes
tail /var/log/syslog
# Suivre un log en temps réel
tail -f /var/log/syslog
# Voir les 50 dernières lignes
tail -n 50 /var/log/syslog
# =========================================================
# RECHERCHE DANS LES LOGS
# =========================================================
# Rechercher un mot clé
grep "error" /var/log/syslog
# Recherche insensible à la casse
grep -i "fail" /var/log/auth.log
# Rechercher plusieurs mots
grep -E "error|fail|warning" /var/log/syslog
# Afficher les lignes AVANT et APRES
grep -C 3 "ssh" /var/log/auth.log
# Compter les occurrences
grep -c "Failed password" /var/log/auth.log
# =========================================================
# FILTRAGE AVANCE
# =========================================================
# Trier les résultats
grep "error" /var/log/syslog | sort
# Supprimer les doublons
grep "error" /var/log/syslog | sort | uniq
# Compter par type
grep "Failed password" /var/log/auth.log | wc -l
# Top des IP qui tentent de se connecter
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
# =========================================================
# JOURNALCTL (SYSTEMD)
# =========================================================
# Voir tous les logs
journalctl
# Logs récents
journalctl -xe
# Logs d’un service
journalctl -u ssh
# Logs en temps réel
journalctl -f
# Logs depuis aujourd’hui
journalctl --since today
# Logs entre deux dates
journalctl --since "2026-05-01 10:00:00" --until "2026-05-01 12:00:00"
# =========================================================
# ANALYSE RESEAU / SECURITE
# =========================================================
# Tentatives SSH échouées
grep "Failed password" /var/log/auth.log
# Connexions réussies
grep "Accepted password" /var/log/auth.log
# Redémarrages système
grep "reboot" /var/log/syslog
# Erreurs système
grep -i "error" /var/log/syslog
Explication détaillée
Emplacement des logs
Les logs Debian sont stockés dans /var/log/.
Fichiers importants :
/var/log/syslog: logs système généraux/var/log/auth.log: authentification (SSH, sudo)/var/log/kern.log: noyau Linux/var/log/dpkg.log: installations de paquets
Lecture des logs
cat: lecture brute (peu pratique pour gros fichiers)less: navigation dans le fichiertail: visualisation des dernières lignestail -f: surveillance en temps réel
Recherche avec grep
grep est l’outil principal :
-i: ignore la casse-E: expressions régulières-C: contexte autour du résultat
Permet de filtrer rapidement des événements précis.
Analyse avancée
Combinaison de commandes :
awk: extraction de colonnessort: triuniq: suppression doublonswc -l: comptage
Exemple :
- identifier les IP attaquantes
- détecter des répétitions suspectes
journalctl (systemd)
Remplace en partie les fichiers classiques :
- centralise les logs
- permet un filtrage précis (service, date)
Très utilisé en environnement moderne.
Cas pratiques
Détection brute force SSH
- rechercher « Failed password »
- identifier les IP
- compter les tentatives
Analyse d’un service
journalctl -u nom_du_service
Diagnostic système
- erreurs dans syslog
- reboot inattendu
Consultation des logs
cat /var/log/syslog
less /var/log/syslog
tail /var/log/syslog
tail -f /var/log/syslog
tail -n 50 /var/log/syslog
Exemple de sortie :
May 1 12:01:15 debian systemd[1]: Started Session 1234 of user root.
May 1 12:01:15 debian sshd[1234]: Accepted password for root from 192.168.1.50 port 55210 ssh2
May 1 12:01:16 debian sudo: root : TTY=pts/0 ; PWD=/root ; USER=root ; COMMAND=/bin/ls
May 1 12:01:20 debian CRON[1250]: (root) CMD (cd / && run-parts --report /etc/cron.hourly)
May 1 12:01:25 debian systemd[1]: Finished Daily apt download activities.
Recherche dans les logs avec grep
grep "error" /var/log/syslog
grep -i "fail" /var/log/auth.log
grep -E "error|fail|warning" /var/log/syslog
grep -C 3 "ssh" /var/log/auth.log
grep -c "Failed password" /var/log/auth.log
Exemple :
May 1 11:50:12 debian sshd[1122]: Failed password for invalid user admin from 192.168.1.60 port 53322 ssh2
May 1 11:50:15 debian sshd[1122]: Failed password for root from 192.168.1.60 port 53322 ssh2
Filtrage avancé et analyse
grep "error" /var/log/syslog | sort
grep "error" /var/log/syslog | sort | uniq
grep "Failed password" /var/log/auth.log | wc -l
Top des IP en brute force :
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
Exemple de sortie :
15 192.168.1.60
4 192.168.1.61
2 10.0.0.5
1 203.0.113.10
journalctl (systemd)
journalctl
journalctl -xe
journalctl -u ssh
journalctl -f
journalctl --since today
journalctl --since "2026-05-01 10:00:00" --until "2026-05-01 12:00:00"
Exemple :
May 01 10:15:01 debian systemd[1]: Starting OpenBSD Secure Shell server...
May 01 10:15:02 debian sshd[1200]: Server listening on 0.0.0.0 port 22.
May 01 10:20:45 debian sshd[1201]: Failed password for invalid user test from 192.168.1.60 port 53332 ssh2
Analyse réseau / sécurité
Tentatives SSH échouées :
grep "Failed password" /var/log/auth.log
Connexions réussies :
grep "Accepted password" /var/log/auth.log
Exemple :
May 1 12:01:15 debian sshd[1234]: Accepted password for root from 192.168.1.50 port 55210 ssh2
Redémarrages système :
grep "reboot" /var/log/syslog
Exemple :
Apr 30 22:15:02 debian systemd[1]: System rebooted.
Apr 30 22:15:02 debian kernel: Linux version 6.1.0-18-amd64
Erreurs système :
grep -i "error" /var/log/syslog
Exemple :
May 1 11:43:22 debian systemd[1]: Failed to start MySQL Community Server.
Cas pratiques
Identifier les IP en brute force SSH :
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
Nombre total de tentatives échouées :
grep -c "Failed password" /var/log/auth.log
Voir les erreurs Apache :
grep -i "error" /var/log/apache2/error.log
Voir les redémarrages système :
journalctl --since today | grep -i reboot
Voir les installations de paquets :
less /var/log/dpkg.log
Suivre un service en temps réel :
journalctl -u nginx -f
Bonnes pratiques
- surveiller régulièrement les logs
- automatiser avec des scripts
- mettre en place une rotation (logrotate)
- centraliser les logs (SIEM, syslog distant)
- restreindre l’accès aux logs sensibles
Récapitulatif des fichiers importants
| Fichier | Rôle |
|---|---|
| /var/log/syslog | logs système généraux |
| /var/log/auth.log | authentification |
| /var/log/kern.log | noyau |
| /var/log/dpkg.log | gestion des paquets |
| /var/log/apache2/ | logs web |
| /var/log/mysql/ | logs base de données |
Conclusion
La maîtrise des logs est indispensable pour :
- l’administration système
- la cybersécurité
- le diagnostic
Savoir utiliser grep, awk, journalctl permet d’analyser rapidement un incident et de comprendre le comportement du système.
