[Article] J'ai mis en place une sonde de surveillance cybersécurité pour mon réseau domotique

Hello tous,

Je viens de publier un gros RetEx sur la mise en place d’un système de surveillance réseau domestique passif, évidemment le résultat remonte sur Home Assistant.

L’objectif : surveiller l’activité réseau de la maison sans modifier l’infrastructure existante et sans risque pour la stabilité du réseau.

Le principe est assez simple :

  • je ne touche quasiment pas au réseau actuel ni à Home Assistant ;
  • j’ajoute un switch manageable capable de faire du port mirroring ;
  • le switch duplique le trafic réseau vers un Raspberry Pi ;
  • le Raspberry analyse les flux avec Suricata ;
  • Home Security Assistant centralise ensuite les informations de sécurité dans Home Assistant.

Le tout reste totalement passif :

  • aucun impact sur les performances ;
  • aucune coupure réseau possible ;
  • aucune dépendance critique ;
  • et une excellente visibilité sur ce qui se passe réellement sur le réseau domestique.

J’ai essayé de détailler toute l’installation pas à pas, avec :

  • le câblage ;
  • la configuration du switch ;
  • l’installation du Raspberry ;
  • Suricata ;
  • softflowd ;
  • Home Security Assistant ;
  • les pièges à éviter ;
  • et beaucoup de captures d’écran.

Franchement, même sans reproduire exactement l’installation, la lecture permet déjà de mieux comprendre comment fonctionne réellement un réseau domestique moderne :sweat_smile: Je me suis régalé, je vous partage tout.

Evidemment un immense merci à @domo-monster qui nous propose son intégration Home Security Assistant : une pépite, non, une merveille à découvrir sans attendre.

Et si certains veulent se lancer, je serai ravi d’aider. Je ferai surement un RetEx sur l’intégration sur le Dasboard, prochaine étape…

8 « J'aime »

J’ai commencé à lire l’article, et même si je ne mettrai sans doute pas en place tout ça, la lecture est passionnante.
Merci pour ce boulot de dingue et hyper détaillé !
Franchement, c’est rare. :+1::+1:

1 « J'aime »

A ton service, hésite pas si tu vois une boulette ou si tu bloques sur un truc, je pourrai corriger ou mieux expliquer.

C’est chouette de mettre @Furax de bonne humeur :rofl:

1 « J'aime »

Merci @Sigalou, super tuto !

J’espère que je dis pas trop de bêtise, j’ai bien lu tous les paramètres dans ta doc. Si tu vois une boulette, dis moi.
Elle est top ton intégration, il y a un côté magique de voir arriver les équipements :innocent:
J’ai que les IP pour l’instant, j’ai vu que ça pouvaiit trouver mieux, mon routeur trouve des noms, donc je vais me pencher dessus.

Non pas du tout, ton article est parfait et super bien détaillé. J’aurais pas réussi à faire autant bien et clair. Les noms viennent de des intégrations tracker de HA. J’ai ping et nmap tracker. Dans ma v0.7.0, j’ai fait que le network map affichent l’ip et un nom si il en existe un. Je finis mes tests sur le mode training pour une ‹ baseline › avec un score et findings basé sur un comportement déviant et je release.
Merci encore pour tes supers éloges et feedback!

ok, j’attends un peu et je me plonge sur cette question.
On se tient au courant

1 « J'aime »

et donc comment ça se combine avec Home Security Assistant ? Pas de liens ou complémentaire ?
J’ai déjà installé HSA c’est effectivement dément comme résultat, même si pour l’instant je sais pas quoi faire avec tout ça, enfin pas trop , ça viendra,
mais cette partie surveillance réseau m’intéresse aussi !

Ben si, il y a déja des pages :

quelle est vraiment ta question ?

Ah désolé, oui j’ai bien vu le début de ta publication, tout y est, je voulais juste savoir s’il y avait un lien avec Home Security Assistant ? Ou si c’est complètement indépendant ? et complémentaire…

Oups , oui tu dis que HSA centralise ensuite ok, ok donc j’ai déjà je vais tester ça, c’est donc complémentaire… si je comprends bien

Edit : après vérification, je me replonge dans mon installation et j’ai finalement fait qque chose de similaire mais avec juste SoftFlowd sur un Pi4 qui reçoit les flux mirrorés de ma box via le switch central et les envoie vers HA. Donc c’est Suricata que je n’ai pas et finalement ma question serait plutot de savoir ce que j’aurais en plus avec Suricata et comment les alertes détectées par Suricata vont être remontées, est-ce via Home Security ou via un autre canal… Bon il faut peut etre aussi que je relise ton tuto plus attentivement…
En tous cas c’est une super doc d’installation que tu as fait et surtout aussi pour la partie HSA que je n’avais pas quand je l’ai installé !

ma network map :

Tu as bien avancé, bravo. On partage sur nos tests :wink:

Bien avancé oui, je vais ajouter suricate, mais honnêtement mes compétences ne sont pas au niveau de ce que j’ai monté, mais enfin c’est sympa et peut être vais je progresser en compétences ? :winking_face_with_tongue:

Mais au moins ça démontre que c’est tout à fait faisable, l’intégration home security assistant est vraiment un bijou qui fonctionne dès qu’on active, impressionnant.

1 « J'aime »

Je n’ai pas trop compris ce que tu avais fait.
Suricate est le moteur IDS qui va analyser le trafic réseau, tu as fonctionné comment sans ?

A priori hsa utilise les flux que lui envoie softflowd, si j’ai bien compris, et je ne sais pas justement si un ids comme suricate est nécessaire ou comment il va compléter hsa.
C’était l’objet de ma question initiale.
Là j’ai toutes les rubriques du tdb hsa qui sont remplies avec les alertes venant des deux ou trois sites d’analyse mais sans besoin d’ids.

Et Gemini vient de me donner un exemple de ce qu’ajouterai suricate notamment pour une de mes caméras qui a un comportement anormal déjà identifié par hsa mais l’ids devrait me dire quel est ce traffic anormal qu’elle envoie, oui suricate va être intéressant.

J’ai vérifié, ok, j’ai compris.
Tu as raison : HSA peut fonctionner sans Suricata.

Dans ce cas, softflowd envoie les flux réseau à HSA, et HSA peut déjà faire beaucoup de choses avec ces métadonnées.

Donc oui, le tableau de bord HSA peut se remplir uniquement avec softflowd.

Suricata n’est pas indispensable au fonctionnement de base de HSA.

En revanche, Suricata ajoute une couche IDS plus profonde. softflowd voit surtout les flux : IP source, IP destination, ports, protocole, volume. Suricata, lui, inspecte davantage le contenu réseau et les protocoles : DNS, TLS, HTTP, alertes de signatures, événements réseau, JA3/JA4, anomalies, etc.

Donc je le vois plutôt comme deux niveaux :

  • softflowd seul : supervision réseau par les flux, déjà très utile ;
  • softflowd + Suricata : supervision réseau + vraie couche IDS avec analyse protocolaire et signatures.

Dans mon installation, je ne me suis pas posé la question, j’ai mis les deux directement.

C’est aussi pour ça que ton installation fonctionne : HSA sait déjà exploiter les flux NetFlow envoyés par softflowd, puis les enrichir avec les services externes comme VirusTotal ou AbuseIPDB.

1 « J'aime »

@domo-monster Pour info, j’ai ajouté l’explication de VirusTotal et abuseIPBD dans mon RetEx car c’est très simple a ajouter et je voudrais avoir les infos les plus complètes.

C’est bien ce que j’ai compris aussi finalement.
Et vraiment merci pour ta super doc

1 « J'aime »

Alors j’ai ajouté suricate et il fonctionne dans le pi4 chez-moi.
Mais en suivant attentivement ton tuto, à aucun moment je ne vois de mécanisme pour envoyer le eve-log de suricate vers hsa, donc ma question reste entière pour moi, car ça me donne l’impression que hsa n’utilise pas les alertes générées par suricate.
Comment utiliser t on ces alertes autrement qu’en lisant ce fichier d’alertes ? Ou avec quel outil peut on en avoir une présentation un peu structurée et plus facile à exploiter ?
Mais j’ai pu louper quelque chose…

Idem merci @Sigalou et @domo-monster pour le tuto et l’intégration, je suis en train de mettre ca en place, même si j’ai fait moins complet car pas de switch et pas de pi dispo ( donc tout tourne sur l’hôte et je ne vois pas tout le trafic… et d’ailleurs le routeur ne gère pas les VLAN donc pas d’isolation possible, honte à moi … :disappointed_face: )
Je n’ai pas trouvé non plus comment utiliser le log de suricata dans HSA…

Salut @bemo47 @faiseurdepluie

En fait vous n’avez rien raté :grinning_face_with_smiling_eyes:

Dans mon RetEx, Suricata tourne sur le Raspberry Pi en mode promiscuous et analyse le trafic réseau miroir envoyé par le switch. Il génère ses propres logs IDS dans :
/var/log/suricata/eve.json

Ces logs contiennent :

  • les alertes IDS ;
  • les signatures ;
  • les détections réseau ;
  • les infos DNS/TLS/HTTP ;
  • les empreintes JA3/JA4 ;
  • etc.

On peut d’ailleurs les visualiser facilement avec :

tail -f /var/log/suricata/eve.json | jq

Mais le point important, et qui doit répondre à vos questions, c’est que HSA ne semble pas utiliser directement ce fichier eve.json actuellement.

Le lien réel avec HSA se fait surtout via softflowd qui exporte les flux NetFlow vers Home Assistant :
softflowd -i eth0 -n 192.168.1.222:2055

(222 c’est l’ip de mon HA)

Et c’est ça que HSA écoute nativement pour :

  • la map réseau ;
  • les appareils actifs ;
  • les scans ;
  • les flows ;
  • les statistiques ;
  • les findings ;
  • les activités suspectes.

C’est aussi pour ça que plusieurs personnes arrivent à faire fonctionner HSA sans Suricata : softflowd suffit déjà à alimenter toute la partie dashboard réseau.

Du coup, aujourd’hui :

  • softflowd = visibilité réseau exploitée par HSA ;
  • Suricata = couche IDS complémentaire qui tourne à côté.

Dans mon esprit, une “vraie” sonde réseau inclut naturellement Suricata, donc j’ai probablement mélangé les deux approches dans l’article :sweat_smile:

Mais techniquement, HSA fonctionne déjà très bien uniquement avec les flows NetFlow/IPFIX enrichis par :

  • Abuse IPDB ;
  • VirusTotal ;
  • NVD/CVE ;
  • les flux threat-intel ;
  • le scanner réseau intégré.

Suricata apporte surtout une analyse beaucoup plus poussée que l’on peut corréler manuellement avec ce qu’on voit dans HSA.

[@domo-monster]
Peux-tu confirmer si HSA supporte aujourd’hui uniquement les flows softflowd/IPFIX, ou s’il existe aussi un parsing natif du eve.json de Suricata ? Ou une évolution prévue, mais il faudrait pouvoir récupérer le json.