Trescientas cuarenta alertas el lunes
Una alerta es un aviso automático de que un suceso puede ser un ataque. El triaje consiste en decidir cuál mirar primero cuando llegan muchas a la vez.
El lunes, el equipo de seguridad de una universidad abre su cola y encuentra 340 alertas. Solo son dos personas. Si las leen por orden de llegada, puede que la grave espere hasta la tarde.
Al final de esta lección
Nota
Puedo ordenar las alertas según lo que más importa.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Alerta | un aviso automático de un posible ataque | |
| Triaje | decidir qué alerta se atiende primero | |
| Gravedad | cuánto daño haría el suceso si fuera cierto | de 1 a 4 |
| Activo | lo que quieres proteger: un servidor, una base de datos, un portátil | |
| Falso positivo | una alerta que salta sin que haya ataque | |
| Falso negativo | un ataque que no hace saltar ninguna alerta |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Cómo se decide qué alerta va primero
Dos preguntas bastan para empezar. ¿Cuánto daño haría el suceso si fuera cierto? ¿Y a qué activo afecta?
Una contraseña incorrecta en un portátil de prueba importa poco. El mismo aviso en la base de datos de pagos importa mucho. Por eso se mira la gravedad y el valor del activo juntos.
Ejemplo: ordenar cuatro alertas
| Alerta | Qué dice | Gravedad | Activo crítico | Puntos |
|---|---|---|---|---|
| A1 | Escaneo de puertos contra la web de la cafetería | 1 | No | 10 |
| A2 | Cinco contraseñas incorrectas en el correo del personal | 2 | No | 20 |
| A3 | Acceso de un administrador desde otro país a la base de pagos | 3 | Sí | 35 |
| A4 | El antivirus bloquea un archivo en el portátil de contabilidad | 2 | Sí | 25 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Una regla sencilla de puntos
Los puntos son la gravedad por diez, más cinco si el activo es crítico. La tabla da A3 con 35, A4 con 25, A2 con 20 y A1 con 10.
Se atiende de más a menos puntos: A3, A4, A2 y A1. Si dos alertas empatan, se atiende primero la que llegó antes.
Ordena una cola por puntos
printf '20 A2\n35 A3\n10 A1\n25 A4\n' | sort -rnSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Falso positivo y falso negativo
Un falso positivo es una alerta que salta sin ataque. Cansa al equipo, que acaba ignorando las alertas.
Un falso negativo es un ataque que no hace saltar nada. Es peor porque nadie lo sabe.
Si afinas la regla para que salte menos, bajan los falsos positivos y suben los falsos negativos. Siempre hay que elegir un punto medio.
Cuatro casos posibles de una alerta
| La alerta | Hay ataque | No hay ataque |
|---|---|---|
| Salta la alerta | Verdadero positivo: buen aviso | Falso positivo: aviso inútil |
| No salta | Falso negativo: ataque oculto | Verdadero negativo: todo en calma |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Cuántas alertas saltarían en el laboratorio
Imagina una regla muy simple sobre el registro de autenticación: una alerta por cada contraseña incorrecta. Los dos primeros comandos cuentan cuántas saltarían en un día. El tercero cuenta las líneas de tareas programadas, que son ruido.
Aún no buscas ningún ataque. Solo compruebas cuánto trabajo daría una regla mal afinada.
Cuántas contraseñas incorrectas hay en un día
grep -c "Failed password" case/var/log/auth.logSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Cuántos accesos aceptados hay en el mismo día
grep -c "Accepted" case/var/log/auth.logSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Cuántas sesiones de tareas programadas se abren
grep -c "pam_unix(cron:session): session opened" case/var/log/auth.logSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Calcular los puntos de una alerta con Python
La regla de puntos cabe en una función. Ejecuta el ejemplo y comprueba que A3 da 35 y A2 da 20. Después cambia la regla para que un activo crítico sume diez y mira qué alerta pasa por delante.
La función de puntos
def points(severity, is_critical):
# La gravedad vale diez veces su número; un activo crítico suma cinco.
total = severity * 10
if is_critical:
total = total + 5
return total
print(points(3, True))
print(points(2, False))
Un error frecuente
Advertencia
Mucha gente cree que la alerta que más se repite es la más grave. Se repite porque la regla es ruidosa, no porque el daño sea mayor. Ordena por gravedad y por activo, no por cuántas veces salta.
Para ir más lejos
La regla de puntos es una decisión de tu equipo, no una ley. Propón otra que tenga en cuenta si la alerta ya se repitió hoy. Después busca un caso en que tu regla nueva ponga delante una alerta que no debería ir primera.