En este tutorial, veremos cómo encontrar los últimos usuarios que iniciaron sesión en Linux usando last
, lastb
y lastlog
comandos con ejemplos.
Introducción
Como administrador del sistema Linux, debe verificar periódicamente la fecha y la hora de inicio de sesión de los usuarios en su servidor Linux. Le brinda algunos detalles útiles, como cuántos usuarios están activos, cuántos usuarios están inactivos y cuándo inician sesión y por cuánto tiempo, etc.
Si algunas cuentas de usuario no se han utilizado durante mucho tiempo, simplemente puede bloquearlas si ya no las necesita. También puede usar las últimas fechas de inicio de sesión cuando audite sus servidores Linux e investigue qué usuario podría haber causado el problema.
Afortunadamente, el sistema operativo GNU/Linux incluye los comandos triples, a saber, last
, lastb
y lastlog
para mostrar las fechas de inicio de sesión de los usuarios recientes.
1. Mostrar la lista de los últimos usuarios que iniciaron sesión en Linux con el último comando
Como su nombre lo dice, el last
El comando se usa para ver los últimos usuarios que iniciaron sesión en sistemas Linux y similares a Unix. Lee a través del /var/log/wtmp
y encuentra todos los usuarios conectados y desconectados desde que se creó ese archivo. También puede enumerar las fechas de inicio de sesión recientes de un usuario específico e incluso encontrar quién reinició el sistema Linux con la ayuda de last
comando.
Tenga en cuenta que su sistema solo registra información en el wtmp
expediente. Si este archivo no está disponible por algún motivo, simplemente créelo con touch
comando como a continuación:
$ sudo touch /var/log/wtmp
Ahora averigüemos las fechas y horas de inicio de sesión recientes con last
comando.
Para mostrar los últimos inicios de sesión, su duración y otra información en su sistema Linux, simplemente ejecute:
$ last
Salida de muestra:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running reboot system boot 5.4.0-48-generic Fri Nov 20 10:13 - 11:44 (01:31) . . . reboot system boot 5.4.0-33-generic Wed Jul 8 08:49 - 11:41 (02:52) ostechni web console Mon Jul 6 08:19 - 08:20 (00:00) ostechni pts/2 192.168.225.37 Mon Jul 6 08:14 - 08:30 (00:15) ostechni pts/0 192.168.225.37 Mon Jul 6 07:41 - 12:27 (04:45) reboot system boot 5.4.0-33-generic Mon Jul 6 07:21 - 12:27 (05:06) ostechni pts/3 192.168.225.37 Sat Jul 4 12:01 - 12:12 (00:10) ostechni pts/2 192.168.225.37 Sat Jul 4 11:14 - 13:01 (01:46) ostechni pts/0 192.168.225.37 Sat Jul 4 07:55 - 13:01 (05:05) reboot system boot 5.4.0-33-generic Sat Jul 4 07:53 - 13:03 (05:09) ostechni tty1 Fri May 29 10:07 - down (00:00) reboot system boot 5.4.0-33-generic Fri May 29 10:06 - 10:07 (00:01) ostechni pts/0 192.168.225.37 Fri May 29 09:36 - 10:06 (00:29) ostechni tty1 Fri May 29 09:36 - down (00:29) reboot system boot 5.4.0-31-generic Fri May 29 09:35 - 10:06 (00:30) ostechni tty1 Sun May 24 13:17 - down (00:02) reboot system boot 5.4.0-31-generic Sun May 24 13:16 - 13:20 (00:03) wtmp begins Sun May 24 13:16:52 2020
Como puede ver en el resultado anterior, el último comando muestra los siguientes detalles de inicios de sesión recientes:
- Nombre del usuario. Si algún usuario todavía está conectado, también mostrará esos detalles.
- Tipo de dispositivo terminal (por ejemplo, tty o pts) en el que tuvo lugar la sesión.
- Dirección IP de origen o nombre de host desde el que el usuario inició sesión.
- La marca de fecha y hora de inicio de sesión (es decir, las horas de inicio y finalización de la sesión de inicio de sesión).
- La duración total de la sesión.
- La última línea indica la fecha y la hora de la primera sesión registrada en el
wtmp
archivo de registro.
En el resultado anterior, es posible que haya notado que hay una entrada de inicio de sesión de un usuario especial llamado reboot
. El last
El comando mantiene los registros de este usuario cada vez que se inicia la computadora.
Cuando ejecutamos last
comando sin ninguna opción, mostrará la salida de registro completa. Tiene muchas opciones para filtrar, formatear y limitar la salida según su gusto. He incluido ejemplos de las opciones más comunes.
1.1. Limite la salida a un usuario específico
Como ya se dijo, el last
El comando enumera todos los inicios de sesión recientes registrados en el wtmp
expediente. Si desea mostrar los inicios de sesión recientes de un usuario específico (es decir, ver todos los inicios de sesión de un usuario específico), por ejemplo, ostechnix , el comando sería:
$ last ostechnix
Salida de muestra:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28) [...]
También puede especificar varios nombres de usuario separados por comas como se muestra a continuación:
$ last ostechnix sk
1.2. Limite la salida a tty o pts específicos
El last
El comando mantiene el registro del tipo de dispositivo terminal (por ejemplo, tty o pts) en el que tuvo lugar la sesión.
Digamos, por ejemplo, que los usuarios pueden haber iniciado sesión en la máquina Linux de forma local o mediante ssh. Si desea restringir la salida a un tty
específico , simplemente ejecute:
$ last tty1
Salida de muestra:
ostechni tty1 Thu Jan 7 08:29 still logged in ostechni tty1 Wed Jan 6 11:00 - down (02:31) ostechni tty1 Fri Nov 20 11:52 - down (00:38) [...]
Los nombres de ttys se pueden abreviar. Por ejemplo, puede ejecutar last 1
en lugar de last tty1
.
Del mismo modo, para enumerar solo pts
inicios de sesión de las sesiones, ejecute:
$ last pts/0 ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28) sk pts/0 192.168.225.37 Wed Jan 6 11:02 - 11:02 (00:00) [...]
También puede especificar varios nombres de usuario con ttys como a continuación:
$ last ostechnix sk pts/0 tty1
1.3. Limite la salida a un número específico de líneas
El wtmp
El archivo de registro podría tener una gran cantidad de entradas. Si desea restringir la salida de last
comando a cierto número de líneas, use -n
marca como a continuación:
$ last -n 5
O,
$ last -5
El comando anterior solo mostrará las 5 líneas en la salida:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28) sk pts/0 192.168.225.37 Wed Jan 6 11:02 - 11:02 (00:00) wtmp begins Sun May 24 13:16:52 2020
1.4. Mostrar nombre de host en lugar de dirección IP
Por defecto, last
El comando muestra la IP de origen desde la que el usuario inició sesión. Si desea mostrar el nombre de host en lugar de la dirección IP, use -d
(o --dns
) opción:
$ last -d -5
También puede mostrar los nombres de usuario completos y los nombres de dominio en la salida con -w
(o --fullnames
) opción.
1.5. Ocultar nombre de host y dirección IP
Para suprimir el nombre de host o el campo IP, use -R
opción.
$ last -5 -R
Salida de muestra:
ostechni pts/0 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot Thu Jan 7 08:20 still running ostechni pts/0 Wed Jan 6 11:02 - 13:31 (02:28) sk pts/0 Wed Jan 6 11:02 - 11:02 (00:00) wtmp begins Sun May 24 13:16:52 2020
1.6. Mostrar registros de inicio de sesión de usuario en un momento específico
El -p
(o --present
) se usa para encontrar quién inició sesión en ese momento o en un momento específico.
Por ejemplo, ejecute el siguiente comando para enumerar los últimos usuarios que iniciaron sesión a las 8:30 de hoy:
$ last -p 08:30
Salida de muestra:
ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running wtmp begins Sun May 24 13:16:52 2020
Para enumerar quién está conectado actualmente (es decir, en el momento de ejecutar este comando, ejecute:
$ last -p now
1.7. Mostrar usuarios registrados dentro de un intervalo de tiempo específico
El last
El comando tiene dos opciones, a saber, -s
(--since
) y -t
(--until
) para mostrar los usuarios registrados dentro de un período de tiempo específico. El -s
La opción se usa para mostrar el estado de los inicios de sesión desde el tiempo especificado y el -t
La opción se utiliza para mostrar el estado de los inicios de sesión hasta el momento especificado.
Por ejemplo, si desea mostrar los últimos inicios de sesión que tuvieron lugar desde 2021-01-07
al 2021-01-11
, el comando es:
$ last -s 2021-01-07 -t 2021-01-11
Salida de muestra:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 - 13:16 (04:46) ostechni tty1 Thu Jan 7 08:29 - down (04:47) reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 - 13:16 (04:56) wtmp begins Sun May 24 13:16:52 2020
Para ver los inicios de sesión recientes de ayer hasta hoy , ejecuta:
$ last -s yesterday -t today
Si desea enumerar solo los registros de inicio de sesión desde el 7 de enero de 2021 hasta la fecha, ejecute:
$ last -s 2021-01-07 ostechni pts/0 192.168.225.37 Mon Jan 11 06:39 still logged in reboot system boot 5.4.0-59-generic Mon Jan 11 06:37 still running ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 - 13:16 (04:46) ostechni tty1 Thu Jan 7 08:29 - down (04:47) reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 - 13:16 (04:56) wtmp begins Sun May 24 13:16:52 2020
1.8. Mostrar los últimos usuarios que iniciaron sesión con fecha y hora completas
El -F
(--fulltimes
) se utiliza para mostrar la fecha y hora completas de inicio y cierre de sesión en last
salida del comando.
$ last -5 -F
Salida de muestra:
ostechni pts/0 192.168.225.37 Mon Jan 11 06:39:29 2021 still logged in [...]
1.9. Mostrar nombre de host en la última columna
El -a
(--hostlast
) se usa para mostrar la última columna del nombre de host para evitar el truncamiento.
$ last -d -a ostechni pts/0 Mon Jan 11 06:39 still logged in ostechnix [...]
1.10. Ver los últimos registros de inicio de sesión del pseudo usuario "reiniciar"
Como mencioné anteriormente, el último comando mantiene el registro de un pseudo usuario especial llamado "reiniciar" y "apagar".
Para ver los últimos detalles de inicio de sesión de los usuarios "reiniciar" y "apagar", use los siguientes comandos:
$ last reboot
$ last shutdown
2. Mostrar intentos de inicio de sesión fallidos usando lastb en Linux
El lastb
es igual que last
comando, pero solo enumera todos los intentos de inicio de sesión incorrectos. Obtiene los detalles de inicio de sesión fallidos de /var/log/btmp
archivo.
Tenga en cuenta que su sistema solo registra información en el btmp
archivo si está presente. Si este archivo no está disponible por algún motivo, simplemente créelo con touch
comando como a continuación:
$ sudo touch /var/log/btmp
Ahora podemos mostrar los intentos de inicio de sesión fallidos usando el comando lastb como se muestra a continuación:
$ sudo lastb
Salida de muestra:
UNKNOWN tty1 Mon Jan 11 07:51 - 07:51 (00:00) sk tty1 Mon Jan 11 07:51 - 07:51 (00:00) UNKNOWN tty1 Mon Jan 11 07:51 - 07:51 (00:00) sk tty1 Mon Jan 11 07:51 - 07:51 (00:00) ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00) ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00) ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00) UNKNOWN tty1 Wed Jan 6 10:59 - 10:59 (00:00) btmp begins Wed Jan 6 10:59:57 2021
Los comandos anteriores enumeran todos los intentos de inicio de sesión fallidos de todos los usuarios en el sistema Linux. También muestra los intentos fallidos de inicio de sesión que se realizaron a través de SSH.
3. Encuentre los últimos usuarios que iniciaron sesión en Linux con el comando lastlog
El último registro El comando muestra el inicio de sesión más reciente de todos los usuarios o de un usuario específico en sistemas operativos Linux y similares a Unix. Recupera la lista de los últimos usuarios que iniciaron sesión de /var/log/lastlog
archivo y muestra el resultado en la salida estándar.
Para mostrar el inicio de sesión más reciente de todos los usuarios, ejecute:
$ lastlog
Salida de muestra:
Username Port From Latest root **Never logged in** daemon **Never logged in** bin **Never logged in** [...] systemd-coredump **Never logged in** ostechnix tty1 Mon Jan 11 07:51:46 +0000 2021 lxd **Never logged in** dnsmasq **Never logged in** libvirt-qemu **Never logged in** libvirt-dnsmasq **Never logged in** cockpit-ws **Never logged in** cockpit-wsinstance **Never logged in** libvirtdbus **Never logged in** _flatpak **Never logged in** sk pts/0 192.168.225.37 Wed Jan 6 11:02:17 +0000 2021 root **Never logged in** nobody **Never logged in**
Como puede ver en el resultado anterior, lastlog
El comando muestra los últimos registros de inicio de sesión de las cuentas de usuario del sistema, así como otras cuentas de servicio como bin
, daemon
, sys
, mail
, nobody
etc
El lastlog
El comando imprime el nombre de inicio de sesión, el puerto, la dirección IP de origen desde la que el usuario inició sesión y la última fecha y hora de inicio de sesión. Si un usuario nunca ha iniciado sesión, imprimirá el mensaje ** Never logged in**
en lugar del puerto y la hora en la salida.
Quizás se pregunte por qué hay muchas cuentas de servicio que nunca han iniciado sesión. Esto se debe a que los shells de inicio de sesión para estas cuentas están configurados en /sbin/nologin
. Es una práctica de seguridad común utilizada para limitar el acceso directo al shell.
3.1. Mostrar los detalles de la última sesión iniciada de un usuario específico
Si desea mostrar el último registro de registro de un usuario específico, por ejemplo, ostechnix , el comando sería:
$ lastlog -u ostechnix
Salida de muestra:
Username Port From Latest ostechnix tty1 Mon Jan 11 07:51:46 +0000 2021
3.2. Mostrar los últimos registros de inicio de sesión anteriores o recientes a X días
El lastlog
El comando puede mostrar registros de inicio de sesión recientes antes de o más recientes que X días.
Por ejemplo, puede obtener registros de inicio de sesión recientes de todos los usuarios antes de 5 días usando -b
marca como a continuación:
$ lastlog -b 5
De manera similar, para mostrar los registros de inicio de sesión de más de 5 días, use -t
bandera:
$ lastlog -t 5
3.3. Eliminar o borrar la última información de inicio de sesión usando lastlog en Linux
Si no desea el último registro de registro de un usuario, simplemente bórrelo usando -C
(--clear
) bandera:
$ sudo lastlog -u ostechnix -C
Para verificar si se borra el registro de registro, ejecute:
$ lastlog -u ostechnix Username Port From Latest ostechnix **Never logged in**
Obtener ayuda
Para obtener más detalles, consulte la sección de ayuda del comando respectivo.
$ last --help
$ lastb --help
$ lastlog --help
O revise las páginas del manual de cada comando:
$ man last
$ man lastb
$ man lastlog
Conclusión
El last
, lastb
y lastlog
commands viene al rescate para detectar actividades sospechosas de los usuarios en un sistema Linux. Encontrar quién se conectó (o se desconectó) recientemente del servidor Linux, cuándo se conectó y por cuánto tiempo son los detalles importantes que definitivamente lo ayudarán en los momentos de solución de problemas.
Lectura relacionada:
- Cómo encontrar usuarios conectados actualmente en Linux
- Cómo enumerar todos los usuarios en Linux
- Cómo monitorear la actividad del usuario en Linux
- Cómo limitar el acceso del usuario al sistema Linux