Skip to content

Glossaire

wtmp et btmp

Enregistrements de connexion binaires de Linux : /var/log/wtmp garde l’historique des sessions, démarrages et arrêts ; /var/log/btmp les échecs de connexion.

/var/log/wtmp et /var/log/btmp sont les enregistrements de connexion binaires de Linux. wtmp est l’historique des sessions interactives, des démarrages et des arrêts, lu avec last ; btmp contient les tentatives de connexion échouées, lues avec lastb. Les deux sont écrits directement par login, sshd et PAM, pas via syslog, et logrotate les fait généralement tourner chaque mois en gardant une ancienne génération (wtmp.1, btmp.1).

Les deux fichiers sont des suites d’enregistrements struct utmp de taille fixe : 384 octets sur x86_64, où les champs d’heure sont sur 32 bits, et 400 octets sur aarch64, où ils sont sur 64 bits. last utilise la disposition de la machine sur laquelle il tourne : un wtmp aarch64 lu sur un poste x86_64 donne du charabia ou rien. Une connexion est un enregistrement USER_PROCESS ; la déconnexion, un enregistrement DEAD_PROCESS sur le même terminal avec un nom d’utilisateur vide.

Pourquoi c’est important en investigation

Indépendant de syslog, wtmp confirme ou contredit auth.log et le journal. Une session SSH interactive présente dans auth.log, le journal et audit.log mais absente de wtmp, sur une période couverte par wtmp, désigne un outil de nettoyage. Ces outils écrasent généralement les enregistrements avec des zéros pour que la taille du fichier reste alignée : last les ignore sans rien dire, mais utmpdump montre un enregistrement de type 0, sans utilisateur et daté de 1970. Une taille de fichier qui n’est pas un multiple de la taille d’enregistrement, ou des heures qui reculent, sont d’autres indices. btmp est une troisième copie des tentatives de mot de passe, utile quand les journaux texte ont été nettoyés ; traitez-le comme sensible, car des utilisateurs tapent parfois leur mot de passe dans le champ du nom d’utilisateur.

Exemple

TZ=UTC last -F -i -x -f wtmp        # dates complètes, IP, redémarrages et arrêts
TZ=UTC lastb -F -i -f btmp          # connexions échouées
utmpdump wtmp > wtmp.txt            # tous les enregistrements, y compris ceux mis à zéro

Définissez TZ=UTC, sinon last affiche les heures dans le fuseau de la machine d’analyse. Le SSH non interactif (commande distante, scp, sftp) ne laisse souvent aucun enregistrement wtmp, ce qui est normal.

Termes associés

  • utmp : les sessions en cours, au même format.
  • lastlog : la dernière connexion par UID, écrite indépendamment.
  • wtmpdb : le remplaçant SQLite.

Linux Log Parser lit les deux dispositions et signale les enregistrements mis à zéro. Voir l’analyse forensique de wtmp, btmp et lastlog.