Cómo usar el último comando en Linux

¿Quién, cuándo y de dónde? Las buenas prácticas de seguridad dicen que debe saber quién ha estado accediendo a su computadora Linux. Te mostramos cómo.

El archivo wtmp

Linux y otros sistemas operativos similares a Unix, como MacOS, son muy buenos para iniciar sesión. En algún lugar de las entrañas del sistema, hay un registro de casi todo lo que se pueda imaginar. El archivo de registro que nos interesa se llama wtmp. La «w» podría significar «cuándo» o «quién», nadie parece estar de acuerdo. La parte «tmp» probablemente significa «temporal», pero también podría significar «marca de tiempo».

Lo que sí sabemos es que wtmp es un registro que captura y registra cada evento de inicio y cierre de sesión. La revisión de los datos en el registro de wtmp es un paso básico para adoptar un enfoque de seguridad en las tareas de administración de su sistema. Para una computadora familiar típica, puede que no sea tan crítico desde una perspectiva de seguridad, pero es interesante poder revisar su uso combinado de la computadora.

A diferencia de muchos de los archivos de registro basados ​​en texto en Linux, wtmp es un archivo binario. Para acceder a los datos que contiene, necesitamos utilizar una herramienta diseñada para esa tarea.

Esa herramienta es el último comando.

El último comando

El último comando lee datos del registro wtmp y los muestra en una ventana de terminal.

Si escribe el último y presiona Enter, mostrar todos los registros desde el archivo de registro.

last

último comando en una ventana de terminal

Cada registro de wtmp se muestra en la ventana del terminal.

De izquierda a derecha, cada línea contiene:

El nombre de usuario de la persona que inició sesión.
La terminal en la que estaban conectados. Una entrada de terminal de: 0 significa que iniciaron sesión en la propia computadora Linux.
La dirección IP de la máquina en la que iniciaron sesión.
El sello de fecha y hora de inicio de sesión.
La duración de la sesión.

  Cómo hacer que Linux se vea como Windows 10

salida del último en una ventana de terminal

La última línea nos dice la fecha y hora de la primera sesión registrada en el registro.

Una entrada de inicio de sesión para el usuario ficticio ‘reinicio’ se ingresa en el registro cada vez que se inicia la computadora. El campo de terminal se reemplaza con la versión del kernel. La duración de la sesión iniciada para estas entradas representa el tiempo de actividad de la computadora.

Mostrar un número específico de líneas

El uso del último comando por sí solo produce un volcado de todo el registro y la mayor parte pasa por la ventana de la terminal. La parte que permanece visible son los primeros datos del registro. Probablemente esto no sea lo que querías ver.

Puede decirle al último que le proporcione un número específico de líneas de salida. Haga esto proporcionando la cantidad de líneas que desea en la línea de comando. Tenga en cuenta el guión. Para ver cinco líneas, debe escribir -5 y no 5:

last -5

último -5 en una ventana de terminal

Esto da las primeras cinco líneas del registro, que son los datos más recientes.

primeras cinco líneas de twmp en una ventana de terminal

Mostrar nombres de red para usuarios remotos

La opción -d (Sistema de nombres de dominio) le dice a Last que intente resolver las direcciones IP de los usuarios remotos en un nombre de máquina o red.

last -d

último -d en una ventana de terminal

No siempre es posible para last convertir la dirección IP en un nombre de red, pero el comando lo hará cuando sea posible.

salida del último -d en una ventana de terminal

Ocultar direcciones IP y nombres de red

Si no está interesado en la dirección IP o el nombre de la red, use la opción -R (sin nombre de host) para suprimir este campo.

último -R en una ventana de terminal

Debido a que esto da una salida más ordenada sin desagradables envolturas, esta opción se ha utilizado en todos los siguientes ejemplos. Si estuviera utilizando el último para intentar identificar una actividad inusual o sospechosa, no suprimiría este campo.

salida del último -R en una ventana de terminal

Seleccionar registros por fecha

Puede usar la opción -s (desde) para restringir la salida y mostrar solo los eventos de inicio de sesión que tuvieron lugar desde una fecha específica.

Si solo desea ver los eventos de inicio de sesión que tuvieron lugar a partir del 26 de mayo de 2019, usaría el siguiente comando:

last -R -s 2019-05-26

último -R -s 2019-05-26 en una ventana de terminal

La salida muestra registros con eventos de inicio de sesión que tuvieron lugar desde la hora 00:00 del día especificado, hasta los registros más recientes en el archivo de registro.

  Cómo jugar Far Cry 5 en Linux

Salida de la última -R -s 2019-05-26 en una ventana de terminal

Buscando hasta una fecha de finalización

Puede utilizar -t (hasta) para especificar una fecha de finalización. Esto le permite seleccionar un conjunto de registros de inicio de sesión que tuvo lugar entre dos fechas de interés.

último -R -s 2019-05-26 -t 2019-05-27 en una ventana de terminal

Este comando pide al último que recupere y muestre los registros de inicio de sesión desde las 00:00 (amanecer) del día 26 hasta las 00:00 (amanecer) del día 27. Esto reduce la lista a las sesiones de inicio de sesión que tuvieron lugar solo el día 26.

Salida de la última -R -s 2019-05-26 -t 2019-05-27 en una ventana de terminal

Formatos de fecha y hora

Puede utilizar tanto las horas como las fechas con las opciones -s y -t.

Los diferentes formatos de hora que se pueden usar con las últimas opciones que usan fechas y horas son (supuestamente):

AAAAMMDDhhmmss
AAAA-MM-DD hh: mm: ss
AAAA-MM-DD hh: mm: los segundos se establecen en 00
AAAA-MM-DD: la hora se establece en 00:00:00
hh: mm: ss – la fecha se establece en hoy
hh: mm: la fecha se establecerá en hoy, los segundos en 00
ahora
ayer – la hora está establecida en 00:00:00
hoy – la hora está establecida en 00:00:00
mañana – la hora es 00:00:00
+ 5min
-5 dias

¿Por qué ‘supuestamente’?

El segundo y tercer formato de la lista no funcionaron durante la investigación para este artículo. Estos comandos se probaron en distribuciones de Ubuntu, Fedora y Manjaro. Estos son derivados de las distribuciones Debian, RedHat y Arch, respectivamente. Eso cubre todas las familias principales de distribución de Linux.

last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00

Salida de un último comando fallido en una ventana de terminal

Como puede ver, el comando no devolvió ningún registro.

Usar el primer formato de fecha y hora de la lista con la misma fecha y hora que el comando anterior devuelve registros:

last -R -s 20190526110000 -t 20190527130000

último -R -s 20190526110000 -t 20190527130000 en una ventana de terminal

Búsqueda por unidades relativas

También especifica períodos de tiempo que se miden en minutos o días, en relación con la fecha y hora actuales. Aquí estamos solicitando registros desde hace dos días hasta hace un día.

last -R -s -2days -t -1days

last -R -s -2days -t -1days en una ventana de terminal

Ayer, hoy y ahora

Puede utilizar ayer y mañana como forma abreviada de la fecha de ayer y la fecha de hoy.

last -R -s yesterday -t today

último -R -s ayer -t hoy en una ventana de terminal

No es que esto no incluya ningún registro para hoy. Ese es el comportamiento esperado. El comando solicita registros desde la fecha de inicio hasta la fecha de finalización. No incluye registros dentro de la fecha de finalización.

  Cómo crear nuevos prefijos de Wine en Linux

Salida de la última -R -s ayer -t hoy en una ventana de terminal

La opción ahora es la abreviatura de «hoy a la hora actual». Para ver los eventos de inicio de sesión que han tenido lugar desde las 00:00 (amanecer) hasta el momento en que emite el comando, use este comando:

last -R -s today -t now

last -R -s today - t ahora en una ventana de terminal

Esto mostrará todos los eventos de inicio de sesión hasta el momento actual, incluidos los que aún están conectados.

salida de la última -R -s hoy -t ahora

La opción actual

La opción -p (presente) le permite averiguar quién inició sesión en un momento determinado.

No importa cuándo iniciaron sesión o salieron, pero si iniciaron sesión en la computadora a la hora que especifique, se incluirán en la lista.

Si especifica una hora sin una fecha por último, se supone que se refiere a «hoy».

last -R -p 09:30

último -R -p 09:30 en una ventana de terminal

Las personas que todavía están conectadas (obviamente) no tienen tiempo para desconectarse; se describen como aún conectados. Si la computadora no se ha reiniciado desde la hora que especifique, aparecerá en la lista como aún en ejecución.

Salida del último -R -p 09:30

Si usa la abreviatura ahora con la opción -p (presente), puede averiguar quién está conectado en el momento en que emite el comando.

last -R -p now

last -R -p ahora en una ventana de terminal

Esta es una forma un tanto larga de lograr lo que se puede lograr usando el comando who.

Salida del último -R -p ahora en una ventana de terminal

El último comando

El comando lastb merece mención. Lee datos de un registro llamado btmp. Hay un poco más de consenso sobre este nombre de registro. La ‘b’ significa malo, pero la parte ‘tmp’ todavía está sujeta a debate.

lastb enumera los intentos de inicio de sesión incorrectos (fallidos). Acepta las mismas opciones que la última. Debido a que fueron intentos fallidos de inicio de sesión, todas las entradas tendrán una duración de 00:00.

Debes usar sudo con lastb.

sudo lastb -R

lastb - R en una ventana de terminal

La última palabra sobre el asunto

Saber quién ha iniciado sesión en su computadora Linux y cuándo y de dónde es información útil. La combinación de esto con los detalles de los intentos fallidos de inicio de sesión le proporciona los primeros pasos para investigar un comportamiento sospechoso.