¿Qué es SOC OLLAMA?

SOC OLLAMA es un sistema avanzado de análisis de logs con inteligencia artificial diseñado para entornos de ciberseguridad. Utiliza modelos de lenguaje de Ollama para detectar anomalías, amenazas y actividades sospechosas en tiempo real, proporcionando una solución completa de Security Operations Center (SOC) con interfaz gráfica moderna y capacidades de análisis predictivo.

📚 PROYECTO EDUCATIVO: Este sistema ha sido desarrollado con fines educativos y de aprendizaje. No está diseñado ni recomendado para su uso en entornos de producción críticos.

🔍 SOC OLLAMA

Sistema Avanzado de Análisis de Logs con Inteligencia Artificial

Versión 1.0
📦 Instalación del Proyecto

📂 Obtener el Código Fuente

🔗 Repositorio GitHub

El código fuente completo del proyecto está disponible en:

URL: https://github.com/bgonpin/SOC-OLLAMA

Comandos para clonar:

# Clonar el repositorio
git clone https://github.com/bgonpin/SOC-OLLAMA.git

# Navegar al directorio del proyecto
cd SOC-OLLAMA

# Verificar archivos del proyecto
ls -la
📋 Nota: Asegúrese de tener Git instalado en su sistema antes de clonar el repositorio.

Prerrequisitos del Sistema

🖥️ Requisitos de Software

Python: 3.8 o superior

Sistema Operativo: Linux, macOS o Windows

Ollama: Ejecutándose en puerto 11434

MongoDB: Ejecutándose en puerto 27017

🔧 Dependencias Principales

Dependencias Core:

  • requests>=2.28.0 - Comunicación HTTP con Ollama API
  • PyYAML>=6.0 - Manejo de configuración YAML
  • pymongo>=4.3.0 - Integración con MongoDB
  • PySide6>=6.4.0 - Framework para interfaz gráfica

🚀 Proceso de Instalación

Paso 1: Instalación de Ollama

# Instalar Ollama (Ubuntu/Debian)
curl -fsSL https://ollama.ai/install.sh | sh

# Descargar modelo de IA requerido
ollama pull mistral:latest

Paso 2: Instalación de MongoDB

# Ubuntu/Debian
sudo apt-get install mongodb
sudo systemctl start mongodb

# Verificar estado
sudo systemctl status mongodb

Paso 3: Instalación de Python y Dependencias

# Instalar Python 3.8+ (si no está instalado)
sudo apt-get install python3 python3-pip

# Instalar dependencias del proyecto
pip install -r requirements.txt

# Verificar instalación
python3 -c "import requests, yaml, pymongo, PySide6; print('✅ Todas las dependencias instaladas correctamente')"

Paso 4: Configuración Inicial

# Editar archivo de configuración
nano config.yml

# Archivo config.yml básico:
log_sources:
mode: "auto"
paths: []

model:
name: "mistral:latest"
timeout: 120

anomaly_detection:
batch_size: 10
cooldown_seconds: 15

output:
alerts_dir: "./alerts"
mongodb:
host: "localhost"
port: 27017
database: "soc_logs"
collection: "log_anomalies"
✅ Instalación Completa: El sistema SOC OLLAMA está listo para usar. Puede iniciar la interfaz gráfica con python gui_log_analyzer.py
✨ Características del Sistema

Funcionalidades Principales

🔍 Análisis Inteligente de Logs

  • Detección con IA: Utiliza modelos de Ollama para identificar anomalías de seguridad y actividades sospechosas
  • Procesamiento Multi-Fuente: Escanea automáticamente /var/log y subdirectorios para cobertura completa
  • Monitoreo en Tiempo Real: Análisis continuo con períodos de cooldown configurables
  • Procesamiento por Lotes: Procesamiento eficiente de grandes volúmenes de logs con tamaños de lote personalizables

🎨 Interfaz de Usuario Avanzada

  • GUI PySide6: Interfaz gráfica moderna y responsiva con tema oscuro elegante
  • Panel de Tiempo Real: Monitoreo de logs en vivo y visualización de anomalías
  • Navegador de Datos Históricos: Capacidades avanzadas de filtrado y búsqueda de anomalías pasadas
  • Panel de Estadísticas: Métricas completas e indicadores de rendimiento del sistema

💾 Gestión Avanzada de Datos

  • Integración MongoDB: Almacenamiento escalable para logs y anomalías con consultas avanzadas
  • Formateo de Alertas: Reportes de alertas profesionales con formato de caja Unicode
  • Exportación JSON: Exportación estructurada de datos para integración con otras herramientas de seguridad
  • Deduplicación: Deduplicación de logs basada en SHA512 para evitar procesamiento redundante

🔧 Configuración y Personalización

  • Configuración YAML: Archivo de configuración fácil de modificar
  • Múltiples Fuentes de Logs: Soporte para auth.log, syslog, kern.log y archivos personalizados
  • Modelos de IA Personalizables: Soporte para diferentes modelos de Ollama
  • Arquitectura Extensible: Diseño basado en módulos para fácil adición de características

🛡️ Capacidades de Seguridad

🔐 Detección de Amenazas

• Intentos de autenticación fallidos

• Ataques de fuerza bruta

• Actividades sospechosas de red

• Anomalías del sistema

📊 Monitoreo Continuo

• Análisis en tiempo real

• Alertas automáticas

• Seguimiento de métricas

• Reportes detallados

🏗️ Elementos y Componentes

Estructura del Proyecto

📁 Archivos Principales

🔧 Archivos Core

gui_log_analyzer.py - Aplicación GUI principal del sistema

realtime_log_analyzer.py - Interfaz de línea de comandos

log_file_scanner.py - Utilidad de descubrimiento de logs

alert_formatter.py - Formateo y visualización de alertas

⚙️ Archivos de Configuración

config.yml - Configuración principal del sistema

prompt_template.txt - Plantilla de prompt para IA

requirements.txt - Dependencias de Python

README.md - Documentación del proyecto

🏛️ Arquitectura del Sistema

┌─────────────────────────────────────────────────────────────────┐
│                    Sistema SOC OLLAMA                          │
├─────────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │   Interfaz  │  │   Línea de  │  │   Pruebas   │             │
│  │   Gráfica   │  │   Comando   │  │   y Utils   │             │
│  └─────────────┘  └─────────────┘  └─────────────┘             │
├─────────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │  Formateo   │  │   MongoDB   │  │   Ollama    │             │
│  │   de        │  │   Handler   │  │     IA      │             │
│  │  Alertas    │  └─────────────┘  └─────────────┘             │
├─────────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │  Escáner    │  │  Detección  │  │   Tiempo    │             │
│  │   de Logs   │  │  de Patrones│  │    Real     │             │
│  └─────────────┘  └─────────────┘  └─────────────┘             │
├─────────────────────────────────────────────────────────────────┤
│                   Fuentes de Logs del Sistema                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │ /var/log/   │  │  Logs de    │  │   Logs      │             │
│  │  auth.log   │  │  Servicios  │  │ Personaliz. │             │
│  └─────────────┘  └─────────────┘  └─────────────┘             │
└─────────────────────────────────────────────────────────────────┘
                    

🔧 Componentes Clave

1. MongoDBHandler

class MongoDBHandler:
    """Manejador de conexiones MongoDB"""

    def __init__(self, config):
        # Configuración de conexión
        self.config = config
        self.client = None
        self.db = None
        self.collection = None
        self.connected = False

    def connect(self):
        """Conectar a MongoDB con configuración flexible"""

    def save_log_line(self, log_line, anomaly_data=None):
        """Guardar línea de log con hash SHA512 como _id"""

    def save_anomalies_batch(self, anomalies_list):
        """Guardar múltiples anomalías en MongoDB"""

    def load_anomalies(self, limit=100, filters=None, sort_by="timestamp", sort_order=-1):
        """Cargar anomalías históricas con filtros avanzados"""

2. LogAnalyzerThread

class LogAnalyzerThread(QThread):
    """Hilo separado para el análisis de logs"""

    def __init__(self):
        super().__init__()
        self.running = False
        self.mongodb = None

    def run(self):
        """Ciclo principal de análisis de logs"""
        # 1. Escanear logs en busca de anomalías
        # 2. Procesar líneas sospechosas en lotes
        # 3. Enviar a Ollama para análisis con IA
        # 4. Guardar resultados en MongoDB
        # 5. Emitir señales para actualización de GUI

    def scan_logs_for_anomalies(self):
        """Escanea todos los logs procesando línea a línea eficientemente"""

3. MainWindow (Interfaz Gráfica)

class MainWindow(QMainWindow):
    """Ventana principal de la aplicación"""

    def __init__(self):
        super().__init__()
        self.analyzer_thread = None
        self.setup_ui() # Configurar interfaz
        self.setup_dark_theme() # Aplicar tema oscuro

    def setup_ui(self):
        """Configurar la interfaz de usuario completa"""
        # - Menú de aplicación
        # - Barra de herramientas con controles
        # - Área de pestañas (Análisis, Anomalías, Configuración, Estadísticas)
        # - Panel de información en tiempo real
        # - Lista de anomalías detectadas
        # - Área de detalle de anomalías

📂 Estructura de Directorios

soc-ollama/
├── 📄 gui_log_analyzer.py # Aplicación GUI principal
├── 📄 realtime_log_analyzer.py # Interfaz de línea de comandos
├── 📄 log_file_scanner.py # Utilidad de descubrimiento de logs
├── 📄 alert_formatter.py # Formateo de alertas
├── 📄 test_alert_formatter.py # Pruebas y validación
├── ⚙️ config.yml # Configuración del sistema
├── 📋 prompt_template.txt # Plantilla de prompt para IA
├── 📦 requirements.txt # Dependencias de Python
├── 📖 README.md # Documentación del proyecto
├── 🐚 install_soc_ollama.sh # Script de instalación Linux
├── 🪟 install_soc_ollama_windows.ps1 # Script de instalación Windows
└── 📁 alerts/ # Directorio de alertas generadas
📖 Empleo y Uso del Sistema

Modos de Operación

🖥️ Interfaz Gráfica (Recomendada)

# Iniciar aplicación GUI
python gui_log_analyzer.py

# La interfaz proporciona:
# ✅ Monitoreo de logs en tiempo real
# ✅ Navegador interactivo de anomalías
# ✅ Filtrado y búsqueda avanzada
# ✅ Panel de estadísticas y métricas
# ✅ Gestión de configuración integrada

💻 Interfaz de Línea de Comandos

# Uso básico
python realtime_log_analyzer.py

# Con opciones específicas
python realtime_log_analyzer.py --gui # Forzar modo GUI
python realtime_log_analyzer.py --help # Ver opciones disponibles

🔧 Utilidades Especializadas

# Escanear y listar archivos de log disponibles
python log_file_scanner.py

# Probar formateador de alertas
python test_alert_formatter.py

# Verificar configuración del sistema
python -c "import config; print('Sistema configurado correctamente')"

⚙️ Configuración Avanzada

Configuración de Fuentes de Logs

# Modo automático (recomendado)
log_sources:
  mode: "auto" # Descubrimiento automático en /var/log/
  paths: [] # Dejar vacío para modo automático

# Modo manual para fuentes específicas
log_sources:
  mode: "manual"
  paths:
    - "/var/log/auth.log"
    - "/var/log/syslog"
    - "/var/log/apache2/access.log"
    - "/ruta/custom/aplicacion.log"

Configuración de Modelos de IA

# Modelo por defecto
model:
  name: "mistral:latest"
  timeout: 120

# Otros modelos disponibles
model:
  name: "llama2:13b" # Modelo más grande
  timeout: 180 # Mayor timeout

model:
  name: "codellama:13b" # Especializado en código
  timeout: 200

Configuración de MongoDB

# Configuración básica
mongodb:
  host: "localhost"
  port: 27017
  database: "soc_logs"
  collection: "log_anomalies"

# Con autenticación (producción)
mongodb:
  host: "mongodb.empresa.com"
  port: 27017
  database: "soc_logs_prod"
  collection: "log_anomalies"
  username: "usuario_soc"
  password: "contraseña_segura"

📊 Interpretación de Resultados

Tipos de Anomalías Detectadas

🔐 Seguridad

• Failed password for (intentos de login fallidos)

• Authentication failure (fallos de autenticación)

• SYN flood (ataques de denegación de servicio)

• Port scan (escaneo de puertos)

⚠️ Errores Críticos

• Segmentation fault (fallos de segmentación)

• Out of memory (memoria insuficiente)

• Kernel panic (pánico del kernel)

• Service crashed (servicios caídos)

Niveles de Severidad

🔴 CRÍTICA

Requiere atención inmediata

Posible compromiso del sistema

Acción correctiva urgente

🟠 ALTA

Investigación requerida

Posible amenaza de seguridad

Monitoreo continuo necesario

🟡 MEDIA

Análisis recomendado

Comportamiento inusual

Seguimiento sugerido

🔵 BAJA

Información

Actividad normal del sistema

Sin acción requerida

🛠️ Mantenimiento y Monitoreo

Comandos de Mantenimiento

# Verificar estado de servicios
sudo systemctl status mongodb ollama

# Ver logs del sistema SOC OLLAMA
tail -f /var/log/syslog | grep soc-ollama

# Backup de base de datos MongoDB
mongodump --db soc_logs --out /backup/soc_logs_$(date +%Y%m%d)

# Restaurar backup
mongorestore --db soc_logs /backup/soc_logs_2024XXXX/

Monitoreo de Rendimiento

# Uso de recursos del proceso
ps aux | grep gui_log_analyzer.py

# Espacio en disco usado por MongoDB
du -sh /var/lib/mongodb/

# Logs generados por el sistema
ls -la alerts/ | wc -l # Número de alertas
⚠️ Notas Importantes:
  • Ejecutar como usuario con permisos de lectura en /var/log/
  • MongoDB debe estar ejecutándose antes de iniciar el análisis
  • Ollama debe estar disponible en localhost:11434
  • Configurar límites apropiados según recursos del sistema
🏛️ Arquitectura Técnica Detallada

Flujo de Trabajo del Sistema

1. 🚀 Inicialización del Sistema

MainWindow.__init__():
├── Crear hilo de análisis (LogAnalyzerThread)
├── Inicializar MongoDBHandler con configuración
├── Configurar interfaz gráfica con pestañas
├── Cargar configuración desde config.yml
├── Establecer conexiones de señales/slots
└── Aplicar tema oscuro personalizado

2. 🔍 Proceso de Análisis de Logs

LogAnalyzerThread.run():
├── Bucle principal de análisis continuo
├── Escanear archivos de log línea por línea
├── Detectar patrones de anomalías conocidos
├── Procesar líneas sospechosas en lotes
├── Enviar lotes a Ollama para análisis con IA
├── Parsear respuestas JSON de Ollama
├── Guardar anomalías en MongoDB y archivos
└── Emitir señales para actualización de GUI

3. 💾 Gestión de Datos

MongoDBHandler:
    ├── Conexión segura con configuración flexible
    ├── Almacenamiento con hash SHA512 como _id
    ├── Consultas avanzadas con filtros múltiples
    ├── Estadísticas agregadas por severidad/prioridad
    ├── Valores únicos para filtros dinámicos
    └── Manejo robusto de errores de conexión

4. 🎨 Interfaz de Usuario

Interfaz Gráfica (PySide6):
├── QMainWindow con diseño responsivo
├── QTabWidget con 4 pestañas principales:
│ ├── Análisis: Información del sistema y logs en tiempo real
│ ├── Anomalías: Lista y detalles de anomalías detectadas
│ ├── Configuración: Editor de config.yml integrado
│ └── Estadísticas: Métricas y gráficos de rendimiento
├── QListWidget con colores por severidad
├── QTextEdit para logs y detalles formateados
└── QTimer para actualizaciones periódicas

🔄 Flujo de Datos Completo

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│ Fuentes de Logs │───▶│  Escáner de     │───▶│   Análisis     │
│                 │    │  Logs           │    │   con IA       │
│ /var/log/*      │    │                 │    │                 │
│ auth.log        │    │ - Patrón matching│    │ - Ollama API   │
│ syslog          │    │ - Línea por línea│    │ - Modelo Mistral│
│ Aplicaciones    │    │ - Deduplicación │    │ - JSON Parsing │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         ▼                       ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   MongoDB       │◀───│   Formateo     │◀───│   Interfaz     │
│                 │    │   de Alertas   │    │   Gráfica      │
│ Almacenamiento  │    │                 │    │                 │
│ Consultas       │    │ - Unicode boxes │    │ - Tiempo Real  │
│ Estadísticas    │    │ - Colores       │    │ - Filtros      │
│ Filtros         │    │ - Detalles      │    │ - Estadísticas │
└─────────────────┘    └─────────────────┘    └─────────────────┘
                

🛡️ Estrategias de Seguridad Implementadas

🔐 Autenticación y Autorización

• Hash SHA512 para identificación única de logs

• Validación de fuentes de datos

• Sanitización de entradas

• Manejo seguro de credenciales

🛡️ Protección de Datos

• Encriptación de comunicaciones

• Validación de respuestas de IA

• Backup automático de datos críticos

• Logs de auditoría del sistema

📈 Métricas y Monitoreo

# Métricas principales monitoreadas:
- Número de ciclos de análisis completados
- Anomalías detectadas por severidad
- Tiempo de respuesta de Ollama
- Uso de recursos del sistema
- Espacio de almacenamiento utilizado
- Tasa de falsos positivos/negativos
- Tiempo de actividad del sistema
- Número de archivos de log procesados