Monitoreo de usuarios activos y accesos: comandos who
, w
, last
1. ¿Por qué es importante monitorizar a los usuarios?
Linux, al igual que cualquier otro servidor (o incluso una malvada caja con sitios web), ofrece la posibilidad de que muchos usuarios trabajen simultáneamente. ¿Pero qué pasa si tu servidor ha sido vulnerado? ¿O si algún colega malintencionado decide "accidentalmente" borrar archivos importantes una noche? Monitorizar la actividad de los usuarios nos ayuda a entender quién, cuándo y desde dónde accedió al sistema, así como qué procesos estaban ejecutando. Es como una cámara de video, pero para tu servidor.
Herramientas principales de monitorización
Para evaluar la actividad de los usuarios en un servidor, Linux ofrece tres comandos clave:
who
— muestra los usuarios actuales que están trabajando en el sistema.w
— proporciona un poco más de información: qué están haciendo los usuarios y la carga del sistema.last
— muestra el historial de inicios de sesión en el sistema.
Cada uno de estos comandos tiene sus propias particularidades y es aplicable en diferentes escenarios. Vamos a desglosarlos con ejemplos.
2. Comando who
El comando who
muestra una lista de usuarios que están actualmente conectados al sistema. Es como un "registro de entrada", donde puedes echar un vistazo y ver quién está en el servidor.
who
Ejemplo del resultado del comando:
user1 pts/0 2023-10-20 09:10 (192.168.1.100)
root pts/1 2023-10-20 09:15 (192.168.1.101)
Qué vemos aquí:
- El nombre del usuario
user1
,root
. - El terminal al que están conectados
pts/0
,pts/1
. - La hora de inicio de sesión
2023-10-20 09:10
. - Desde dónde se conectaron
192.168.1.100
.
Opciones para who
:
who -a
: Muestra también información del sistema, como la hora de arranque, procesos en funcionamiento y usuarios.who am i
: Muestra solo información sobre el usuario que ejecutó el comando.
3. Comando w
Si who
solo registra quién inició sesión, w
da más info: te muestra qué está haciendo el usuario en ese momento. Esto es útil para saber si está haciendo algo productivo o algo que necesita parar de inmediato.
w
Ejemplo de salida:
10:20:42 up 1 day, 5:12, 2 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user1 pts/0 192.168.1.100 09:10 1:00 0.01s 0.01s nano app.py
root pts/1 192.168.1.101 09:15 2:00 0.02s 0.02s htop
Qué está pasando aquí:
- La primera línea da información del sistema: la hora actual, el tiempo que lleva encendido el servidor, el número de usuarios y la carga del sistema (
load average
). - La tabla muestra:
- Nombre del usuario:
user1
,root
. - El entorno de conexión del usuario:
pts/0
,pts/1
. - La dirección IP del usuario:
192.168.1.100
. - La hora en la que inició sesión:
09:10
. - El tiempo de inactividad (
IDLE
). - Lo que está haciendo el usuario en este momento (
WHAT
), por ejemplo, editando el archivoapp.py
connano
.
- Nombre del usuario:
Opciones para w
:
w -h
: Esconde los encabezados de la tabla.w username
: Muestra información solo sobre un usuario específico.
4. Comando last
Si who
y w
hablan sobre el presente, entonces last
te permite echar un vistazo al pasado. Este comando muestra el historial de todos los accesos al sistema. Lee el archivo /var/log/wtmp
, donde se registran todos los accesos de los usuarios.
last
Ejemplo de salida:
user1 pts/0 192.168.1.100 Fri Oct 20 09:10 - 09:30 (00:20)
root pts/1 192.168.1.101 Fri Oct 20 09:15 - down (00:15)
Qué vemos aquí:
- Nombre del usuario
user1
,root
. - Terminal
pts/0
,pts/1
. - Dirección IP o nombre de host
192.168.1.100
,192.168.1.101
. - Hora de acceso
Fri Oct 20 09:10
. - Hora de salida
09:30
y duración total de la sesión00:20
.
Opciones para last
:
last -n 10
: Muestra solo las últimas 10 entradas.last username
: Historial de accesos para un usuario específico.last reboot
: Muestra cuándo se reinició el servidor.
5. Ejemplo práctico: análisis de actividad de usuarios
Imaginemos que quieres averiguar quién estuvo trabajando en el servidor por la noche para entender si pasó algo sospechoso. Comencemos viendo los usuarios actuales:
who
Ahora veamos qué están haciendo:
w
Si encuentras algo raro (por ejemplo, un proceso desconocido), necesitas verificar quién inició sesión por la noche. Para esto usamos:
last
Consulta los registros para un usuario específico que haya llamado tu atención:
last user1
Si notas alguna anomalía, por ejemplo, inicio de sesión desde una IP desconocida, necesitas tomar medidas: restringir acceso, configurar autenticación de dos factores o bloquear al usuario.
6. Características y errores típicos
Cuando trabajes con comandos de monitoreo es importante recordar que:
El archivo de logs puede ser limpiado. Si alguien malintencionado eliminó registros de
/var/log/wtmp
, el comandolast
no mostrará nada. Esta es una de las razones por las cuales es importante hacer copias de seguridad regulares de los logs o enviarlos a un servidor remoto.Facilitar la comprensión de la salida. A veces la salida de los comandos puede estar sobrecargada (por ejemplo, si hay muchos usuarios). Usa filtros como
grep
para buscar la información necesaria:last | grep user1
Dependencia de la configuración del sistema. Algunos sistemas podrían no registrar logs de inicios de sesión si está deshabilitado debido a la configuración. Asegúrate de que
/var/log/wtmp
se actualiza regularmente.
¿Cómo se aplican estos conocimientos en la práctica?
- Administración de servidores. Por ejemplo, eres administrador de una empresa y necesitas monitorear la seguridad del sistema para que nadie accidental o intencionadamente "rompa todo".
- Detección de amenazas. Las herramientas de monitoreo te ayudarán a detectar intentos de acceso no autorizado.
- Auditoría del sistema. Al revisar servidores para cumplir con estándares de seguridad, estos comandos suelen usarse para analizar la actividad de usuarios.
- Diagnóstico. ¿Notas que el servidor está lento? ¡Mira quién y qué está haciendo ahí!
¡Ahora estás listo para monitorear tu sistema como un jefe! No olvides que la protección del sistema comienza con entender lo que sucede bajo su capó.
GO TO FULL VERSION