- 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/
5.1 KiB
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
-
Accede al panel de auditoría: http://localhost:3001/audit/security
-
Verifica los contadores del dashboard:
- Nivel de Riesgo
- Amenazas Detectadas
- Intentos Fallidos
- IPs Sospechosas
- Acciones Críticas
-
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
-
Prueba la búsqueda:
- Busca por IP:
192.168.1.100 - Busca por descripción:
intentos fallidos - Busca por tipo:
brute_force
- Busca por IP:
-
Prueba los filtros:
- Filtra por tipo de amenaza
- Combina búsqueda + filtro
-
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
- Limpia el sistema:
python scripts/generate_security_test_data.py cleanup - Verifica sistema limpio: Accede a la página, debe estar vacía
- Genera datos completos:
python scripts/generate_security_test_data.py - Prueba todas las funcionalidades: tabs, filtros, búsqueda, acciones
- Marca algunas como resueltas: Prueba el flujo de resolución
- Verifica tab "Resueltas": Confirma que aparecen ahí
- Reabre algunas: Prueba el flujo de reapertura
- Limpia al finalizar:
python scripts/generate_security_test_data.py cleanup