Fiche logs Debian : analyse et recherche dans les journaux système

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 fichier
  • tail : visualisation des dernières lignes
  • tail -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 colonnes
  • sort : tri
  • uniq : suppression doublons
  • wc -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

FichierRôle
/var/log/sysloglogs système généraux
/var/log/auth.logauthentification
/var/log/kern.lognoyau
/var/log/dpkg.loggestion 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.


Retour en haut