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 usarhead -n NUMpero 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 -iFinalmente, 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/0para una conexión SSH otty1para 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 insi 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.wywho: 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
wtmppara 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.


