- 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/
194 lines
5.1 KiB
Markdown
194 lines
5.1 KiB
Markdown
# 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`
|