DNS Filtrage - CyberMind-FR/secubox-deb GitHub Wiki

Filtrage DNS : ad-guard, dns-guard, network-anomaly, webfilter, dns-lan

À quoi ça sert. Cinq modules agissent sur le DNS de la box, qui n'a qu'un seul moteur : Unbound. Chacun a son rôle : retirer les publicités et les traceurs (ad-guard), repérer les noms de domaine anormaux (dns-guard), mesurer la normale du réseau (network-anomaly), classer par catégorie (webfilter), nommer le réseau local (dns-lan).

Module Rôle Panneau
ad-guard publicités et traceurs, par appareil ; tableau de bord Guardian /ad-guard/, /guardian/
dns-guard anomalies DNS, domaines suspects, puits DNS d'Unbound /dns-guard/
network-anomaly collecteur et lignes de base, anomalies du réseau /network-anomaly/
webfilter contrôle parental et sites dangereux /webfilter/
dns-lan noms du réseau local (configuration)

ad-guard : publicités et traceurs

Retire les publicités et les traceurs au niveau DNS, par appareil (téléviseurs, streamers, tablettes). Chaque appareil géré a sa propre vue Unbound et ses propres règles ; les domaines utiles à un service peuvent être autorisés explicitement. La réponse par défaut est NXDOMAIN, ce qui évite les roues de chargement bloquantes observées avec d'autres réponses. Il mesure honnêtement : « réduction des domaines publicitaires résolus par DNS », pas une suppression de publicités (ni MITM, ni cookie).

  • Panneau simplifié : l'état en une phrase, une carte par appareil, un interrupteur anti-pub (mode automatique en interne). Après chaque bascule, le filtre Unbound est relu et le panneau dit si le changement est bien appliqué ou ce qui diverge. La liste « une pub passe encore ? » propose, pour les noms servis qui ressemblent à de la pub, Bloquer ou C'est légitime. Les anciens onglets (Overview, Devices, Blocklist, Delayed, DNS AdBlock TV) restent sous « Avance ».
  • Modes par appareil : observe (rien n'est bloqué, on compte ce qui l'aurait été), block, off ; un appareil déclaré sans mode est en auto (apprentissage, essai, confirmation, retour arrière).
  • Listes : jeu versionné (advertising, tracking, telemetry, social, custom, profil TV de base), vérifié par empreinte (MANIFEST.json). Un domaine personnalisé s'ajoute ou se retire depuis le panneau.
  • Capteur DNS d'Actor Intelligence : une minuterie de 60 s ne dépose un signalement vers actord que pour un domaine malveillant ou anormal, jamais pour une requête ordinaire. Règles : domaine de la liste de l'opérateur, DGA, tunnel DNS, dérive d'un domaine connu, et détournement d'un domaine normal vers un réseau inattendu (référence apprise en silence pendant 3 jours). L'appareil est la source ; seul le domaine enregistré est conservé.
  • Seule porte root : secubox-adguard-tv (apply / disable / status), qui revalide l'état et exécute unbound-checkconf avant de garder le changement.

Le panneau Aurora /ad-guard/

Ad Guard

Depuis secubox-ad-guard 1.12.0, la page est refaite au profil Aurora : tuiles, onglets en pastilles, familles de blocage en pastilles de filtre, libellés en français. Toutes les actions et le balisage sont conservés. Les fenêtres confirm(), prompt() et alert(), ignorées par le navigateur du Hall, sont remplacées par des dialogues intégrés à la page ; les noms de domaine, motifs et noms d'appareil venus de l'API sont échappés avant insertion. La page offre une démonstration (?demo=1), ?embed=1 et annonce sa hauteur à l'hôte.

Guardian : le tableau de bord du réseau domestique

Guardian

Une page unique (complète, ou en cartelette avec ?embed=1) : appareils connectés (lus dans le NAC, conteneurs exclus), requêtes DNS du jour et d'hier, domaines bloqués, menaces sur 24 h, courbe sur 7 jours, types de domaines bloqués, catégories, appareils principaux. Données réelles uniquement ; une mesure indisponible s'affiche « — », jamais 0.

dns-guard : anomalies DNS et puits

Détecte les anomalies DNS (DGA, tunnel, exfiltration) et pilote le puits DNS d'Unbound. Il ne touche plus à dnsmasq : POST /sync répond honnêtement « aucun_moteur » s'il n'y a pas de moteur, au lieu de « synced ».

Le panneau /dns-guard/ (page « Garde DNS ») montre :

Bloc Contenu
Tuiles requêtes et blocages du jour, taille de la liste, alertes 24 h (un chiffre absent vaut « — »)
Domaines suspects classement avec type, gravité, nombre, première et dernière vue
Répartition par type anomalies sur 24 h
Domaines les plus bloqués sans aucun client dans la réponse
Clients concernés adresse portée par l'alerte, quand le résolveur la connaît
Vérifier un domaine saisie d'un nom (exemple.test) : verdict
Puits anti-pub du résolveur état, sources de filtres, liste blanche, clients exemptés

Actions du puits, chacune avec confirmation intégrée : Synchroniser (recompile les listes et réécrit Unbound, environ une minute), Activer / Désactiver, activer ou couper une source de filtres, ajouter ou retirer un domaine en liste blanche (jamais bloqué), exempter ou rétablir un client (il contourne le puits). Le bouton « Block » de l'ancienne page, qui visait une route inexistante, n'a pas été repris.

Depuis la 1.4.0, la page est refaite au profil Aurora (secubox-dns-guard 1.4.x) ; les actions du puits sont reprises à l'identique, avec confirmation intégrée.

Les compteurs viennent des mesures DNS d'ad-guard et de l'état du puits : le blocage réel vit dans Unbound. Le puits ne distingue pas malware et phishing, ces deux champs restent donc vides.

network-anomaly : la normale du réseau

Composant de dns-guard (mêmes URL, mêmes unités). Chaque mesure du réseau est comparée à sa ligne de base (moyenne et écart-type) ; au-delà d'un seuil exprimé en écarts-types, une anomalie est enregistrée avec un score.

Type Seuil (écarts-types)
bandwidth_spike (pic de débit) 3,0
connection_flood (afflux de connexions) 2,5
port_scan (balayage de ports) 2,0
dns_anomaly 2,5
protocol_anomaly 3,0

La gravité est medium au-delà du seuil, high au-delà de 1,5 fois le seuil, critical au-delà de 2 fois.

  • Lignes de base automatiques (1.4.2) : le passage planifié les construit lui-même avant la détection (30 échantillons au moins) et les rafraîchit toutes les heures ; l'API relit le fichier écrit par ce processus. Avant, seul un appel manuel les construisait, et sans elles la détection ne pouvait jamais alerter.
  • Des débits, pas des compteurs (1.4.3) : les octets d'interface et les requêtes DNS totales sont des compteurs cumulatifs, qui dépassent en permanence une ligne de base. Ils deviennent des débits (octets/s, requêtes/s) avant stockage et détection ; une remise à zéro du compteur ou un trou de mesure ne donne pas de débit. La page affiche les débits (Kio/s…). Les anciens historiques de compteurs et leurs lignes de base sont retirés au premier passage.
  • Collecteur : secubox-network-anomaly-collecte.timer lance un passage chaque minute (mesure, historique, alertes). Avant la 1.3.1, rien ne se déclenchait sans appel manuel : la page restait vide et les lignes de base ne se construisaient jamais. Un échec est écrit sur stderr et sort en erreur.
  • Panneau /network-anomaly/ : état du collecteur, histogramme des anomalies sur 24 h, répartition par type et gravité, classement par score avec détail, tableau des lignes de base (moyenne, écart-type, min, max).
  • Action conservée : Acquitter une anomalie (marquée traitée dans le journal des alertes, sans retour arrière). Routes : GET /alerts, POST /alerts/{id}/acknowledge, GET /baselines, POST /baselines/update.

webfilter : contrôle parental et sites dangereux

Classe les requêtes DNS par catégorie : adulte, jeux d'argent, phishing et malware. Les listes sont téléchargées à l'exécution, jamais livrées dans le paquet.

  • Observation par défaut : rien n'est bloqué tant que l'administrateur ne l'a pas décidé.
  • Profils : par catégorie, observe ou block, plus une liste d'autorisations.
  • Appareils : rattachés à un profil par adresse MAC, avec exceptions. Les appareils gérés par ad-guard sont exclus en v1.
  • Application : la configuration est écrite par l'API, puis appliquée par un contrôleur root déclenché par fichier (jamais par sudo). Unbound est rechargé, ce qui coupe le DNS une dizaine de secondes ; un retour arrière automatique rétablit l'ancien fichier octet pour octet si le contrôle échoue. Les changements de listes sont rechargés une fois par nuit vers 4 h.
  • Domaines toujours bloqués (0.4.0) : un profil et un appareil peuvent porter une liste bloque, refusée même quand la catégorie qui la liste est en observe.
  • Panneau : /webfilter/ (Aurora depuis la 0.3.0). Page dédiée : Webfilter-FR.

dns-lan : noms du réseau local

Fournit à Unbound les noms et zones du réseau local à partir d'un fichier de configuration /etc/secubox/dns-lan.toml.

Voir aussi

Profils, Webfilter-FR, WAF, NAC, ToolBox (l'interrupteur Ad-Guard de l'onglet Pubs), Admin-Panels-Gallery-FR.