Modelo Predictivo en IA Para Detección DDoS (I)

En el artículo anterior, os explicaba cómo ayudarse con la Inteligencia artificial, contra ataques de Phising. En este artículo de hoy voy a desarrollaros un ejemplo de código en Python para un modelo predictivo de IA, capaz de detectar ciberataques de tipo DDoS (Distributed Denial of Service). En este modelo utilizaremos un conjunto de datos de tráfico de red etiquetado como «normal» o «ataque DDoS» y entrenaremos un clasificador capaz de predecir si el tráfico es malicioso, o no.


Código: Modelo predictivo para detectar ataques DDoS

# Importar librerías necesarias
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, accuracy_score

# 1. Cargar el conjunto de datos
# Supongamos que tienes un archivo CSV con datos de tráfico de red
# Las columnas podrían ser: duration, protocol_type, src_bytes, dst_bytes, flag, attack_type
# attack_type es la etiqueta: 0 (normal), 1 (ataque DDoS)
url = «https://example.com/ddos_dataset.csv» # Reemplaza con la URL o ruta de tu dataset
data = pd.read_csv(url)

# 2. Preprocesamiento de datos
# Convertir variables categóricas a numéricas (si las hay)
data = pd.get_dummies(data, columns=[«protocol_type», «flag»], drop_first=True)

# Separar características (X) y etiquetas (y)
X = data.drop(«attack_type», axis=1) # Características
y = data[«attack_type»] # Etiquetas (0: normal, 1: ataque DDoS)

# Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Escalar las características para normalizar los datos
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 3. Entrenar el modelo
# Usaremos Random Forest como clasificador
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 4. Evaluar el modelo
y_pred = model.predict(X_test)

# Mostrar métricas de evaluación
print(«Precisión del modelo:», accuracy_score(y_test, y_pred))
print(«\nReporte de clasificación:\n», classification_report(y_test, y_pred))

# 5. Hacer predicciones en tiempo real (simulación)
# Supongamos que tienes un nuevo registro de tráfico de red
new_traffic = [[5, 100, 200, 0, 1, 0, 1]] # Ejemplo de características
new_traffic_scaled = scaler.transform(new_traffic) # Escalar el nuevo dato
prediction = model.predict(new_traffic_scaled)

if prediction[0] == 1:
print(«¡Alerta! Posible ataque DDoS detectado.»)
else:
print(«Tráfico normal.»)


Explicación del código

  1. Carga de datos:
    • Se carga un conjunto de datos que contiene registros de tráfico de red, con características como duración, bytes enviados/recibidos, tipo de protocolo, etc.
    • La columna attack_type indica si el tráfico es normal (0) o un ataque DDoS (1).
  2. Preprocesamiento:
    • Se convierten variables categóricas (como protocol_type y flag) en numéricas usando one-hot encoding.
    • Se escalan las características para normalizar los datos y mejorar el rendimiento del modelo.
  3. Entrenamiento del modelo:
    • Se utiliza un clasificador de Random Forest para entrenar el modelo con los datos de entrenamiento.
  4. Evaluación del modelo:
    • Se evalúa el modelo con datos de prueba y se calculan métricas como precisión, recall y F1-score.
  5. Predicción en tiempo real:
    • Se simula la detección de un nuevo registro de tráfico de red y se predice si es un ataque DDoS o tráfico normal.

Conjunto de datos

Para este ejemplo, necesitaremos un conjunto de datos de tráfico de red etiquetado. Algunos conjuntos de datos públicos que se pueden usar son, por ejemplo:

  • CICIDS2017: Disponible en Kaggle.
  • NSL-KDD: Disponible en Kaggle.

Resultados esperados

  • El modelo debería predecir con alta precisión si el tráfico es normal o un ataque DDoS.
  • Las métricas de evaluación te darán una idea del rendimiento del modelo.

Mejoras posibles

  • Aprendizaje profundo: Usar redes neuronales (por ejemplo, LSTM) para analizar secuencias de tráfico.
  • Detección de anomalías: Implementar modelos no supervisados para detectar patrones desconocidos.
  • Integración con SIEM: Conectar el modelo a un sistema de gestión de eventos de seguridad para alertas en tiempo real.

Este código es un punto de partida para construir un modelo predictivo contra ciberataques. ¡Puedes adaptarlo y mejorarlo según tus necesidades!

0
Modelo Predictivo en IA Para Detección DDoS (II) Ejemplo de Modelo Predictivo en IA Para Ciberseguridad (Phishing)

No hay comentarios

Aún no hay comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *