# 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 ```bash # 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 ```bash 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) ```bash # 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): ```python # 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: ```bash 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" ```bash # Ejecuta las migraciones cd backend alembic upgrade head ``` ### Error: "No se encontró ningún usuario" ```bash # 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`: ```python # 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`