El comando last en Linux: historial de inicios de sesión

Introducción

En la administración de sistemas Linux, conocer quién ha accedido a una máquina y cuándo es fundamental para auditorías de seguridad, solución de problemas y cumplimiento de normativas. El comando last ofrece una forma rápida y directa de consultar el historial de inicios de sesión almacenado en el archivo /var/log/wtmp. En este artículo veremos cómo funciona, qué opciones nos brinda y cómo interpretar su salida para obtener información valiosa sobre los accesos al sistema.

¿Qué es el comando last?

El comando last pertenece al paquete de utilidades bsdutils y se encarga de leer el registro de conexiones que mantiene el demonio de inicio de sesión. Cada vez que un usuario inicia o finaliza una sesión, el sistema escribe una entrada en /var/log/wtmp. last procesa esas entradas y las muestra en formato legible, indicando nombre de usuario, terminal, dirección IP o nombre de host, fecha y hora de inicio y, cuando corresponde, la hora de cierre.

Sintaxis básica

La forma más simple de usar last es ejecutarlo sin argumentos:

last

Esto mostrará todas las sesiones registradas, desde la más reciente hasta la más antigua. Si deseamos limitar la salida a un número determinado de líneas, podemos usar head o la opción -n de last misma:

last -n 10

También es posible consultar el historial de un usuario concreto indicando su nombre después del comando:

last juan

Opciones más usadas

  • -a: muestra el nombre del host o la dirección IP en la última columna, facilitando la identificación del origen de la conexión.
  • -F: muestra la fecha y hora completa, incluyendo segundos, útil cuando se necesita precisión.
  • -i: muestra siempre la dirección IP en lugar de intentar resolver el nombre de host, lo que evita demoras por consultas DNS.
  • -n NUM: limita la salida a NUM líneas, equivalente a usar head -n NUM pero integrado en el comando.
  • -p YYYY-MM-DD: muestra las sesiones que estuvieron activas en una fecha específica, permitiendo filtrar por día.
  • -s YYYY-MM-DD: muestra las sesiones desde una fecha de inicio determinada.
  • -u: indica que se debe mostrar el nombre de usuario en formato completo, útil cuando se tienen cuentas con nombres largos o similares.

Ejemplos prácticos

Supongamos que queremos revisar los últimos cinco accesos al sistema, incluyendo la dirección IP de origen:

last -a -n 5

Para ver todas las sesiones del usuario maria que iniciaron sesión hoy, podemos combinar -s con la fecha de hoy:

last maria -s $(date +%Y-%m-%d)

Si necesitamos un informe de todas las conexiones fallidas (sesiones que no cerraron correctamente) podemos observar las líneas que terminan en down o crash en la salida de last:

last | grep -E "down|crash"

En entornos con múltiples interfaces de red, a veces es útil forzar la visualización de IPs para evitar resoluciones DNS fallidas:

last -i

Finalmente, para obtener un resumen rápido de cuántas veces ha iniciado sesión cada usuario en la última semana, podemos usar:

last -s $(date -d "7 days ago" +%Y-%m-%d) | awk '{print $1}' | sort | uniq -c | sort -nr

Interpretación de la salida

Cada línea de la salida de last contiene los siguientes campos, separados por espacios:

  • Nombre de usuario.
  • Terminal (por ejemplo pts/0 para una conexión SSH o tty1 para una consola local).
  • Dirección IP o nombre de host (dependiendo de las opciones usadas).
  • Fecha y hora de inicio de la sesión.
  • Fecha y hora de finalización o la palabra still logged in si la sesión sigue activa.
  • Duración de la sesión (en horas y minutos).

Si la sesión terminó de forma inesperada, el campo de finalización puede mostrar down, crash o shutdown. Estos indicadores son valiosos para detectar posibles problemas de estabilidad o intentos de intrusión.

Consideraciones de seguridad

El archivo /var/log/wtmp es accesible únicamente por el usuario root o por miembros del grupo adm en muchas distribuciones. Por eso, ejecutar last sin privilegios suele limitarse a mostrar solo las entradas del propio usuario. Para auditorías completas se necesita elevar privilegios con sudo. Además, es recomendable rotar y proteger este registro, ya que contiene información sensible sobre quién y desde dónde se accede al sistema. En servidores expuestos a Internet, combinar last con herramientas como fail2ban o auditd ayuda a correlacionar intentos fallidos con accesos exitosos.

Alternativas y complementos

  • lastb: muestra los intentos de inicio de sesión fallidos leyendo /var/log/btmp.
  • utmpdump: permite volcar el contenido de /var/run/utmp, que contiene las sesiones actualmente activas.
  • w y who: ofrecen una vista resumida de los usuarios conectados en tiempo real.
  • Soluciones de SIEM o sistemas de registro centralizado (por ejemplo, Elastic Stack) pueden indexar wtmp para búsquedas avanzadas y alertas.

Conclusión

El comando last es una herramienta esencial para cualquier administrador de Linux que necesite revisar el historial de inicios de sesión de forma rápida y sin configuraciones complejas. Con sus diversas opciones permite adaptar la salida a necesidades específicas, desde simples consultas de accesos recientes hasta análisis forenses detallados. Combinado con buenas prácticas de gestión de logs y medidas de seguridad, last contribuye a mantener la visibilidad y el control sobre quién accede a nuestros sistemas.

Esta obra está bajo una Licencia Creative Commons Atribución 4.0 Internacional para Francesc Roig francesc@vivaldi.net .

EspañolesEspañolEspañol