¿Quiénes fueron los últimos usuarios logueados en mi servidor?

Valoración del Usuario:  / 0
MaloBueno 

En este artículo explico cómo manipular la salida del comando last para determinar quiénes fueron los últimos usuarios logueados en un sistema GNU/Linux.

En GNU/Linux, cada vez que un usuario ingresa al sistema utilizando la herramienta login, se guarda un registro de su acceso en un archivo de log (generalmente en el archivo /var/log/wtmp). La herramienta login es la que busca al usuario en el archivo /etc/passwd y gestiona el proceso de autenticación y autorización. Es decir, determina si el usuario es quien dice ser (mediante una contraseña) y si tiene permiso para ingresar al sistema (tiene acceso a una terminal o sólo se utiliza para autenticar un servicio o es el usuario con el que se ejecuta un demonio).



Además de los accesos desde la terminal conectada directamente al sistema (TTY) algunos servicios como SSH, SCP y SFTP utilizan la herramienta login para autenticar y autorizar usuarios. Inclusive es posible restringir el acceso a estos servicios sólo a aquellos usuarios que pertenezcan a un grupo específico.

La herramienta last muestra un listado de los últimos usuarios que han ingresado al sistema. Esta busca en el archivo /var/log/wtmp y por defecto lista todos los usuarios que han ingresado desde que se creó el archivo de log. lastb es similar a last excepto que busca en el archivo /var/log/btmp, el cual registra los intentos de acceso fallidos.

En un servidor, la salida por defecto del comando last puede ser muy extensa y suele truncar los nombres de host, por lo tanto es necesario manipularla utilizando los parámetros disponibles.

La salida de last está ordenada con los acceso más recientes al comienzo. Para mostrar sólo algunos de los últimos accesos (en vez de todos los que se encuentran registrados desde la creación del archivo /var/log/wtmp) se debe utilizar la opción -n. Por ejemplo, para que muestre sólo los últimos 5 accesos, utilizar:

[root@pepeserver154 ~]# last -n 5
root     pts/3        193.202.112.211  Tue Nov 26 16:24   still logged in
root     pts/5        pepews.linuxito. Wed Nov 20 08:47 - 11:10  (02:22)
root     pts/3        pepews.linuxito. Wed Nov 20 08:16 - 14:10  (05:53)
root     pts/3        pepews.linuxito. Thu Nov 14 12:58 - 14:10  (01:11)
root     pts/3        pepews.linuxito. Wed Nov 13 07:52 - 13:03  (05:10)

wtmp begins Mon Aug 13 13:56:09 2012

También es posible omitir la letra n y poner el número directamente:

[root@pepeserver154 ~]# last -5
root     pts/3        193.202.112.211  Tue Nov 26 16:24   still logged in   
root     pts/5        pepews.linuxito. Wed Nov 20 08:47 - 11:10  (02:22)    
root     pts/3        pepews.linuxito. Wed Nov 20 08:16 - 14:10  (05:53)    
root     pts/3        pepews.linuxito. Thu Nov 14 12:58 - 14:10  (01:11)    
root     pts/3        pepews.linuxito. Wed Nov 13 07:52 - 13:03  (05:10)    

wtmp begins Mon Aug 13 13:56:09 2012

La primera columna muestra el nombre de usuario; la segunda la terminal asociada; la tercera el nombre de host desde donde ingresó; la cuarta la fecha de ingreso; y la quinta la fecha de salida. Por último muestra el tiempo total en el sistema, entre paréntesis. El problema más común es que las columnas poseen un ancho fijo, por lo que el nombre de host (un dato que suele ser de interés) queda truncado. Para corregir esto es posible mostrar el nombre de host en la última columna, utilizando la opción -a:

[root@pepeserver154 ~]# last -an 5
root     pts/3        Tue Nov 26 16:24   still logged in    193.202.112.211
root     pts/5        Wed Nov 20 08:47 - 11:10  (02:22)     pepews.linuxito.com
root     pts/3        Wed Nov 20 08:16 - 14:10  (05:53)     pepews.linuxito.com
root     pts/3        Thu Nov 14 12:58 - 14:10  (01:11)     pepews.linuxito.com
root     pts/3        Wed Nov 13 07:52 - 13:03  (05:10)     pepews.linuxito.com

wtmp begins Mon Aug 13 13:56:09 2012

Como los sistemas GNU/Linux guardan tanto el nombre de host como IP, es posible mostrar las direcciones IP, en lugar de hostnames, utilizando la opción -i:

[root@pepeserver154 ~]# last -ain 5
root     pts/3        Tue Nov 26 16:24   still logged in    193.202.112.211
root     pts/5        Wed Nov 20 08:47 - 11:10  (02:22)     167.34.5.122
root     pts/3        Wed Nov 20 08:16 - 14:10  (05:53)     167.34.5.122
root     pts/3        Thu Nov 14 12:58 - 14:10  (01:11)     167.34.5.122
root     pts/3        Wed Nov 13 07:52 - 13:03  (05:10)     167.34.5.122

wtmp begins Mon Aug 13 13:56:09 2012

Si se desean mostrar las fechas en formato completo, utilizar -F:

[root@pepeserver154 ~]# last -aiFn 5
root     pts/3        Tue Nov 26 16:24:14 2013   still logged in                       193.202.112.211
root     pts/5        Wed Nov 20 08:47:44 2013 - Wed Nov 20 11:10:42 2013  (02:22)     167.34.5.122
root     pts/3        Wed Nov 20 08:16:40 2013 - Wed Nov 20 14:10:02 2013  (05:53)     167.34.5.122
root     pts/3        Thu Nov 14 12:58:45 2013 - Thu Nov 14 14:10:04 2013  (01:11)     167.34.5.122
root     pts/3        Wed Nov 13 07:52:56 2013 - Wed Nov 13 13:03:10 2013  (05:10)     167.34.5.122

wtmp begins Mon Aug 13 13:56:09 2012

Por último un ejemplo con la herramienta lastb, la cual muestra los intentos de acceso fallidos (algo de suma importancia en lo que respecta a la seguridad de nuestro servidor):

[root@pepeserver154 ~]# lastb -ia
root     ssh:notty    Tue Nov 26 16:24 - 16:24  (00:00)     193.202.112.211
         ssh:notty    Fri Nov 22 12:19 - 12:19  (00:00)     107.22.83.149
         ssh:notty    Fri Nov 22 12:19 - 12:19  (00:00)     107.22.83.149

btmp begins Fri Nov 22 12:19:52 2013

Espero que les haya servido!



Suscribirse

    Registrate para recibir las novedades y artículos por correo electrónico.

Linuxito en G+