El problema
Bots y scanners automatizados prueban la infraestructura todo el día. El cuello de botella no es generar más alertas. Es separar lo que de verdad merece atención y responder a tiempo.
En este caso real, el LLM mira únicamente el tráfico que pasó por el WAF. Lo que ya bloqueó el control tradicional sale antes del pipeline.
Arquitectura real
WAFCada request se convierte en evento: IP, path, user-agent, status y acción.
Recolección + filtroUn Worker mantiene una ventana de eventos y elimina lo que ya fue bloqueado, los assets conocidos y el ruido predecible.
LLMRecibe un resumen estructurado y devuelve la decisión en JSON.
GuardrailsAllow list, confianza mínima, excepciones y acciones habilitadas por categoría.
AcciónBloqueo con TTL en el borde y alerta con evidencia para revisión.
Qué entra a la IA
- Prompt de sistema con rol de analista blue team, el stack real y reglas sobre lo que no debe reportarse.
- Top de IPs, paths y user-agents del periodo, siempre con status HTTP y ASN.
- Paths raros, donde suelen aparecer los scanners de directorios y la enumeración.
- Sospechosos predetectados por reglas simples, como traversal, SQLi, .env y web shell, para que la IA los valide.
- Contexto operativo: origen en nube, reincidencia e historial de bloqueo.
Qué sale de la IA
El texto libre no controla la acción. La salida es estructurada para que el código pueda validarla antes de ejecutar.
{
"clean": false,
"threats": [{
"tipo": "Probing de archivos sensibles",
"categoria": "git_env_exposto",
"host_path": "api.ejemplo.com/.env",
"ip": "203.0.113.7",
"severidade": "ALTO",
"confianca": 88,
"regra_sugerida": "Bloquear /.env* en el WAF"
}]
}La categoría viene de una lista cerrada. Severidad y confianza las valida el código. Si el modelo se sale del contrato, cae en fallback, nunca en acción.
Guardrails que hacen posible la autonomía
Nada bloquea por defectoLa acción automática tiene que habilitarse por severidad y categoría, con lista y TTL definidos.
La allow list es absolutaClientes, socios, colaboradores y orígenes protegidos no se bloquean ni siquiera frente a una detección.
Confianza mínimaPor debajo del corte, el sistema alerta y deja la decisión en manos de una persona.
La ambigüedad llama al humanoCuando el contexto no alcanza, la acción automática no es el fallback.
Acción reversibleLos bloqueos expiran por TTL y toda acción deja evidencia.
Receta para reproducir la idea
Ingredientes
- Logs de WAF/CDN accesibles por API, Logpush, bucket o equivalente.
- Job periódico, Worker, Lambda o proceso serverless.
- LLM capaz de devolver JSON estructurado.
- Lista de bloqueo consumida por el WAF, con TTL.
- Canal de alerta con enlace a la evidencia.
Lecciones que ahorran semanas
- Prefiltra antes del LLM. El ruido predecible se resuelve mejor con código.
- Reglas para lo binario, IA para el juicio contextual.
- El status HTTP y el contexto cambian el significado de un evento.
- Un falso positivo es un bug por corregir, no un motivo para apagar el motor.
- Empieza en modo recomendación. Sube la autonomía cuando midas confianza y error.
Para llevar: La IA no es un generador de reportes. Actúa, dentro de los límites que nosotros definimos.
Llévate este caso
En Markdown para pegar en tu IA, o como punto de partida de tu propio playbook.