Initial commit: Bot Detector Dashboard for SOC Incident Response

🛡️ Dashboard complet pour l'analyse et la classification des menaces

Fonctionnalités principales:
- Visualisation des détections en temps réel (24h)
- Investigation multi-entités (IP, JA4, ASN, Host, User-Agent)
- Analyse de corrélation pour classification SOC
- Clustering automatique par subnet/JA4/UA
- Export des classifications pour ML

Composants:
- Backend: FastAPI (Python) + ClickHouse
- Frontend: React + TypeScript + TailwindCSS
- 6 routes API: metrics, detections, variability, attributes, analysis, entities
- 7 types d'entités investigables

Documentation ajoutée:
- NAVIGATION_GRAPH.md: Graph complet de navigation
- SOC_OPTIMIZATION_PROPOSAL.md: Proposition d'optimisation pour SOC
  • Réduction de 7 à 2 clics pour classification
  • Nouvelle vue /incidents clusterisée
  • Panel latéral d'investigation
  • Quick Search (Cmd+K)
  • Timeline interactive
  • Graph de corrélations

Sécurité:
- .gitignore configuré (exclut .env, secrets, node_modules)
- Credentials dans .env (à ne pas committer)

⚠️ Audit sécurité réalisé - Voir recommandations dans SOC_OPTIMIZATION_PROPOSAL.md

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
SOC Analyst
2026-03-14 21:33:55 +01:00
commit a61828d1e7
55 changed files with 11189 additions and 0 deletions

View File

@ -0,0 +1,73 @@
-- =============================================================================
-- Table classifications - Dashboard Bot Detector
-- =============================================================================
-- Stocke les classifications des IPs pour l'apprentissage supervisé
--
-- Usage:
-- clickhouse-client --host test-sdv-anubis.sdv.fr --port 8123 \
-- --user default --password <votre_mot_de_passe> < deploy_classifications_table.sql
--
-- =============================================================================
USE mabase_prod;
-- =============================================================================
-- Table pour stocker les classifications des IPs
-- =============================================================================
CREATE TABLE IF NOT EXISTS mabase_prod.classifications
(
-- Identification
ip String,
-- Classification
label LowCardinality(String), -- "legitimate", "suspicious", "malicious"
tags Array(String), -- Tags associés
comment String, -- Commentaire de l'analyste
-- Métriques pour ML
confidence Float32, -- Confiance de la classification (0-1)
features String, -- JSON avec toutes les features
-- Métadonnées
analyst String, -- Nom de l'analyste
created_at DateTime DEFAULT now() -- Date de classification
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(created_at)
ORDER BY (created_at, ip)
SETTINGS index_granularity = 8192;
-- =============================================================================
-- Index pour accélérer les recherches par IP
-- =============================================================================
CREATE INDEX IF NOT EXISTS idx_classifications_ip
ON TABLE mabase_prod.classifications (ip) TYPE minmax GRANULARITY 1;
-- =============================================================================
-- Vue pour les statistiques de classification
-- =============================================================================
CREATE VIEW IF NOT EXISTS mabase_prod.view_classifications_stats AS
SELECT
label,
count() AS total,
uniq(ip) AS unique_ips,
avg(confidence) AS avg_confidence,
min(created_at) AS first_classification,
max(created_at) AS last_classification
FROM mabase_prod.classifications
GROUP BY label;
-- =============================================================================
-- FIN
-- =============================================================================
--
-- Vérifier que la table est créée :
-- SELECT count() FROM mabase_prod.classifications;
--
-- Voir les statistiques :
-- SELECT * FROM mabase_prod.view_classifications_stats;
--
-- =============================================================================