Linux / Commande last : consulter les connexions et redémarrages

last affiche les connexions et déconnexions conservées dans l’historique du système, des plus récentes aux plus anciennes. Dans l’implémentation util-linux décrite ici, il lit par défaut /var/log/wtmp et indique le compte, le terminal, l’hôte distant et les horaires de session ; vérifiez l’implémentation installée avant d’utiliser les options de ce guide.

Il est utile pour vérifier l'historique de connexion d'utilisateurs ou de périodes spécifiques et pour examiner les redémarrages ou les arrêts anormaux. Cependant, les périodes pendant lesquelles wtmp n'a pas été enregistré ou a été archivé par rotation ou supprimé ne peuvent pas être consultées, et les incidents de sécurité ne doivent pas être conclus uniquement sur la base de cet enregistrement.

Quel est le rôle de last ?

last recherche les enregistrements de connexion wtmp à partir de la fin et affiche les dernières entrées en premier. En général, vous pouvez vérifier le nom de l'utilisateur connecté, le terminal utilisé (tty pour un terminal et pts pour un pseudo-terminal), l’hôte distant ou son adresse du protocole Internet (IP), les heures de connexion et de déconnexion, ainsi que la durée de la session.

wtmp n'est pas un journal texte mais un fichier dans un format d'enregistrement défini par le système. Par conséquent, il doit être lu avec des outils qui comprennent le format, tels que last, plutôt que cat ou un éditeur de texte. Selon la distribution et les paramètres du système, l'emplacement du fichier, le fait qu'il soit enregistré et la période de conservation peuvent varier.

Identifier l’implémentation et le stockage de l’historique

Commencez par identifier la commande disponible et son aide :

command -v last
last --help

Les exemples qui suivent visent util-linux et le format binaire wtmp. Sur certains systèmes, last peut être fourni par wtmpdb, qui conserve les sessions dans une base SQLite. Le projet wtmpdb indique par défaut /var/lib/wtmpdb/wtmp.db, mais une distribution peut choisir un autre emplacement. Le format et les options ne sont pas tous interchangeables : suivez le manuel du paquet installé, et ne traitez pas une base SQLite comme un ancien fichier binaire wtmp.

L’absence de l’ancien fichier ne signifie donc pas automatiquement qu’aucun historique n’est collecté. Ce guide consulte les données existantes ; il ne demande pas de créer ou modifier les journaux, ni la configuration d’authentification. Si last manque, identifiez d’abord le fournisseur prévu par votre distribution.

Syntaxe de base et lecture du résultat

La syntaxe de base est la suivante. Si le nom d'utilisateur ou le terminal est omis, il affiche tous les enregistrements disponibles.

last [option] [username|terminal...]

Pour vérifier les enregistrements de connexion les plus récents, exécutez comme suit.

last

Exemple illustratif de la structure de sortie, avec des comptes et une adresse de documentation :

mina     pts/1        192.0.2.24       Fri Sep 18 21:10 - 22:42  (01:32)
alex     tty1                          Fri Sep 18 19:04 - 19:35  (00:31)
reboot   system boot  6.12.0           Fri Sep 18 18:58   still running

La première colonne est l'utilisateur, la deuxième colonne est le terminal, la troisième colonne est l'hôte distant ou les informations du noyau, suivie de l'heure de connexion et de l'état de déconnexion. Les connexions locales sur la console sans adresse distante peuvent avoir une colonne d'hôte vide.

La mention wtmp begins au bas de la sortie situe le début des informations disponibles dans le fichier lu. Elle n’établit ni la date d’installation du système ni celle de sa toute première connexion.

Options courantes de last

Option Fonction Exemples d'utilisation
-n N, --limit N Afficher jusqu'à N entrées last -n 20
-s time, --since time Afficher l'état après l'heure spécifiée last -s 2026-09-01
-t time, --until time Afficher l'état jusqu'à l'heure spécifiée last -t 2026-09-19
-p time, --present time Afficher les utilisateurs connectés à l'heure spécifiée last -p '2026-09-18 21:00'
-F, --fulltimes Afficher la date et l'heure complètes de connexion et de déconnexion Vue détaillée sans omettre l'année
--time-format iso Afficher au format ISO 8601 avec fuseau horaire Utile pour comparer avec les enregistrements d'autres systèmes
-i, --ip Afficher l'hôte distant sous forme d'IP numérique Vérifier l'adresse enregistrée au lieu du nom d’hôte
-a, --hostlast Déplacer le champ hôte dans la dernière colonne Améliorer la lisibilité avec une sortie de date longue
-R, --nohostname Masquer le champ hôte Se concentrer sur les sessions et l'heure locales
-x, --system Afficher également les enregistrements d'arrêt et de changement de niveau de fonctionnement Examiner l'état avant et après le redémarrage
-f file, --file file Lecture d'autres fichiers wtmp last -f /var/log/wtmp.1

Les noms et la portée des options prises en charge peuvent varier en fonction de l'implémentation de last. Cet article est basé sur l'implémentation util-linux largement utilisée sous Linux, et les dernières définitions peuvent être consultées sur la page de manuel officielle la plus récente d'util-linux.

Filtrer uniquement les enregistrements de connexion souhaités

Consulter les enregistrements d'un utilisateur spécifique

En ajoutant un nom d'utilisateur en argument, seul l'historique de cet utilisateur est affiché.

last mina

Si vous listez plusieurs noms d'utilisateur, vous pouvez voir les entrées qui correspondent à l'un d'eux. Si le nom est long, il peut être tronqué dans la sortie par défaut, vous pouvez donc afficher le champ complet en utilisant les options -w ou --fullnames d'util-linux.

last -w mina alex

Consulter les enregistrements d'un terminal spécifique

En spécifiant un nom de terminal, vous pouvez vérifier uniquement les sessions créées à partir de ce terminal. pts/0 est couramment vu dans les terminaux virtuels tels que SSH (Secure Shell), et tty1 peut représenter une console virtuelle locale.

last pts/0

Selon le manuel, tty0 peut être abrégé en 0, mais dans les documents et scripts, utiliser le nom complet du terminal clarifie l'intention.

Limiter le nombre de sorties

Pour vérifier rapidement uniquement les enregistrements récents, spécifiez le nombre maximum d'entrées avec -n.

last -n 10

Vous pouvez l'abréger comme -10, mais le format -n 10 est plus facile à lire dans les scripts et les documents et évite toute confusion avec d'autres options.

Interroger par période et heure spécifique

Spécification des heures de début et de fin

-s spécifie l'heure de début de la requête, et -t spécifie l'heure de fin. En combinant ces deux options, vous pouvez restreindre une période spécifique.

last -s '2026-09-01 00:00' -t '2026-09-19 00:00'

Si seule la date est spécifiée, elle est généralement interprétée comme 00:00:00 de cette date. Pour interroger la journée entière, il est clair de définir la limite de fin à 00:00 du jour suivant.

Utilisation des expressions de temps relatives

La commande last de util-linux prend en charge les expressions de temps relatives telles que today, yesterday, now, et -7days.

last -s yesterday
last -s -7days

Si vous devez comparer plusieurs fois les résultats automatisés, il est préférable, pour la reproductibilité, d'utiliser des dates et des fuseaux horaires explicites plutôt que des expressions relatives, qui varient en fonction de l'heure d'exécution.

Trouver les utilisateurs connectés à un moment spécifique

-p affiche les utilisateurs qui étaient connectés à l'heure spécifiée. Cela peut être utile pour vérifier les sessions qui étaient actives au moment d'un incident.

last -p '2026-09-18 21:30'

Les résultats sont calculés en fonction des enregistrements de connexion/déconnexion restant dans wtmp, donc il ne peut pas restaurer les enregistrements manquants ou corrompus.

Affichage clair du format horaire

Afficher toutes les heures de connexion/déconnexion

La sortie de base peut omettre l'année ou une partie de l'heure pour réduire la largeur de l'écran. -F affiche la date et l'heure complètes pour les connexions et déconnexions.

last -F -n 10

Affichage en format ISO avec fuseau horaire

Lors de la comparaison des journaux d'autres serveurs ou de la livraison des résultats à l'extérieur, --time-format iso est utile. Le format ISO inclut des informations sur le fuseau horaire, ce qui peut réduire la confusion dans l'interprétation des heures.

last --time-format iso -n 10

Lors de la comparaison de la séquence des événements sur plusieurs systèmes, vous devez également vérifier si l'heure système et les paramètres de fuseau horaire de chaque serveur sont corrects.

Vérification des enregistrements de redémarrage et d'arrêt du système

Visualisation de l'historique des redémarrages

reboot est un pseudo utilisateur enregistré lorsque le système démarre, et non un compte utilisateur réel. La commande suivante montre l'historique des redémarrages actuellement conservé dans le fichier wtmp.

last reboot

La plage d'affichage va jusqu'aux données wtmp actuellement conservées. Si les anciens redémarrages ne sont pas visibles, les données peuvent avoir été archivées, supprimées ou ne jamais avoir été enregistrées ; la sortie actuelle ne permet pas de trancher à elle seule.

Affichage des arrêts et des changements de niveau de fonctionnement

-x affiche les enregistrements d'arrêt du système et de changement de niveau de fonctionnement ainsi que les enregistrements de connexion normaux. Cela est utile pour vérifier si un arrêt normal a été enregistré juste avant un redémarrage.

last -x -n 30

Vous pouvez également limiter la recherche aux seules entrées d’arrêt à l'aide de last -x shutdown. Cependant, dans les situations où l'enregistrement de fermeture n'a pas pu être effectué, comme lors d'une coupure de courant anormale, il se peut qu'il n'y ait pas d'entrées normales shutdown.

Interprétation de l’état affiché dans la sortie

Affichage Signification courante Points à vérifier
still logged in Aucun enregistrement de déconnexion pour le moment Reconfirmer s'il s'agit de la session en cours avec who ou w
still running La session de démarrage n'est pas terminée Vérifier s'il s'agit du démarrage en cours avec uptime
crash Interprété comme la session de démarrage terminée sans une déconnexion normale À investiguer avec les journaux du noyau, du journal et du matériel
gone - no logout Impossible de trouver un enregistrement de déconnexion correspondant Vérifiez les possibilités de perte de journal, de redémarrage ou de problèmes d'enregistrement de session
wtmp begins Début de l'enregistrement le plus ancien dans le fichier d'entrée actuel Vérifiez la présence de fichiers précédents archivés

Chaque marque est un indice pour l'investigation, pas une preuve définitive de la cause. Par exemple, voir crash n'indique pas uniquement une défaillance matérielle ; vous devriez également vérifier les journaux du noyau, le journal systemd et les événements de la plateforme de virtualisation.

Fichiers wtmp précédents et rotation des journaux

Lecture d'autres fichiers d'enregistrement

-f lit un fichier formaté wtmp spécifié au lieu du fichier par défaut. Selon les paramètres de rotation des journaux de la distribution, les enregistrements précédents peuvent rester dans /var/log/wtmp.1, et ainsi de suite.

last -f /var/log/wtmp.1

Dans util-linux, vous pouvez spécifier -f plusieurs fois pour traiter plusieurs fichiers. Vérifiez d'abord les noms de fichiers et les permissions réelles dans les paramètres de votre système.

Attention lors de la manipulation de fichiers compressés

Si les fichiers archivés par rotation sont compressés avec gzip ou un outil similaire, ne supposez pas que last peut les lire en les décompressant automatiquement. Copiez-les et décompressez-les dans un espace de travail restreint sans endommager les originaux, puis lisez-les avec -f. À des fins d'investigation, enregistrez également le hachage et la procédure de préservation de l'original.

Vérification des tentatives de connexion échouées

La relation entre lastb et btmp

lastb est similaire à last, mais par défaut il lit /var/log/btmp pour afficher les tentatives de connexion échouées. Selon la distribution, des privilèges administratifs peuvent être nécessaires.

sudo lastb -n 20

Il est utile d'examiner les adresses distantes et les noms d'utilisateur avec des échecs répétés, mais sur les serveurs exposés à Internet, le scan automatisé est courant, donc il ne faut pas conclure à une violation sur la base de tentatives individuelles.

Comparaison avec les enregistrements réussis

Il est pertinent de comparer les connexions réussies, les journaux d'authentification SSH, les journaux de pare-feu et les enregistrements de contrôle d'accès durant la même période.

last --time-format iso -s '2026-09-18 00:00'
sudo lastb --time-format iso -s '2026-09-18 00:00'

L'emplacement et la méthode d'accès aux journaux d'authentification varient en fonction de la distribution et de la configuration des journaux. Sur les systèmes utilisant le journal systemd, vérifiez également le journal des unités de service concernées.

Ordre d'utilisation pour les contrôles de sécurité

  1. Tout d'abord, définissez la portée de la recherche et la période

    Notez les heures de début et de fin de l'incident à investiguer ainsi que le fuseau horaire du serveur. Si possible, utilisez --time-format iso pour inclure les informations de fuseau horaire dans la sortie, et vérifiez également le statut de synchronisation des horaires de plusieurs serveurs.

  2. Recoupez les utilisateurs, les hôtes et les terminaux

    Recherchez des utilisateurs inattendus, des adresses distantes différentes de l'habitude et des heures de connexion et durées de session anormales. Comme le propriétaire ou l'emplacement d'une adresse IP peut changer et est affecté par les mandataires réseau, les réseaux privés virtuels (VPN) et la traduction d’adresses réseau (NAT), ne vous fiez pas à une seule adresse pour identifier l'utilisateur.

  3. Vérifiez les redémarrages et les lacunes dans les journaux

    Vérifiez last reboot, last -x, et wtmp begins pour déterminer la plage des enregistrements et les limites de redémarrage. Comparez avec les horaires de rotation des journaux pour voir s'il y a des lacunes inexpliquées.

  4. Formez des jugements avec d'autres preuves

    Vérifiez les résultats last avec les journaux d'authentification SSH, le journal systemd, les journaux d'audit des commandes et les enregistrements d'accès au pare-feu, VPN et cloud. Si un incident est suspecté, ne modifiez pas les journaux originaux et conservez-les conformément aux procédures de réponse de l'organisation.

Limites des enregistrements de connexion

  • Dépendance aux fichiers locaux : Si wtmp est manquant ou si le service ne journalise pas, les résultats peuvent être vides.
  • Limitation de la période de rétention : Les enregistrements après la rotation et la suppression des journaux ne peuvent pas être récupérés à partir du fichier actuel.
  • Possibilité de falsification : Un attaquant disposant de privilèges suffisants peut modifier ou supprimer les enregistrements locaux.
  • Dépendance au temps : Changer l'horloge système ou régler un fuseau horaire incorrect peut perturber l'ordre des événements et les horaires des sessions.
  • Différences environnementales : Les conteneurs, les environnements d'installation minimale et certaines méthodes d'accès à distance peuvent ne pas laisser les entrées wtmp attendues.

Par conséquent, last est utile pour évaluer rapidement la situation et commencer l'investigation, mais il ne remplace pas les journaux d'audit complets ou les enregistrements centralisés de sécurité.

Comparaison avec des commandes similaires à last

Commande Objet principal Situations appropriées
last Historique des connexions/déconnexions passées Vérifier les enregistrements de session et de démarrage restant dans wtmp
lastb Historique des échecs de connexion Vérifier les échecs d'authentification enregistrés dans btmp
who Utilisateurs actuellement connectés Vérifier les utilisateurs et terminaux des sessions en cours
w Utilisateurs actuels et leurs activités en cours Vérifier les utilisateurs connectés, temps d'inactivité et processus
lastlog ou lslogins Dernière connexion par compte Vérifier les comptes qui n'ont pas été utilisés depuis longtemps ou la dernière connexion

Questions fréquemment posées

Pourquoi last ne renvoie-t-il aucun résultat ?

Il se peut que /var/log/wtmp n'existe pas, soit vide, ou que le système soit configuré pour ne pas enregistrer les connexions dans ce fichier. Vérifiez l'existence du fichier, les permissions et les politiques d'enregistrement. Un résultat vide ne signifie pas qu'il n'y a pas eu du tout de connexion.

« still logged in » signifie-t-il actuellement connecté ?

Cela signifie qu'il n'y a aucun enregistrement de déconnexion correspondant à cette connexion. Pour vérifier la session actuelle réelle, il est préférable d'utiliser who, w, loginctl, etc. Les sessions plus anciennes peuvent apparaître ainsi en raison d'une terminaison anormale ou de l'absence d'enregistrements.

Comment puis-je vérifier les anciens enregistrements de connexion ?

S'il existe des fichiers comme le journal archivés wtmp.1, vous pouvez les lire avec last -f filename. Pour les fichiers compressés, utilisez une copie décompressée et ne modifiez pas l'original directement.

Peut-on déterminer un piratage uniquement à partir des résultats de last ?

Non. Les connexions inattendues sont des indices importants, mais les enregistrements locaux wtmp peuvent être incomplets ou falsifiés. Vous devez les analyser en même temps que les journaux d'authentification, les enregistrements réseau, les journaux d'audit des commandes et les modifications du système.

Résumé

L'historique récent des connexions peut être vérifié avec last, les utilisateurs spécifiques avec last username, les enregistrements de redémarrage avec last reboot, et les échecs de connexion avec lastb. Pour les périodes, utilisez -s et -t, pour un point précis dans le temps -p, et pour un affichage clair de l'heure --time-format iso peut être utilisé.

Les résultats de last ne sont valides que dans la plage des enregistrements wtmp actuellement disponibles. Dans le cadre d'une enquête de sécurité, vous devez d'abord vérifier le fuseau horaire et la durée de conservation des journaux puis croiser avec d'autres enregistrements. Les outils de base associés peuvent être consultés ensemble dans la Liste des commandes couramment utilisées sous Linux.