¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Registros y vigilancia

Después de esta lección: Puedo encontrar en un registro lo que salió mal.

Lección de 55 min7 comandosLaboratorio de respuesta a incidentes y forense: investiga un servidor comprometido

Los pagos fallan de madrugada

Los pagos con tarjeta de una tienda dejan de funcionar durante la noche. Nadie tocó nada. El dueño te llama a primera hora.

No adivinas. Abres el registro. Ahí está lo que hizo la máquina y cuándo.

Al final de esta lección

Nota

Puedo encontrar en un registro lo que salió mal.

Palabras clave

PalabraQué significaEjemplo
Registroun archivo donde un programa anota lo que hizo
Línea de registrouna anotación: una hora, un origen y un mensaje
Marca de tiempola fecha y la hora escritas en una línea
Filtrarquedarte solo con las líneas que importangrep
Cronologíalos sucesos de varios registros puestos en orden
Pruebauna línea de registro que respalda lo que afirmas

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una línea de registro tiene partes

Las máquinas escriben los registros con un patrón fijo, para que una herramienta pueda leerlos. Aprende el patrón una vez y cada línea será fácil.

El registro de autenticación, auth.log, anota cada intento de entrar en la máquina. Cada línea da la fecha y la hora, la máquina, el programa y un mensaje. El mensaje contiene los hechos: quién lo intentó, desde dónde y si funcionó.

Las pruebas de este laboratorio

Comando
ls case

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

¿Cuántas líneas tiene el registro de autenticación?

Comando
wc -l case/var/log/auth.log

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Las dos primeras líneas del registro web

Comando
head -n 2 case/var/log/nginx/access.log

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Las tres últimas líneas del registro web

Comando
tail -n 3 case/var/log/nginx/access.log

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo: una línea del registro web

ParteEjemploSignificado
Dirección192.0.2.77Quién pidió
Hora[14/Oct/2026:00:01:49 +0000]Cuándo
Petición"GET /login HTTP/1.1"Qué pidió
Estado200La respuesta: 200 bien, 404 no encontrado, 403 prohibido
Tamaño2557Bytes devueltos

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Primero filtra, luego cuenta

grep se queda con las líneas que contienen unas palabras. grep -c las cuenta en vez de imprimirlas.

Para contar por columna, extrae la columna con awk, ordénala y deja que uniq -c cuente las rachas. Un segundo sort -rn pone primero el número mayor.

Cuenta las contraseñas fallidas

Comando
grep -c "Failed password" case/var/log/auth.log

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cuenta los accesos aceptados

Comando
grep -c "Accepted" case/var/log/auth.log

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cuenta el registro web por código de estado

Comando
awk '{print $9}' case/var/log/nginx/access.log | sort | uniq -c

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un extracto pequeño para leer

Código: bash
Nov 03 02:11:03 tienda01 sshd[2211]: Invalid user admin from 203.0.113.44 port 4410
Nov 03 02:11:03 tienda01 sshd[2211]: Failed password for invalid user admin from 203.0.113.44 port 4410 ssh2
Nov 03 02:11:09 tienda01 sshd[2214]: Failed password for root from 203.0.113.44 port 4418 ssh2
Nov 03 02:14:40 tienda01 sshd[2230]: Accepted password for lucia from 192.0.2.25 port 5120 ssh2

Ejemplo: contar por dirección

PasoQué haceResultado en el extracto
1Quédate con las líneas Failed password2 líneas
2Extrae la dirección que sigue a "from"203.0.113.44 dos veces
3Cuenta cada dirección203.0.113.44: 2
4Busca una línea Accepted de esa direcciónNinguna: no llegó a entrar

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que la dirección con más fallos es la que consiguió entrar. Los fallos y los aciertos son líneas distintas. Una dirección puede fallar mil veces y no acertar nunca. Busca siempre una línea de acceso aceptado y comprueba que viene de la dirección que sospechas.

Una cronología une los registros

Un registro casi nunca cuenta toda la historia. Pon los sucesos de varios registros en orden de tiempo. Luego busca qué ocurrió primero.

El primer suceso es el que más importa. Lo que viene después puede ser consecuencia suya.

Ejemplo: una cronología

HoraOrigenSuceso
02:11Registro de autenticaciónMuchas contraseñas fallidas desde una dirección
02:14Registro de autenticaciónAcceso aceptado de lucia desde otra dirección
02:16Registro webPetición de una página de administración, respondida con 200
02:30Registro de cronUna tarea nueva se ejecuta por primera vez

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Sigue un registro y lee uno largo

Escribe tail -f y el nombre de un registro para ver llegar líneas nuevas. Pulsa Ctrl+C para parar. Un botón no puede pulsar Ctrl+C: escríbela tú.

Escribe less y el nombre de un registro para recorrer un archivo largo. Pulsa / y una palabra para buscar, y q para salir.

Para ir más lejos

En el registro web, la columna 7 es la página que se pidió. Construye una tubería que se quede con las líneas 404, extraiga la columna 7 y cuente cada página.

Ordénala para que la cuenta mayor salga primero y quédate con las tres primeras. Después di en una frase qué tipo de visitante pide páginas que no existen.

Sobre este laboratorio y su código: Laboratorio de respuesta a incidentes y forense: investiga un servidor comprometido

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.