Skip to content

DPI Vivant

CyberMind-FR edited this page Oct 11, 2026 · 4 revisions

DPI vivant — nDPId émancipé en Go (sbxdpi)

À quoi ça sert : voir le trafic réel de la box classé par protocole, application, catégorie et risque, sans jeu de démo et sans donnée personnelle. Le moteur est nDPId (nDPI 5.x), la couche Go du parc est sbxdpi, et le paquet secubox-dpi porte les vues (dont celles de nDPId et de Media Flow). La vue DPI est aussi un onglet du SOC-FR.

Vue d'ensemble du DPI

La carte 🔬 DPI · Trafic du Hall montre le trafic réel de la box, classé par nDPI 5.x — plus aucun jeu de démo. La donnée est agrégée et sans PII (compteurs par protocole / application / catégorie / paire d'IP / risque), servie en lecture seule.

Chaîne

nDPId (capture eth2, nDPI 5.x libre) → nDPIsrvd (distributeur)
    → sbxdpi (couche Go du parc) → /run/secubox/dpi-live.sock (/api/v1/dpi/*)
    → relais nginx du Hall → carte DPI · Trafic (slices à bullets)
  • nDPId + nDPIsrvd = paquet secubox-dpi-engine (nDPI 5.x compilé des sources amont — le libndpi 4.2 du système est trop vieux). nDPId capture, classe, et pousse du JSON encadré ; nДPIsrvd le rediffuse.
  • sbxdpi = daemon Go dans secubox-toolbox-ng (cmd/sbxdpi/), même dessin modulaire que sbx-sentinel. Il compose le distributeur en lecture seule, applique le filtrage go-level du parc, agrège, et sert l'API.

Un seul paquet : secubox-dpi

secubox-dpi agrège ndpid et mediaflow (#2335) : leur API est servie par l'agrégateur, il n'y a plus de démon uvicorn dédié ni de socket dédiée (environ 68 Mo et 83 Mo de mémoire en moins). Les unités secubox-ndpid.service et secubox-mediaflow.service ne sont plus livrées ; le postinst arrête et désactive les anciens démons. Le moteur de capture reste l'unité secubox-ndpid-engine.service (paquet secubox-ndpid-engine). La minuterie yt-dlp de Media Flow est conservée.

Les pages

Page Contenu
/dpi/ (vue d'ensemble) tuiles, flux appareils vers usages (rubans en octets mesurés), carte des destinations, types de trafic, applications, protocoles, appareils, destinations, domaines à classer, état du moteur
/ndpid/ cinq onglets, voir ci-dessous

Menaces et blocages ne sont pas inventés dans la vue DPI : ils vivent dans le WAF-FR et Actor-Intelligence-FR.

Les cinq onglets de nDPId

Refaits au style commun Aurora (#2363) : pages autonomes encadrées, tuiles, graphiques SVG, filtres et tris, ?embed=1, ?demo=1 annoncé, « — » sans mesure.

Onglet Contenu Écrit ?
Flux flux et sessions d'usage non
Protocoles protocoles et applications non
Empreintes empreintes TLS (JA3, JA3S, JA4), famille du client, SNI non
Risques risques nDPI, cumuls par type, gravité décroissante non
Réglages état du moteur, réglages, interfaces, miroir oui : démarrer, arrêter, redémarrer, mirred (avec confirmation intégrée)

Famille, catégorie et confiance des empreintes et protocoles sont déduites côté page et annoncées comme telles. Les risques banals (« Known Proto on Non Std Port », « TCP Connection Issues », « Missing SNI TLS Extn », « Error Code », « Unidirectional Traffic ») ne sont ni comptés ni listés : restent les vrais signaux (« Probing Attempt », « TLS Susp Extn », « HTTP Susp User-Agent », « Malicious Fingerprint »…).

Flux Empreintes
Flux Empreintes

JA3 / JA4 : l'état réel

Les données de /ndpid/ viennent de sbxdpi (nDPId → nDPIsrvd → sbxdpi, dpi-live.sock), avec repli sur le collecteur ndpiReader. Ce sont des cumuls depuis le démarrage de sbxdpi, sans événement daté. Il n'y a pas de JA3. Et, constaté sur la box de référence, le moteur ne remonte pas d'empreinte JA4 pour l'instant : sur 2 260 événements échantillonnés, aucun ne porte de champ ja4 (les flux TLS vus sont classés par port, sans ClientHello). La page Empreintes le dit : un moteur actif sans empreinte n'affiche plus « le moteur doit être actif », elle distingue moteur actif sans empreinte et moteur arrêté.

Filtrage go-level (déclaratif, hot-reload)

Des conffiles *.txt sous /etc/secubox/dpi/, rechargés à la volée (mtime) :

  • app-deny.txt — apps / protocoles / catégories / hôtes à écarter du tableau (bruit : mDNS, DHCP…).
  • app-allow.txt — épingles qui priment sur le deny.
  • risk-mute.txt — risques nDPI à ne pas afficher (faux positifs).
  • Exemption première partie — nos propres vhosts (clés de haproxy-routes.json) et le LAN ne sont jamais comptés comme « le grand large ».

API (GET, sans PII)

/api/v1/dpi/ : health · stats · top_protocols · top_apps · top_categories · talkers · risks (?limit=). Le JWT est posé au niveau nginx / FastAPI ; le socket Go ne sert que des compteurs agrégés locaux.

Bon à savoir

  • Le snapshot d'état va sur le SSD /data, jamais l'eMMC racine (15 Go) — un gros fichier la remplit et fait tomber SQLite des autres modules.
  • aggregator.sock = passerelle API maîtresse du parc, surtout PAS un socket DPI ; sbxdpi a le sien (dpi-live.sock).
  • Cadrage nDPIsrvd : préfixe 5 chiffres = longueur du corps qui suit.

Voir aussi : SBXOS · le Hall · SOC-FR · Actor-Intelligence-FR · Architecture · WAF-FR

SecuBox | FR | DE | 中文 | v3.0.0-alpha.12


Projet

Soutenir


🔴 BOOT — Démarrer

🟢 ROOT — Configuration

🟣 MIND — Modules

🔵 MESH — Référence

🟠 WALL — Matériel

🤖 Workflow Agents


Liens

Clone this wiki locally