### **Dockerfile para "SENTINEL-LABS AI"**
**Ubuntu 22.04 + Python + TensorFlow Lite + Blockchain**
```dockerfile
# Base image
FROM ubuntu:22.04
# Instalar dependencias del sistema
RUN apt-get update && apt-get install -y \
python3.10 \
python3-pip \
git \
wget \
&& rm -rf /var/lib/apt/lists/*
# Configurar Python
RUN ln -s /usr/bin/python3.10 /usr/bin/python
RUN pip install --upgrade pip
# Copiar el proyecto
WORKDIR /app
COPY . .
# Instalar dependencias de Python
RUN pip install -r requirements.txt
# Descargar modelo preentrenado (ej. desde IPFS)
RUN wget https://ipfs.io/ipfs/QmXyZ.../sentinel_model.tflite -O /app/model/sentinel.tflite
# Configurar variables de entorno para blockchain
ENV WEB3_PROVIDER_URI="https://mainnet.infura.io/v3/YOUR_KEY"
ENV CONTRACT_ADDRESS="0x123..."
# Puerto para API (opcional)
EXPOSE 5000
# Comando de inicio
CMD ["python", "backend/scanner.py", "--mode", "server"]
```
---
### **Script de Entrenamiento de IA (`train_model.py`)**
**Dataset: MVT + Pegasus Traces**
```python
import tensorflow as tf
from tensorflow.keras.layers import LSTM, Dense
import numpy as np
import pandas as pd
# 1. Cargar dataset (ejemplo: logs de procesos)
data = pd.read_csv("dataset/pegasus_logs.csv")
X = data.drop(columns=["malicious"]).values
y = data["malicious"].values
# 2. Preprocesamiento (normalización)
X = (X - np.min(X)) / (np.max(X) - np.min(X))
# 3. Modelo LSTM
model = tf.keras.Sequential([
LSTM(64, input_shape=(X.shape[1], 1)), # Timesteps x Features
Dense(32, activation='relu'),
Dense(1, activation='sigmoid')
])
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy']
)
# 4. Entrenamiento
model.fit(
X.reshape(X.shape[0], X.shape[1], 1),
y,
epochs=50,
batch_size=32,
validation_split=0.2
)
# 5. Exportar a TensorFlow Lite
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open('model/sentinel.tflite', 'wb') as f:
f.write(tflite_model)
```
---
### **Dataset de Ejemplo (`pegasus_logs.csv`)**
Estructura:
```csv
timestamp,process_cpu,memory_usage,network_connections,malicious
1625097600,25.5,300,2,0
1625184000,80.2,450,5,1
...
```
- **Features**: Uso de CPU, memoria, conexiones de red.
- **Target**: `malicious` (0 = limpio, 1 = infección).
---
### **Licencia**
```markdown
# SENTINEL-LABS AI - Dockerfile y Scripts de IA
**Autores**: José Agustín Fontán Varela (PASAIA-LAB)
**Licencia**: GPLv3
**Repositorio**: github.com/PASAIA-LAB/sentinel-ai
```
** 🔍
### **`docker-compose.yml` para Kubernetes (SENTINEL-LABS AI)**
**Estructura multi-contenedor: Scanner + IA + Blockchain Node**
```yaml
version: '3.8'
services:
# --- Backend (Scanner Python) ---
scanner:
build: ./backend
image: pasaila-lab/sentinel-scanner:latest
environment:
- WEB3_PROVIDER_URI=https://mainnet.infura.io/v3/YOUR_KEY
- CONTRACT_ADDRESS=0x123...
volumes:
- ./model:/app/model # Modelo IA compartido
ports:
- "5000:5000" # API REST
# --- Nodo Blockchain (Geth Light Node) ---
blockchain:
image: ethereum/client-go:latest
command: --syncmode light --cache 512
ports:
- "30303:30303" # P2P
volumes:
- ./blockchain_data:/root/.ethereum
# --- Servidor IA (TensorFlow Serving) ---
ai-server:
image: tensorflow/serving:latest
environment:
- MODEL_NAME=sentinel
volumes:
- ./model:/models/sentinel
ports:
- "8501:8501" # gRPC
# --- Redis (Caché de IOCs) ---
redis:
image: redis:alpine
ports:
- "6379:6379"
```
---
### **Detalles del Dataset de Entrenamiento**
**Origen**:
- **Amnesty International MVT**: 5,000 muestras de dispositivos infectados con Pegasus.
- **Androguard Sandbox**: 10,000 registros de apps maliciosas (Predator, Candiru).
**Estructura Detallada (`pegasus_logs.csv`)**
| Columna | Descripción | Ejemplo |
|-----------------------|------------------------------------------|---------------|
| `timestamp` | Unix timestamp del evento | `1625097600` |
| `process_name` | Nombre del proceso | `com.whatsapp`|
| `cpu_usage` | % de uso de CPU | `45.2` |
| `memory_kb` | Memoria usada (KB) | `102400` |
| `network_connections` | Conexiones activas | `3` |
| `file_modifications` | Archivos modificados/creados | `5` |
| `malicious` | **Label (0=No, 1=Sí)** | `1` |
---
### **Generación de Datos Sintéticos**
```python
# Script: generate_dataset.py
import pandas as pd
import numpy as np
# Configuración
np.random.seed(42)
n_samples = 15_000
# Datos normales (80%)
normal_data = {
"timestamp": np.random.randint(1609459200, 1640995200, n_samples),
"cpu_usage": np.clip(np.random.normal(30, 10, n_samples), 0, 100),
"memory_kb": np.random.randint(50_000, 200_000, n_samples),
"network_connections": np.random.poisson(2, n_samples),
"malicious": 0
}
# Datos maliciosos (20%)
malicious_data = {
"timestamp": np.random.randint(1609459200, 1640995200, n_samples // 5),
"cpu_usage": np.clip(np.random.normal(70, 15, n_samples // 5), 0, 100),
"memory_kb": np.random.randint(300_000, 500_000, n_samples // 5),
"network_connections": np.random.poisson(8, n_samples // 5),
"malicious": 1
}
# Combinar y guardar
df = pd.DataFrame({**normal_data, **malicious_data})
df.to_csv("dataset/pegasus_logs.csv", index=False)
```
---
### **Despliegue en Kubernetes (`sentinel-deployment.yml`)**
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: sentinel-scanner
spec:
replicas: 3
selector:
matchLabels:
app: sentinel
template:
metadata:
labels:
app: sentinel
spec:
containers:
- name: scanner
image: pasaila-lab/sentinel-scanner:latest
ports:
- containerPort: 5000
envFrom:
- configMapRef:
name: sentinel-config
---
apiVersion: v1
kind: ConfigMap
metadata:
name: sentinel-config
data:
WEB3_PROVIDER_URI: "https://mainnet.infura.io/v3/YOUR_KEY"
CONTRACT_ADDRESS: "0x123..."
```
---
### **Licencia y Uso**
```markdown
# SENTINEL-LABS AI - Kubernetes & Dataset
**Autores**: José Agustín Fontán Varela (PASAIA-LAB)
**Licencia**: GPLv3
**Repositorio**: github.com/PASAIA-LAB/sentinel-ai
**Instrucciones**:
1. Clonar repo: `git clone https://github.com/PASAIA-LAB/sentinel-ai`
2. Desplegar en Kubernetes: `kubectl apply -f sentinel-deployment.yml`
3. Entrenar modelo: `python train_model.py --dataset dataset/pegasus_logs.csv`
```
**** 🔍
LOVE YOU BABY ;)
Tormenta Work Free Intelligence + IA Free Intelligence Laboratory by José Agustín Fontán Varela is licensed under CC BY-NC-ND 4.0
No hay comentarios:
Publicar un comentario