¿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

Qué registrar y qué vigilar

Después de esta lección: Puedo elegir qué registrar y qué vigilar en un sistema.

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

Una agenda copiada y nadie lo vio

La monitorización de seguridad consiste en registrar lo que ocurre en un sistema y vigilar las señales de que algo va mal. Sirve para enterarte de un ataque mientras aún puedes pararlo.

Una clínica dental descubre un lunes que alguien copió su agenda de citas el jueves. Los registros lo contaban desde el primer minuto. Nadie los miraba.

Al final de esta lección

Nota

Puedo elegir qué registrar y qué vigilar en un sistema.

Palabras clave

PalabraQué significaEjemplo
Registroun archivo donde un programa anota lo que ocurre, línea a línea
Eventoalgo que ocurre y queda anotado, como un acceso o un error
Fuenteel programa o la máquina que escribe un eventocortafuegos
Métricaun número medido a lo largo del tiempo, como los accesos por minuto
Señalun evento que te ayuda a tomar una decisión
Ruidoeventos normales que tapan las señales

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

Registro y métrica: en qué se distinguen

Un registro guarda cada evento con su hora. Sirve para saber qué pasó, a quién y desde dónde.

Una métrica es un número que se mide cada minuto o cada hora, como los accesos fallidos por minuto. Sirve para ver un cambio de un vistazo.

Necesitas las dos. La métrica te avisa de que algo cambió y el registro te dice qué fue.

Qué registrar según la fuente

FuenteQué anotaPara qué te sirve
AutenticaciónAccesos correctos y fallidosVer quién intenta entrar con claves ajenas
CortafuegosConexiones permitidas y denegadasVer escaneos y orígenes raros
Servidor webCada petición y su código de estadoVer qué páginas se atacan
Base de datosConsultas de administración y erroresVer copias masivas de datos
Sistema operativoUsuarios creados y tareas programadasVer cambios que dejan una puerta abierta

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

Señal y ruido: qué merece vigilancia

No todo evento merece un aviso. Pregúntate: si esto ocurre, ¿cambia lo que hago? Si la respuesta es no, es ruido.

Un acceso fallido es ruido, porque todos nos equivocamos. Cuarenta en un minuto desde la misma dirección son una señal.

Registra casi todo y vigila solo lo que cambiaría tu decisión.

Mira qué escribe cada fuente en el laboratorio

En el laboratorio tienes los registros de un servidor web durante un día, en la carpeta case. Todavía no buscas ningún ataque. Solo preguntas qué fuentes hay y cuánto escribe cada una.

El primer comando lista las fuentes: el registro de autenticación, auth.log, y la carpeta nginx del servidor web. El segundo cuenta sus líneas. El tercero cuenta las líneas de cada programa.

Las fuentes que hay en el laboratorio

Comando
ls case/var/log

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 escribe cada registro en un día

Comando
wc -l case/var/log/auth.log 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.

Cuántas líneas escribe cada programa

Comando
awk '{print $5}' case/var/log/auth.log | sed 's/\[.*//' | 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.

Ejemplo: lo que imprime el tercer comando

ProgramaLíneas en el díaQué te dice
CRON560Tareas programadas que se repiten: casi todo es ruido
sshd798Intentos de entrar por SSH: aquí hay señales y ruido
systemd-logind6Sesiones abiertas: pocas, merece la pena leerlas
sudo1Una orden de administración: poco, pero importante
useradd1Una cuenta creada: poco, pero cambia quién puede entrar

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

Contar eventos por fuente con Python

Contar a mano no escala. Un programa pequeño lo hace con un diccionario: la fuente es la clave y la cuenta es el valor.

Los nombres del código van en inglés, como en casi todo el código real. Los comentarios y los mensajes van en español. Ejecuta el ejemplo y cambia una línea del registro.

Un contador de eventos por fuente

Código: python
lines = [
    "09:00:01 web INFO acceso de ana",
    "09:00:04 cortafuegos AVISO paquete denegado",
    "09:00:06 web INFO acceso de luis",
    "09:00:09 cortafuegos AVISO paquete denegado",
]
counts = {}
for line in lines:
    source = line.split()[1]  # la segunda palabra es la fuente
    if source in counts:
        counts[source] = counts[source] + 1
    else:
        counts[source] = 1
print(counts)

Un error frecuente

Advertencia

Mucha gente cree que vigilar bien es avisar de todo. Un aviso por cada evento tapa las señales con ruido, y al tercer día nadie lee los avisos. Vigila pocas cosas y elígelas por la decisión que cambian.

Para ir más lejos

Una fuente que de pronto calla puede ser un aviso: alguien la apagó o dejó de funcionar. Piensa en una tienda en línea con cinco fuentes. Escribe cuáles tendrían que escribir cada minuto y cuáles no. Después di qué harías si la primera callara diez minutos.

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.