Skip to content

Glosario

wtmp y btmp

Registros binarios de inicio de sesión en Linux: /var/log/wtmp guarda el historial de sesiones, arranques y apagados; /var/log/btmp, los intentos fallidos.

/var/log/wtmp y /var/log/btmp son los registros binarios de inicio de sesión de Linux. wtmp es el historial de sesiones interactivas, arranques y apagados, que se lee con last; btmp contiene los intentos fallidos de inicio de sesión, que se leen con lastb. Ambos los escriben directamente login, sshd y PAM, no syslog, y logrotate suele rotarlos cada mes conservando una generación antigua (wtmp.1, btmp.1).

Los dos archivos son secuencias de registros struct utmp de tamaño fijo: 384 bytes en x86_64, donde los campos de hora son de 32 bits, y 400 bytes en aarch64, donde son de 64 bits. last usa la estructura de la máquina en la que se ejecuta, así que un wtmp de aarch64 leído en una estación x86_64 da basura o nada. Un inicio de sesión es un registro USER_PROCESS; el cierre, un registro DEAD_PROCESS en el mismo terminal con el nombre de usuario vacío.

Por qué importa en una investigación

Al ser independiente de syslog, wtmp confirma o contradice auth.log y el journal. Una sesión SSH interactiva presente en auth.log, el journal y audit.log pero ausente de wtmp, en un periodo que wtmp cubre, apunta a un limpiador de logs. Estas herramientas suelen sobrescribir los registros con ceros para que el tamaño del archivo siga alineado: last los omite sin avisar, pero utmpdump muestra un registro de tipo 0, sin usuario y con fecha de 1970. Un tamaño de archivo que no es múltiplo del tamaño de registro, o horas que retroceden, son otros indicios. btmp es una tercera copia de los intentos de adivinar contraseñas, útil cuando se limpiaron los logs de texto; trátalo como sensible, porque a veces los usuarios escriben su contraseña en el campo del nombre de usuario.

Ejemplo

TZ=UTC last -F -i -x -f wtmp        # fechas completas, IP, reinicios y apagados
TZ=UTC lastb -F -i -f btmp          # inicios de sesión fallidos
utmpdump wtmp > wtmp.txt            # todos los registros, incluidos los puestos a cero

Define TZ=UTC; si no, last muestra las horas en la zona de la máquina de análisis. El SSH no interactivo (un comando remoto, scp, sftp) a menudo no deja registro en wtmp, y eso es normal.

Términos relacionados

  • utmp: las sesiones actuales, con el mismo formato.
  • lastlog: el último inicio de sesión por UID, escrito de forma independiente.
  • wtmpdb: el sustituto en SQLite.

Linux Log Parser lee ambas estructuras y señala los registros puestos a cero. Consulta el análisis forense de wtmp, btmp y lastlog.