Este proyecto implementa un modelo de Machine Learning para detectar ataques de denegación de servicio (DoS) a partir de un conjunto de datos sintético de 10.000 registros.
Se genera un dataset con características de tráfico de red y luego se entrena un clasificador utilizando SVM (Support Vector Machine) para distinguir entre tráfico normal y ataques.
Puedes ver una explicación detallada del proyecto en el siguiente video:
-
crearDataSet.pyGenera el dataset sintético y lo guarda endataset_dos.csv. -
detectarAtaqueDOS.pyCarga el dataset, entrena el modelo SVM, evalúa su rendimiento y muestra las métricas. -
dataset_dos.csvDataset generado automáticamente. -
modelo_svm_dos.pklModelo entrenado exportado.
Instalar Python 3 y las siguientes librerías:
pip install pandas numpy matplotlib seaborn scikit-learn joblibpython3 crearDataSet.pyEsto creará el archivo:
dataset_dos.csv
python3 detectarAtaqueDOS.pyEl programa mostrará:
- Vista previa del dataset
- Distribución de clases
- Mapa de correlaciones
- Matriz de confusión
- Precision
- Recall
- F1-score
- Accuracy
Además, se guardará el modelo entrenado en:
modelo_svm_dos.pkl
El dataset contiene las siguientes variables:
| Variable | Descripción |
|---|---|
duracion |
Duración de la conexión |
bytes_enviados |
Cantidad de bytes enviados |
bytes_recibidos |
Cantidad de bytes recibidos |
paquetes |
Cantidad de paquetes transmitidos |
es_ataque_dos |
Etiqueta: 0 = normal, 1 = ataque DoS |
El dataset contiene:
- 70% tráfico normal
- 30% ataques DoS
Se utilizó un clasificador SVM con kernel RBF:
SVC(kernel="rbf", C=1.0, gamma="scale", random_state=42)Este algoritmo permite separar registros normales y ataques a partir de las características del tráfico.
Ejemplo de salida:
Matriz de confusión:
[[2103 3]
[ 10 884]]
Precisión global del modelo: 1.00
Esto significa que el modelo clasificó correctamente casi todos los registros, detectando la mayoría de los ataques DoS con muy pocos errores.
- Precision: qué tan confiable es el modelo cuando predice un ataque.
- Recall: qué porcentaje de los ataques reales logra detectar.
- F1-score: balance entre precision y recall.
- Accuracy: porcentaje total de aciertos.
