Skip to content

Glossaire

wtmpdb

Le remplaçant SQLite de wtmp (wtmp.db) : une ligne par session, heures en microsecondes et nom du service PAM ; utilisé par openSUSE et Debian 13.

wtmpdb est le remplaçant SQLite du fichier wtmp classique. Les champs d’heure sur 32 bits de struct utmp sur x86_64 débordent en janvier 2038 : les distributions récentes stockent donc l’historique des connexions dans une base de données, /var/lib/wtmpdb/wtmp.db en amont et sur openSUSE, /var/log/wtmp.db sur Debian 13. Elle est écrite par le module pam_wtmpdb et lue avec wtmpdb last.

Les données tiennent dans une table, wtmp(ID, Type, User, Login, Logout, TTY, RemoteHost, Service). Type vaut 1 pour BOOT_TIME, 2 pour RUNLEVEL et 3 pour USER_PROCESS. Login et Logout sont des microsecondes depuis l’epoch. Contrairement à wtmp, il y a une ligne par session : l’heure de déconnexion est renseignée à la fin de la session, et la colonne Service enregistre le service PAM (sshd, login), ce que le format classique n’a jamais eu.

Pourquoi c’est important en investigation

Sur les hôtes qui ont basculé, les anciens fichiers peuvent être absents ou figés, et un enquêteur qui ne cherche que /var/log/wtmp conclut à tort qu’il n’y a aucun enregistrement de connexion. Debian 13 a retiré last, lastb et lastlog et fournit wtmpdb et lastlog2 dans des paquets séparés : un hôte mis à niveau peut donc n’avoir aucune base de connexions ; vérifiez-le avant de parler de suppression. SQLite apporte aussi un journal d’écriture anticipée : collectez le fichier wtmp.db-wal à côté de la base s’il existe, car les lignes récentes peuvent s’y trouver encore. La colonne Service aide à distinguer les connexions SSH des connexions console sans recouper auth.log.

Exemple

sqlite3 wtmp.db "SELECT User, TTY, RemoteHost, Service, datetime(Login/1000000,'unixepoch'), datetime(Logout/1000000,'unixepoch') FROM wtmp;"
wtmpdb last -F -f wtmp.db

Divisez par 1 000 000 avant la conversion, puisque les heures sont en microsecondes. Son compagnon lastlog2 (/var/lib/lastlog/lastlog2.db) utilise une table Lastlog2(Name, Time, TTY, RemoteHost, Service) avec Time en secondes.

Termes associés

  • wtmp et btmp : le format binaire qu’il remplace.
  • lastlog : remplacé à son tour par lastlog2.
  • pam_unix : les noms de service PAM stockés dans Service.

Linux Log Parser lit wtmp.db et lastlog2.db. Voir l’analyse forensique de wtmp, btmp et lastlog.