Files
service_manager/backend/scripts/README_SECURITY_TESTS.md
icamarillo ceea67eb2b feat: Version 1.11.0 - Mejoras en auditoría, SLA, frontend y correcciones de sincronización
- Refactorización de endpoints de auditoría y helpers
- Mejoras en esquemas de auditoría (audit.py)
- Correcciones en endpoint SLA
- Actualizaciones en múltiples rutas del frontend interno:
  layout, tickets, usuarios, tenants, categorías, sistemas,
  SLA (at-risk, violations), auditoría (main + security), login, perfil
- Actualización de tailwind.config.js
- Eliminación de docs de versiones anteriores (CAMBIOS_v1.10.0, v1.8.0, OPTIMIZACIONES)
- Nuevos scripts de prueba: generate_security_test_data.py, generate_sla_test_data.py
- Script de prueba de sincronización crítica (test_critical_sync.ps1)
- README actualizado en scripts/
2026-02-20 10:53:53 -07:00

5.1 KiB

Scripts de Prueba de Seguridad

Scripts para generar datos de prueba para el análisis de seguridad.

📋 Scripts Disponibles

1. generate_security_test_data.py

Genera un conjunto completo de logs de auditoría para probar todas las funcionalidades del análisis de seguridad.

Uso

# Asegúrate de estar en el entorno virtual
cd backend
python scripts/generate_security_test_data.py

Qué Genera

  • 25 intentos fallidos de login → Amenaza HIGH de fuerza bruta
  • 55 eliminaciones masivas → Amenaza CRITICAL
  • 5 cambios de privilegios → Amenaza HIGH de escalación de privilegios
  • 20 logs normales → Actividad regular para contexto

Limpiar Datos de Prueba

python scripts/generate_security_test_data.py cleanup

Esto eliminará TODOS los logs de auditoría de las últimas 24 horas.


🎯 Escenarios de Prueba

Escenario 1: Sistema Limpio (Sin Amenazas)

# Limpiar todos los logs
python scripts/generate_security_test_data.py cleanup

Resultado esperado:

  • Dashboard con todos los contadores en 0
  • Tab "Crítico" vacío
  • Mensaje: "Sistema Seguro"

Escenario 2: Solo Amenazas Leves

Modifica el script para generar solo 6 intentos fallidos (MEDIUM severity):

# En generate_security_test_data.py, línea ~70
for i in range(6):  # Cambiar de 25 a 6

Resultado esperado:

  • 1 amenaza MEDIUM en tab correspondiente
  • Tab "Crítico" vacío
  • Nivel de riesgo: LOW o MEDIUM

Escenario 3: Amenazas Críticas

Ejecuta el script completo:

python scripts/generate_security_test_data.py

Resultado esperado:

  • 1 amenaza CRÍTICA (eliminaciones masivas)
  • 2 amenazas HIGH (login fallidos + privilegios)
  • Tab "Crítico" con 1 amenaza
  • Nivel de riesgo: CRITICAL

🔒 Umbrales de Detección

Tipo de Amenaza Umbral Detección Severidades
Fuerza Bruta ≥5 intentos fallidos MEDIUM (5-19), HIGH (≥20)
Eliminaciones Masivas ≥10 eliminaciones HIGH (10-49), CRITICAL (≥50)
Cambios de Privilegios ≥3 cambios de rol HIGH (siempre)

🧪 Verificar Resultados

  1. Accede al panel de auditoría: http://localhost:3001/audit/security

  2. Verifica los contadores del dashboard:

    • Nivel de Riesgo
    • Amenazas Detectadas
    • Intentos Fallidos
    • IPs Sospechosas
    • Acciones Críticas
  3. Prueba los tabs:

    • Todas: Debe mostrar amenazas activas
    • Crítico: Solo amenazas critical (si hay)
    • High: Amenazas de alta severidad
    • Medium: Amenazas de severidad media
    • Low: Amenazas de baja severidad
    • Resueltas: Amenazas marcadas como resueltas
  4. Prueba la búsqueda:

    • Busca por IP: 192.168.1.100
    • Busca por descripción: intentos fallidos
    • Busca por tipo: brute_force
  5. Prueba los filtros:

    • Filtra por tipo de amenaza
    • Combina búsqueda + filtro
  6. Prueba las acciones:

    • Selecciona múltiples amenazas
    • Resuelve en batch
    • Marca como resuelta individualmente
    • Reabre amenazas resueltas

⚠️ Advertencias

  • NO ejecutar en producción: Estos scripts son SOLO para desarrollo/testing
  • Los datos son ficticios: IPs, usuarios y acciones son simulados
  • Cleanup elimina TODO: El comando cleanup elimina TODOS los logs de las últimas 24h, no solo los de prueba

🐛 Troubleshooting

Error: "No se encontró ningún tenant"

# Ejecuta las migraciones
cd backend
alembic upgrade head

Error: "No se encontró ningún usuario"

# Crea un usuario de prueba
python scripts/create_test_user.py

La página no muestra amenazas

  • Verifica que el backend esté corriendo: uvicorn app.main:app --reload
  • Revisa la consola del navegador para errores
  • Verifica que los logs se crearon: SELECT COUNT(*) FROM audit_logs WHERE created_at >= NOW() - INTERVAL '24 hours';

Las fechas no son de hoy

  • Los logs se crean con timestamps aleatorios en las últimas 24h
  • Si todos tienen la misma fecha, es porque se generaron en el mismo segundo (normal)

📝 Personalizar Generación

Para crear escenarios personalizados, edita generate_security_test_data.py:

# Cambiar cantidad de intentos fallidos
for i in range(50):  # Más intentos = mayor severidad

# Cambiar IPs sospechosas
suspicious_ips = ["1.2.3.4", "5.6.7.8"]

# Cambiar período temporal
time_offset = timedelta(hours=12)  # Todos en las últimas 12h

# Agregar más tipos de amenazas
# Agrega nuevos bloques de generación siguiendo el patrón

🚀 Flujo Recomendado de Prueba

  1. Limpia el sistema: python scripts/generate_security_test_data.py cleanup
  2. Verifica sistema limpio: Accede a la página, debe estar vacía
  3. Genera datos completos: python scripts/generate_security_test_data.py
  4. Prueba todas las funcionalidades: tabs, filtros, búsqueda, acciones
  5. Marca algunas como resueltas: Prueba el flujo de resolución
  6. Verifica tab "Resueltas": Confirma que aparecen ahí
  7. Reabre algunas: Prueba el flujo de reapertura
  8. Limpia al finalizar: python scripts/generate_security_test_data.py cleanup