Skip to content

Glossaire

lastlog

Le fichier /var/log/lastlog : un emplacement de taille fixe par UID contenant l’heure, le terminal et l’hôte distant de la dernière connexion du compte.

/var/log/lastlog enregistre la connexion la plus récente de chaque compte. C’est un tableau de struct lastlog indexé par UID : l’emplacement de l’UID N se trouve à l’offset N × 292 octets sur x86_64, et chaque emplacement contient une heure sur 32 bits, un nom de terminal de 32 octets et un hôte distant de 256 octets. Sur aarch64, l’emplacement fait 296 octets. La commande lastlog l’affiche en s’appuyant sur le /etc/passwd local.

Comme l’offset dépend de l’UID, une seule connexion d’un UID élevé (par exemple 100000) fait paraître le fichier énorme. C’est un fichier creux : seuls quelques blocs sont réellement utilisés, il faut donc le collecter avec tar --sparse pour ne pas copier des gigaoctets de zéros.

Pourquoi c’est important en investigation

Chaque connexion écrase l’emplacement : lastlog ne connaît donc que la dernière connexion de chaque compte, mais il la conserve indéfiniment, bien après la rotation de wtmp. Surtout, il est écrit indépendamment de wtmp. Une heure lastlog sans session correspondante dans wtmp, alors que wtmp couvre cette période, indique fortement qu’un enregistrement wtmp a été supprimé ou mis à zéro. Il révèle aussi des comptes qui se sont connectés une fois, il y a des années, et qui n’étaient pas censés se connecter du tout.

Exemple

L’emplacement de svc_backup (UID 1001) commence à l’octet 1001 × 292 = 292292 :

dd if=lastlog bs=292 skip=1001 count=1 2>/dev/null | xxd

Après la connexion de l’investigation pas à pas du site, cet emplacement contient l’heure de connexion, pts/1 et 203.0.113.45. Les distributions récentes remplacent ce fichier par lastlog2, une base SQLite /var/lib/lastlog/lastlog2.db dont la table Lastlog2 stocke Time en secondes.

Termes associés

  • wtmp et btmp : l’historique complet des connexions, à comparer.
  • utmp : les sessions ouvertes à l’instant présent.
  • wtmpdb : le successeur SQLite de wtmp.

Linux Log Parser lit les deux tailles d’emplacement et lastlog2. Plus de détails dans l’analyse forensique de wtmp, btmp et lastlog.