Une plateforme de surveillance réseau événementielle qui effectue une capture de paquets en direct (Npcap), une analyse de trafic à faible latence et une détection des menaces non supervisée à l'aide d'un Autoencoder PyTorch, soutenue par un moteur d'alerte asynchrone multicanaux.
Moteur de détection des menaces et d'observabilité réseau en temps réel, haute performance et piloté par l'IA
NetSentryx PRO est une plateforme de surveillance réseau et de renseignement sur les menaces de nouvelle génération, pilotée par les événements. En combinant des signatures basées sur des règles avec un Deep Autoencoder PyTorch, elle offre une détection d'anomalies sur les paquets et les netflows en moins de 10 ms, une alerte automatisée multicanale (Slack, Discord, Email) et un tableau de bord SOC interactif en temps réel.
Le diagramme de flux suivant illustre l'ingestion des données, l'inférence en temps réel par apprentissage profond, le pipeline d'alerte et la couche de visualisation WebSocket :
flowchart TD
subgraph Capture & Ingestion
A[Network Interface / Packet Simulator] -->|Raw Traffic Events| B(Lightweight Event Bus)
B -->|Packet Stream| C[Flow Aggregation Engine]
end
subgraph Deep Learning Inference
C -->|Aggregated Telemetry Vectors| D[PyTorch TrafficAutoencoder]
D -->|MSE Reconstruction Loss| E{Threshold Evaluation}
end
subgraph Alert Dispatch
E -->|No Anomaly| F[Status: Optimal]
E -->|Anomaly Detected| G[FastAPI BackgroundTasks]
G -->|Save Event| H[(SQLite Datastore)]
G -->|Broadcast WebSocket| I[HTML Live Dashboard]
G -->|Dispatch Webhooks| J[Slack / Discord / Custom Webhook]
G -->|Dispatch SMTP| K[Email Alerting]
end
style D fill:#EE4C2C,stroke:#fff,stroke-width:2px,color:#fff
style I fill:#005571,stroke:#fff,stroke-width:2px,color:#fff
style G fill:#00bf8f,stroke:#fff,stroke-width:2px,color:#fffTrafficAutoencoder) pour détecter les exploits zero-day sophistiqués, les scans ou les attaques DDoS à partir de l'erreur de reconstruction de caractéristiques multivariées.Mean + 3 * Std) au démarrage du serveur, le rendant pleinement fonctionnel dès la sortie de la boîte.BackgroundTasks de FastAPI.NetSentryx/
├── config/
│ ├── config.yaml # System, dashboard, and alerting channel configurations
│ └── rules.yaml # Threat detection thresholds and rule properties
├── src/
│ ├── alerts/
│ │ ├── ml_detection.py # PyTorch TrafficAutoencoder & feature scaling
│ │ ├── manager.py # Async alert dispatcher (Discord, Slack, Email)
│ │ └── detection.py # Rule-based packet signature detection engine
│ ├── core/
│ │ ├── config_loader.py # Configuration loader utilities
│ │ ├── logger.py # Database-integrated system logger
│ │ └── time_utils.py # Timezone-aware timestamp utilities
│ ├── dashboard/
│ │ ├── templates/
│ │ │ └── index.html # Live HTML5 Dashboard template
│ │ └── server.py # FastAPI API Router and WebSocket broadcast controller
│ ├── database/
│ │ ├── manager.py # SQLite connection & database actions
│ │ └── models.py # SQLAlchemy schema definitions (Alerts, Logs, Flows)
│ ├── flows/
│ │ ├── capture.py # Scapy packet sniffer thread
│ │ └── processor.py # Flow aggregation and metric extractor
│ └── main.py # Application entrypoint
└── main.py # Root script runner
Assurez-vous que Python 3.10+ est installé. Si vous capturez des interfaces réseau en direct :
libpcap-dev via sudo apt-get install libpcap-dev.Clonez le dépôt et installez les dépendances (l'utilisation de uv est fortement recommandée pour une installation plus rapide) :
# Clone the repository
git clone https://github.com/yourusername/netsentryx.git
cd netsentryx
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install requirements
pip install -r requirements.txt
.env)Créez un fichier .env à la racine du projet pour configurer les identifiants de notification :
# Discord Configuration
DISCORD_ENABLED=true
DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/your-webhook-id/your-webhook-token"
# Slack Configuration
SLACK_ENABLED=true
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/YOUR_WORKSPACE_ID/YOUR_CHANNEL_ID/YOUR_SECRET_TOKEN"
# SMTP Email Configuration
SMTP_ENABLED=true
SMTP_SERVER="smtp.gmail.com"
SMTP_PORT=587
SMTP_USERNAME="[email protected]"
SMTP_PASSWORD="your-app-password"
SMTP_FROM_EMAIL="[email protected]"
SMTP_TO_EMAIL="[email protected]"
python main.py --simulate
python main.py
Ouvrez votre navigateur et accédez à http://localhost:8000 pour consulter le tableau de bord en direct.
/api/v1/telemetry/analyzePOSTapplication/json{
"packet_count": 550,
"byte_count": 850000,
"flow_duration": 4.5,
"syn_flag_ratio": 0.85,
"port_entropy": 3.2,
"byte_rate": 188888.8,
"source_ip": "192.168.1.120",
"dest_ip": "10.0.0.5",
"protocol": "TCP"
}
{
"status": "NORMAL",
"threat_level": "low",
"anomaly_score": 0.3083,
"threshold": 2.1319
}
{
"status": "ANOMALOUS",
"threat_level": "critical",
"anomaly_score": 117999.03,
"threshold": 2.1319,
"alert": {
"id": 12,
"timestamp": "2026-08-05T14:13:31.373Z",
"rule_id": "ml_autoencoder_anomaly",
"rule_name": "ML Autoencoder Anomaly",
"source_ip": "192.168.1.120",
"severity": "critical",
"description": "Deep autoencoder reconstruction error exceeded anomaly threshold (score: 117999.0300, threshold: 2.1320).",
"metrics": { ... }
}
}
| Point de terminaison | Méthode | Description | Exemple de réponse |
|---|---|---|---|
/api/alerts | GET | Récupère les alertes de menaces récentes enregistrées en base de données | [{"id": 1, "rule_name": "Port Scanning", ...}] |
/api/flows | GET | Récupère les journaux de télémétrie de flux réseau récents | [{"source_ip": "192.168.1.10", "packet_count": 45, ...}] |
/api/logs | GET | Récupère les journaux d'audit du système backend | [{"level": "INFO", "message": "ML engine trained...", ...}] |
Ce projet est sous licence MIT - consultez le fichier LICENSE pour plus de détails.