Access Log Forensics Skill

Ayuda con la forensia de registros de acceso, identifica ataques, cache busters y otros problemas.

Documentación

access-log-forensics

Una habilidad de Claude Code que realiza un triaje forense de registros de acceso de Apache/Nginx (formato de registro combinado) y produce un informe de incidente breve y respaldado por evidencia.

Instalación

Copia esta carpeta en uno de los directorios de habilidades de Claude Code:

# per-project
cp -r access-log-forensics .claude/skills/

# or globally, for all projects
cp -r access-log-forensics ~/.claude/skills/

Uso

Invócala explícitamente:

/access-log-forensics analyze /var/log/apache2/access.log

O simplemente pregunta de forma natural — Claude selecciona la habilidad automáticamente cuando la solicitud coincide con su descripción:

Can you check attack.log for signs of an attack?

Qué hace

  1. Ejecuta scripts/redact.sh primero: las IPs de clientes se reemplazan con seudónimos estables (ip-042) antes de que cualquier contenido del registro entre en la conversación del LLM (minimización de datos GDPR). El mapeo seudónimo↔IP se escribe en <logfile>.ipmap.tsv (chmod 600) y permanece en tu máquina — resuelve un seudónimo localmente con grep -P '\tip-042$' <logfile>.ipmap.tsv. Todos los pasos posteriores operan solo sobre <logfile>.redacted.
  2. Ejecuta scripts/summarize.sh para estadísticas de referencia en una sola pasada (marco temporal, códigos de estado, IPs principales con conteos de errores/URLs, agentes de usuario, rutas, picos de req/min).
  3. Analiza el registro en busca de firmas de ataques (SQLi, path traversal, sondeos de WordPress/Drupal, búsqueda de secretos, XSS, agentes de usuario de escáneres).
  4. Aplica heurísticas de comportamiento (inundaciones distribuidas, scraping, fuerza bruta, ataques intentados vs. exitosos).
  5. Escribe forensics-report.md — limitado a una página / ~400 palabras, con un veredicto, hallazgos clave, IPs de origen notables y acciones priorizadas.

Notas GDPR

Orientación práctica, no asesoramiento legal — para procesamiento del sector público o de alto volumen, involucra a tu DPO.

Lo que es legítimo:

  • Las direcciones IP en los registros de acceso son datos personales (TJUE C-582/14, Breyer), pero analizarlas para forensía de ataques está expresamente cubierto: el Considerando 49 del GDPR nombra la seguridad de redes y de la información como un interés legítimo (Art. 6(1)(f)). No necesitas consentimiento para investigar un DDoS, fuerza bruta, o intento de intrusión.
  • Mantener registros por un período de retención limitado y definido con fines de seguridad es aceptable; también lo es bloquear o limitar la tasa de las IPs infractoras.
  • Compartir registros seudonimizados (la salida .redacted de esta habilidad) con un LLM es una medida sólida de minimización de datos (Art. 5(1)(c)): el análisis funciona de manera idéntica, y ninguna IP real sale de tu máquina.

Lo que requiere cuidado:

  • Enviar registros crudos a un LLM en la nube convierte al proveedor en un encargado del tratamiento y, para procesamiento en EE. UU., en una transferencia a un tercer país (Capítulo V). Eso requiere un DPA y un mecanismo de transferencia (SCCs / Marco de Privacidad de Datos UE-EE. UU.) con el proveedor, registrado en tus registros de tratamiento — y ten en cuenta que los planes de chat de consumo y los términos comerciales/API difieren en el manejo de datos. Redactar primero (paso 0) evita la mayor parte de esto.
  • El archivo de mapeo .ipmap.tsv re-identifica cada seudónimo: trátalo como el registro crudo (acceso restringido, misma retención, nunca lo compartas ni lo subas).
  • Limitación de finalidad: los registros recopilados para seguridad no deben reutilizarse para perfiles de marketing/análisis sin una base legal separada.

Lo que no es legítimo:

  • Publicar o compartir informes que contengan IPs de clientes reales más allá de quienes las necesiten (usa el informe seudonimizado; resuelve IPs solo donde la acción lo requiera, p. ej., un bloqueo de firewall o un informe de abuso al ISP).
  • Mantener registros crudos indefinidamente "por si acaso" — establece y documenta un período de retención.
  • Enriquecer las IPs de los registros con datos de terceros para identificar personas individuales (a diferencia de identificar infraestructura de ataque) — eso excede el propósito de seguridad.

Requisitos

Solo herramientas Unix estándar: bash, awk, grep, sort, uniq. El script también puede ejecutarse de forma independiente sin Claude:

bash scripts/summarize.sh /path/to/access.log