Vérifier les logs du serveur
Les fichiers de log sont des traces automatiques générées par les systèmes d'exploitation, les applications ou les périphériques. Ils sont essentiels pour comprendre le fonctionnement d'un serveur, détecter les problèmes, assurer la sécurité et diagnostiquer les incidents.
Un fichier de log contient des enregistrements structurés (timestamp, niveau de gravité, source, message) permettant aux administrateurs système de remonter aux causes d'un dysfonctionnement.
Principaux fichiers de log sous Ubuntu
Un même événement (par exemple une connexion sudo) peut apparaître dans plusieurs journaux à la fois. Voici les principaux fichiers et commandes utilisés sur un serveur Ubuntu, avec ce qu'ils contiennent :
/var/log/auth.log: authentifications (réussies et échouées), connexions PAM/sshd, utilisation desudo(la principale source pour l'audit des accès)./var/log/wtmp: historique des connexions et déconnexions (fichier binaire, consultable avec la commandelast).- Source : Linux man-pages - utmp(5)
/var/log/audit/audit.log: journal d'audit détaillé et optionnel (paquetauditd), appels système surveillés, accès et modifications de fichiers, exécution de commandes, authentifications./var/log/kern.log: messages du noyau (matériel, pilotes, anomalies bas niveau). Reçoit aussi les paquets journalisés par un pare-feuiptables/nftables(cibleLOG)./var/log/syslog: messages génériques de la plupart des autres services et démons (tout ce qui n'est pas redirigé versauth.log)./var/log/apt/history.log: historique des paquets installés, mis à jour ou supprimés viaapt./var/log/ufw.log: paquets réseau bloqués ou autorisés par le pare-feuufw, si la journalisation est activée.- Source : Debian - ufw(8) (Debian Manpages)
/var/log/nginx/access.log,/var/log/nginx/error.log: requêtes HTTP reçues (access_log) et erreurs du serveur (error_log, avec un niveau de gravité).- Journaux MySQL / PostgreSQL : démarrage, arrêt et erreurs toujours journalisés. Le détail des requêtes SQL n'est enregistré que si on l'active explicitement (désactivé par défaut sous MySQL, PostgreSQL journalise par défaut sur
stderr, sans fichier dédié). /var/log/mon-app.log(exemple) : journaux propres à chaque application, format et emplacement définis par elle.dmesg,journalctl -b: messages du noyau depuis le dernier démarrage (dmesg), ou l'ensemble des journaux systemd du dernier démarrage (journalctl -b).sar: statistiques d'utilisation des ressources (CPU, mémoire, disque, réseau), collectées par l'outil plutôt que consignées dans un fichier de log classique.- Source : Linux man-pages - sar(1)

Gestion et organisation des logs
Rotation et archivage
Les logs croissent rapidement et peuvent saturer le disque. Sous Linux, logrotate gère automatiquement :
- L'archivage des anciens journaux.
- La suppression ou la compression (gzip) des fichiers trop volumineux.
- La conservation selon une politique (nombre de jours ou de versions).
Source : Linux man-pages - logrotate(8)
Centralisation
Dans des environnements complexes, il est difficile de lire manuellement chaque log sur chaque machine. On utilise alors des solutions de collecte et centralisation :
- Syslog : standard de transmission des logs.
- ELK Stack (Elasticsearch, Logstash, Kibana) : collecte, analyse et visualisation centralisées.
- Source : Elastic - Elastic Stack
- Graylog ou Splunk : solutions avancées de corrélation et d'alerting.
Ces systèmes permettent :
- Une surveillance en temps réel.
- La détection proactive d'incidents.
- La génération de tableaux de bord de sécurité.
Permissions et accès
- Les logs critiques (authentification, sécurité) sont protégés par défaut.
- Sous Debian/Ubuntu, seuls les utilisateurs root ou les membres du groupe
admpeuvent accéder à certains fichiers comme/var/log/auth.log. - Cela empêche un utilisateur standard d'espionner les activités des autres.
Bonnes pratiques
- Toujours commencer un diagnostic par les logs (erreurs système, lenteurs, services qui ne démarrent pas).
-
Utiliser des commandes comme :
tail -f /var/log/syslog # affiche les nouvelles lignes du fichier en temps réel journalctl -xe # affiche les derniers journaux systemd, avec des explications détaillées less /var/log/auth.log # parcourt le fichier page par page, avec recherche -
Mettre en place un système d'alertes (par ex. : détection d'échecs SSH répétés).
- Centraliser les logs pour les grandes infrastructures.
Tip
🚨 En cas de problème (erreur, panne, comportement suspect), le premier réflexe est d'aller lire les logs.
Ils contiennent presque toujours des indices précieux sur la nature et la cause du dysfonctionnement.