Skip to content

gooorher/mlops-cybersecurity-project

Repository files navigation

Detección de Ciberataques con MLOps - Sistema Avanzado 🛡️⚙️

GitHub Python Docker MLflow

Sistema MLOps avanzado para detección de ciberataques en tiempo real con reentrenamiento automático, monitoreo continuo y auditoría completa.

🌟 Características Principales

🚀 Pipeline MLOps Completo

  • ✅ Ingesta y preprocesamiento automático de datos de red
  • ✅ Entrenamiento de modelos de Machine Learning
  • ✅ Despliegue automatizado con FastAPI y Docker
  • ✅ Versionado de experimentos con MLflow
  • ✅ Monitoreo y alertas en tiempo real

🔄 Reentrenamiento Automático

  • ⚡ Reentrenamiento automático basado en métricas de rendimiento
  • 📊 Detección de Data Drift con Evidently AI
  • 🎯 Optimización continua del modelo
  • 📈 Seguimiento de métricas y calidad del modelo

🛡️ Detección en Tiempo Real

  • 🔍 Simulación de tráfico de red en tiempo real
  • ⚡ Predicciones instantáneas vía API REST
  • 📊 Dashboard interactivo de monitoreo
  • 🚨 Sistema de alertas configurables

📋 Auditoría y Logging

  • 📝 Logging estructurado completo
  • 🔍 Trail de auditoría de todas las operaciones
  • 📊 Reportes de seguridad y rendimiento
  • 🗂️ Exportación de datos de auditoría

🏗️ Arquitectura del Sistema

graph TB
    A[Datos de Red CIC-UNSW-NB15] --> B[Ingestión de Datos]
    B --> C[Preprocesamiento]
    C --> D[Entrenamiento Modelo]
    D --> E[Modelo Entrenado]
    
    F[Simulación Tiempo Real] --> G[Buffer de Datos]
    G --> H[Reentrenamiento Automático]
    H --> E
    
    E --> I[API FastAPI]
    I --> J[Predicciones en Tiempo Real]
    
    J --> K[Monitoreo Continuo]
    K --> L[Detección de Drift]
    K --> M[Alertas]
    K --> N[Dashboard]
    
    O[Logging y Auditoría] --> P[MLflow]
    O --> Q[Logs del Sistema]
    O --> R[Reportes]
Loading

📋 Requisitos Previos

  • Python 3.8+
  • Docker y Docker Compose
  • Git
  • 8GB+ RAM recomendados
  • Espacio en disco: 5GB+

🚀 Instalación Rápida

1. Clonar el Repositorio

git clone https://github.com/juan-luis-gonzalez/mlops-project.git
cd mlops-project

2. Configurar Entorno Virtual

python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\\Scripts\\activate  # Windows

3. Instalar Dependencias

pip install -r requirements.txt

4. Preparar Datos

# Descargar dataset CIC-UNSW-NB15 y colocar en data_cybersecurity/
# Asegurar que existan:
# - data_cybersecurity/Data.csv
# - data_cybersecurity/Label.csv

5. Entrenar Modelo Inicial

python main_system.py --mode train

🎮 Modos de Ejecución

Sistema Completo (Recomendado)

python main_system.py --mode full

Inicia todos los componentes: simulación, reentrenamiento, monitoreo y API.

Solo API

python main_system.py --mode api

Inicia solo el servidor API para predicciones.

Solo Monitoreo

python main_system.py --mode monitor

Inicia simulación y monitoreo sin API.

Dashboard Interactivo

streamlit run dashboard.py

Abre dashboard web con métricas en tiempo real.

🐳 Despliegue con Docker

Despliegue Automático

python deploy.py --step all

Realiza el despliegue completo automático.

Pasos Manuales

# 1. Construir imagen
python deploy.py --step build

# 2. Ejecutar contenedor
python deploy.py --step deploy

Docker Compose (Opcional)

docker-compose up -d

📊 Servicios y Endpoints

API FastAPI

MLflow Tracking

Dashboard Web

⚙️ Configuración

El sistema se configura mediante config.yml:

# Model configuration
model:
  name: RandomForestClassifier
  params:
    n_estimators: 100
    max_depth: 15

# Real-time simulation
real_time:
  packets_per_second: 10
  attack_probability: 0.15

# Auto-retraining
auto_retraining:
  enabled: true
  interval_hours: 6
  performance_threshold: 0.85

# Monitoring
monitoring:
  enabled: true
  check_interval_minutes: 5

# Alerts
alerts:
  enabled: true
  enabled_channels: ['log', 'email', 'webhook']

📈 Métricas Monitoreadas

Rendimiento del Modelo

  • Accuracy, Precision, Recall, F1-Score
  • Métricas por clase
  • ROC-AUC

Calidad de Datos

  • Data Drift
  • Feature Distribution Changes
  • Missing Values

Sistema

  • Latencia de predicciones
  • Tasa de errores
  • Uso de recursos

🚨 Sistema de Alertas

Tipos de Alertas

  • Rendimiento: Degradación del modelo
  • Seguridad: Alta tasa de ataques
  • Sistema: Errores y fallos
  • Datos: Drift detectado

Canales de Notificación

  • 📝 Logs estructurados
  • 📧 Email (configurable)
  • 💬 Webhook (Slack, Teams)
  • 📊 Dashboard web

🧪 Testing

Ejecutar Pruebas

# Pruebas unitarias
python -m pytest tests/ -v

# Pruebas de integración
python tests/test_integration.py

# Coverage
python -m pytest --cov=steps tests/

Tipos de Pruebas

  • Unitarias para cada componente
  • Integración del pipeline completo
  • Performance y carga
  • Seguridad

📝 Logging y Auditoría

Logs del Sistema

  • Componentes: /logs/{component}.log
  • Auditoría: /logs/audit.log
  • Rotación automática de archivos

Trail de Auditoría

  • Predicciones realizadas
  • Cambios de modelo
  • Eventos de seguridad
  • Cambios de configuración

Exportación de Datos

# Exportar auditoría
python -c "
from steps.audit_logger import get_cybersecurity_logger
logger = get_cybersecurity_logger()
logger.export_audit_data('audit_data.json', 'json')
"

🔧 Personalización

Añadir Nuevos Modelos

  1. Modificar config.yml:
model:
  name: NombreDelModelo
  params:
    # hiperparámetros
  1. Implementar en steps/train.py

Configurar Alertas

  1. Modificar config.yml:
alerts:
  email:
    smtp_server: "smtp.gmail.com"
    sender: "alerts@company.com"
    recipients: ["admin@company.com"]

Personalizar Métricas

  1. Modificar steps/monitoring.py
  2. Añadir nuevas métricas al dashboard

🛠️ Solución de Problemas

Problemas Comunes

Modelo no carga:

# Reentrenar modelo
python main_system.py --mode train

API no responde:

# Verificar logs
tail -f logs/api_server.log

Alta memoria RAM:

# Reducir batch_size en config.yml
# Limitar buffer_size en auto_retraining

Depuración

# Logs detallados
export PYTHONPATH=.
python main_system.py --mode full 2>&1 | tee debug.log

📊 Rendimiento

Especificaciones Recomendadas

  • CPU: 4+ cores
  • RAM: 8GB+
  • Almacenamiento: SSD con 10GB+
  • Red: Estable, baja latencia

Métricas de Rendimiento

  • Latencia: <100ms por predicción
  • Throughput: 100+ predicciones/segundo
  • Disponibilidad: 99.9%+

🤝 Contribución

  1. Fork del repositorio
  2. Feature branch: git checkout -b feature/new-feature
  3. Commit: git commit -am 'Add new feature'
  4. Push: git push origin feature/new-feature
  5. Pull Request

📄 Licencia

Copyright © 2025, Juan Lucas Gordillo Hernández

Publicado bajo la licencia Apache-2.0.

📞 Soporte

🙏 Agradecimientos


🚀 Sistema listo para producción - Monitoreo 24/7 included! 🛡️

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors