Glossar
wtmp und btmp
Binäre Linux-Login-Einträge: /var/log/wtmp enthält den Verlauf von Sitzungen, Starts und Shutdowns; /var/log/btmp fehlgeschlagene Login-Versuche.
/var/log/wtmp und /var/log/btmp sind die binären Login-Einträge von Linux. wtmp ist der Verlauf interaktiver Sitzungen, Systemstarts und Shutdowns und wird mit last gelesen; btmp enthält fehlgeschlagene Login-Versuche, gelesen mit lastb. Beide werden direkt von login, sshd und PAM geschrieben, nicht über Syslog, und logrotate rotiert sie typischerweise monatlich und behält eine alte Generation (wtmp.1, btmp.1).
Beide Dateien sind Folgen von struct utmp-Einträgen fester Größe: 384 Bytes auf x86_64, wo die Zeitfelder 32 Bit breit sind, und 400 Bytes auf aarch64, wo sie 64 Bit breit sind. last verwendet den Aufbau des Systems, auf dem es läuft; ein aarch64-wtmp, auf einer x86_64-Workstation gelesen, liefert Datenmüll oder gar nichts. Ein Login ist ein USER_PROCESS-Eintrag, der Logout ein DEAD_PROCESS-Eintrag auf demselben Terminal mit leerem Benutzernamen.
Warum es in Ermittlungen wichtig ist
Da wtmp unabhängig von Syslog ist, bestätigt oder widerlegt es auth.log und das Journal. Eine interaktive SSH-Sitzung, die in auth.log, im Journal und in audit.log steht, in wtmp aber fehlt, obwohl wtmp diesen Zeitraum abdeckt, deutet auf einen Log-Cleaner. Solche Werkzeuge überschreiben Einträge meist mit Nullen, damit die Dateigröße ausgerichtet bleibt: last überspringt sie stillschweigend, utmpdump zeigt dagegen einen Eintrag mit Typ 0, ohne Benutzer und mit Datum 1970. Eine Dateigröße, die kein Vielfaches der Eintragsgröße ist, oder rückwärts laufende Zeiten sind weitere Hinweise. btmp ist eine dritte Kopie der Passwort-Rateversuche, nützlich, wenn Textlogs bereinigt wurden; behandeln Sie die Datei als sensibel, denn Benutzer tippen ihr Passwort manchmal ins Feld für den Benutzernamen.
Beispiel
TZ=UTC last -F -i -x -f wtmp # vollständige Daten, IPs, Neustarts und Shutdowns
TZ=UTC lastb -F -i -f btmp # fehlgeschlagene Logins
utmpdump wtmp > wtmp.txt # alle Einträge, auch genullte
Setzen Sie TZ=UTC, sonst gibt last die Zeiten in der Zeitzone des Analyserechners aus. Nicht-interaktives SSH (ein Remote-Befehl, scp, sftp) hinterlässt oft keinen wtmp-Eintrag, was unbedenklich ist.
Verwandte Begriffe
- utmp: die aktuellen Sitzungen im selben Format.
- lastlog: der letzte Login pro UID, unabhängig geschrieben.
- wtmpdb: der SQLite-Ersatz.
Linux Log Parser liest beide Layouts und meldet genullte Einträge. Siehe Forensik von wtmp, btmp und lastlog.