Un nœud capteur dédié pour votre réseau local : « RoamSwitch Sensor »
RoamSwitch Sensor est un nœud dédié au réseau local qui audite, de l'extérieur, les postes RoamSwitch du même réseau (Mac / Linux Client / Server Edition). Il vérifie comment un hôte apparaît depuis un autre appareil du réseau (ports ouverts, services exposés sans authentification, points d'appui pour un mouvement latéral), ce que l'hôte ne peut, par principe, pas voir par son propre autodiagnostic. Il fournit aussi un inventaire des appareils du réseau et la détection de l'usurpation ARP.
🛡️ Audit de vulnérabilités actif (points d'accès appairés uniquement)
Scan complet des ports → vérifications de signatures connues (exposition non authentifiée de Redis/dockerd/Memcached/MongoDB/Elasticsearch/CouchDB/Jenkins/VNC, SMBv1 et absence de signature SMB, RDP sans NLA, relais SMTP ouvert, etc.) → récupération générique de bannières → scan complémentaire nmap NSE — quatre phases, entièrement non destructives.
📋 Composition du réseau (balayage ARP actif)
Repère les appareils du LAN par un balayage ARP. Il constitue un inventaire : IP, MAC, nom d’hôte, fabricant, état en ligne, première/dernière détection et historique d’IP, avec une note libre (nom, usage) par appareil. Les appareils sans note sont signalés « à vérifier », ce qui permet un rapprochement avec votre inventaire. Sans nmap, le Sensor revient à un mode passif qui n’affiche que les appareils avec lesquels il a lui-même communiqué.
👁️ Événements ARP avec « Que faire ensuite »
L’apparition d’un nouvel appareil et le changement de MAC sur une IP connue (signe d’usurpation ARP) sont présentés avec l’horodatage, la gravité (critique à info), les raisons, les appareils concernés et des étapes de vérification concrètes. Un changement de MAC sur l’IP de la passerelle est jugé critique. Avec la capture passive facultative, il détecte aussi un appareil qui envoie des requêtes ARP pour de nombreuses IP (reconnaissance interne).
🔎 Vue d'ensemble des autres appareils du réseau & comportements suspects (détection seule)
Fournit à titre indicatif : fabricant MAC et catégorie d’appareil, identification du modèle via les auto-annonces mDNS/SSDP/DHCP, connexions vers des IP malveillantes connues ou des ports d’administration, signes de participation à un botnet/DDoS (nombreuses destinations) et de tunneling DNS/C2. L’essentiel nécessite la capture passive facultative (p. ex. port miroir) ; le Sensor ne bloque jamais le trafic.
🔑 Appairage par code (Ed25519, IP fixe)
Ne fait confiance à rien par défaut. Saisir le code d'appairage à usage unique, valable 10 minutes, émis par l'opérateur du Sensor, avec l'adresse IP fixe du Sensor, établit en une seule étape une confiance mutuelle dans les deux sens. Les clés publiques sont échangées automatiquement, inutile de les connaître à l'avance. Aucun compte ni inscription dans le cloud requis.
📅 Audits planifiés et détection des changements (optionnel)
Audite automatiquement, selon un calendrier, tous les points d'accès appairés et montre ce qui a changé depuis l'audit précédent : nouvelles détections, détections résolues et ports nouvellement ouverts. Si tous les ports auparavant ouverts deviennent soudain invisibles, cela est signalé comme injoignable probable, et non comme résolu. Même sans surveillance, le Sensor vérifie avant et après chaque audit que l'adresse MAC du point d'accès est toujours celle avec laquelle il s'est authentifié, et n'audite pas si l'IP est passée à un autre appareil. Désactivé par défaut ; vous réglez l'intervalle et la plage horaire.
📣 Notifications et preuves d'audit (optionnel)
Les régressions, nouveaux appareils, usurpations ARP, etc. peuvent être envoyés à des webhooks (Slack, Discord, Teams et autres) et à syslog (RFC 5424). Appairage, désappairage, audits et modifications de configuration sont consignés avec leur auteur dans un journal des opérations infalsifiable (chaîne de hachage), et les résultats d'audit, l'inventaire des appareils et le journal s'exportent en CSV, JSON ou rapport HTML (à enregistrer en PDF depuis un navigateur). Chaque destination est choisie par vous ; rien n'est envoyé par défaut.
🗂️ Agréger plusieurs Sensors (collecteur central, optionnel)
Pour les organisations qui déploient des Sensors sur plusieurs sites, un collecteur central qui rassemble des synthèses signées est inclus (désactivé par défaut). Il offre un tableau de bord par site et un export CSV, et détecte qu'un journal d'audit de Sensor a été tronqué ou ramené en arrière. Il n'accepte que les requêtes signées des Sensors enregistrés et refuse d'être exposé hors du LAN sans TLS.
Si le Sensor lui-même doit être protégé contre des attaques, nous recommandons d'installer séparément RoamSwitch for Linux Server Edition sur la même machine — les deux fonctionnent comme des processus totalement indépendants.
Exemple de rapport d'audit
Exemple du rapport produit par roamswitch-sensor export all --format html (touche e dans le TUI). C'est un fichier HTML unique : ouvrez-le dans un navigateur et choisissez « Enregistrer au format PDF » pour obtenir un PDF à remettre aux auditeurs.
Rapport d'audit RoamSwitch Sensor
| Créé le (UTC) | 2026-09-20T02:30:12.508136294+00:00 |
|---|---|
| Site | Siège, salle serveur du 3e étage |
| Clé publique du Sensor | +kbYCoN5jJSykTAr8zDv/VCs2SdBcrwYbkCrzCRgsLM= |
| Journal d'audit | Vérification d'intégrité : OK (aucune altération), 18 entrées, head #18 771a265c58fa2f0a8990bc6be79ff5259d96a76a0a3fea472f308df02eaa087f |
Dernier résultat d'audit par appareil
| Appareil | Adresse | Date d'exécution | Constats | Ports ouverts |
|---|---|---|---|---|
| web-prod-01 | 192.168.20.21 | 2026-09-20T02:00:43.318204577+00:00 | 1 élément | 2 |
| db-prod-01 | 192.168.20.22 | 2026-09-20T02:01:14.774390215+00:00 | 2 éléments | 3 |
| dev-laptop-07 | 192.168.20.35 | 2026-09-20T02:02:07.120765432+00:00 | Aucun problème | 1 |
Constats
| Date/heure | Appareil | Port | Descriptif | Action recommandée |
|---|---|---|---|---|
| 2026-09-20T02:01:14.774390215+00:00 | db-prod-01 | 22 | Bannière de version SSH exposée Ce serveur SSH expose sa bannière de version à la connexion. La bannière elle-même est un comportement normal, mais elle aide un attaquant à cibler des vulnérabilités connues. | Mettez SSH à jour vers la dernière version et réduisez au besoin le contenu de la bannière. |
| 2026-09-20T02:01:14.774390215+00:00 | db-prod-01 | 6379 | Vulnérabilité connue : CVE-2021-32626 (Redis) Description NVD (texte original en anglais) : Redis is an open source, in-memory database that persists on disk. In affected versions specially crafted Lua scripts executing in Redis can cause the heap-based Lua stack to be overflowed, due to incomplete checks for this condition. This can result with heap corruption and potentially remote code execution. This problem exists in all versions of Redis with Lua scripting support, starting from 2.6. The problem is fixed in versions 6.2.6, 6.0.16 and 5.0.14. | Mettez rapidement Redis à niveau vers une version non affectée par CVE-2021-32626 et, d'ici là, limitez l'accès réseau sans authentification. |
| 2026-09-20T02:00:43.318204577+00:00 | web-prod-01 | 22 | Bannière de version SSH exposée Ce serveur SSH expose sa bannière de version à la connexion. La bannière elle-même est un comportement normal, mais elle aide un attaquant à cibler des vulnérabilités connues. | Mettez SSH à jour vers la dernière version et réduisez au besoin le contenu de la bannière. |
| 2026-09-19T08:33:18.402118906+00:00 | db-prod-01 | 22 | Bannière de version SSH exposée Ce serveur SSH expose sa bannière de version à la connexion. La bannière elle-même est un comportement normal, mais elle aide un attaquant à cibler des vulnérabilités connues. | Mettez SSH à jour vers la dernière version et réduisez au besoin le contenu de la bannière. |
Inventaire des équipements (tous les appareils observés sur le LAN)
| MAC | IP | Nom d'hôte | Fabricant | Géré par RoamSwitch | Note |
|---|---|---|---|---|---|
| 00:1b:8b:3c:9a:07 | 192.168.20.1 | _gateway | NEC Platforms | Non géré | Routeur passerelle du siège |
| 7c:8b:ca:61:d2:4e | 192.168.20.2 | TP-Link Technologies | Non géré | Point d'accès Wi-Fi du 3e étage | |
| e4:e7:49:2b:70:c1 | 192.168.20.3 | Hewlett Packard | Non géré | Multifonction du 2e étage | |
| 90:61:ae:17:4d:e2 | 192.168.20.21 | Intel Corporate | Géré | Serveur web de production | |
| 90:61:ae:17:4d:f9 | 192.168.20.22 | Intel Corporate | Géré | Serveur de base de données de production | |
| 04:20:9a:cc:31:8f | 192.168.20.31 | sensor-hq-01 | Panasonic AVC Networks Company | Non géré | RoamSwitch-Sensor |
| a0:c9:a0:5e:83:2b | 192.168.20.35 | Murata Manufacturing | Géré | Ordinateur portable de développement | |
| 8e:0f:95:a2:64:5d | 192.168.20.44 | Non géré | |||
| 5e:e2:59:1d:c8:03 | 192.168.20.45 | Non géré | |||
| a8:3b:76:9c:20:e4 | 192.168.20.52 | Cloud Network Technology Singapore PTE. | Non géré |
Journal des opérations et approbations
| # | Date/heure | Exécutant | Fonctionnement | Champ d'application | Détails |
|---|---|---|---|---|---|
| 18 | 2026-09-20T02:02:07.120765432+00:00 | scheduler | audit_completed | dev-laptop-07 (Q9mW3sLp0xVc) | trigger=scheduled host=192.168.20.35 findings=0 open_ports=1 new_findings=0 resolved_findings=0 |
| 17 | 2026-09-20T02:02:05.402816653+00:00 | scheduler | audit_started | dev-laptop-07 (Q9mW3sLp0xVc) | host=192.168.20.35 |
| 16 | 2026-09-20T02:01:14.774390215+00:00 | scheduler | audit_completed | db-prod-01 (Zt4Kb8NwY1eR) | trigger=scheduled host=192.168.20.22 findings=2 open_ports=3 new_findings=1 resolved_findings=0 |
| 15 | 2026-09-20T02:01:12.117409552+00:00 | scheduler | audit_started | db-prod-01 (Zt4Kb8NwY1eR) | host=192.168.20.22 |
| 14 | 2026-09-20T02:00:43.318204577+00:00 | scheduler | audit_completed | web-prod-01 (Xk3F9aLm2QzB) | trigger=scheduled host=192.168.20.21 findings=1 open_ports=2 new_findings=1 resolved_findings=0 |
| 13 | 2026-09-20T02:00:41.029385714+00:00 | scheduler | audit_started | web-prod-01 (Xk3F9aLm2QzB) | host=192.168.20.21 |
| 12 | 2026-09-19T09:11:40.318842077+00:00 | cli:uid=1000 | config_changed | schedule.window_end_hour | value=5 |
| 11 | 2026-09-19T09:11:32.640571920+00:00 | cli:uid=1000 | config_changed | schedule.window_start_hour | value=1 |
| 10 | 2026-09-19T09:10:02.205197346+00:00 | cli:uid=1000 | config_changed | schedule.enabled | value=true |
| 9 | 2026-09-19T08:47:19.771263084+00:00 | control_api: | pair | dev-laptop-07 (Q9mW3sLp0xVc) | endpoint redeemed an operator-issued pairing code and was added to the audit scope |
| 8 | 2026-09-19T08:46:52.093718455+00:00 | cli:uid=1000 | pairing_code_issued | single-use, valid 10 minutes | |
| 7 | 2026-09-19T08:33:18.402118906+00:00 | cli:uid=1000 | audit_completed | db-prod-01 (Zt4Kb8NwY1eR) | trigger=manual host=192.168.20.22 findings=1 open_ports=2 new_findings=1 resolved_findings=0 |
| 6 | 2026-09-19T08:33:15.588240391+00:00 | cli:uid=1000 | audit_started | db-prod-01 (Zt4Kb8NwY1eR) | manual audit; host=192.168.20.22 |
| 5 | 2026-09-19T08:31:07.336914608+00:00 | control_api: | pair | db-prod-01 (Zt4Kb8NwY1eR) | endpoint redeemed an operator-issued pairing code and was added to the audit scope |
| 4 | 2026-09-19T08:30:41.874526103+00:00 | cli:uid=1000 | pairing_code_issued | single-use, valid 10 minutes | |
| 3 | 2026-09-19T08:12:26.152083967+00:00 | control_api: | pair | web-prod-01 (Xk3F9aLm2QzB) | endpoint redeemed an operator-issued pairing code and was added to the audit scope |
| 2 | 2026-09-19T08:11:58.960417225+00:00 | cli:uid=1000 | pairing_code_issued | single-use, valid 10 minutes | |
| 1 | 2026-09-19T08:00:03.415602838+00:00 | daemon | daemon_started | version 0.3.4 |
RoamSwitch Sensor Audit Report
| Generated (UTC) | 2026-09-20T02:30:12.508136294+00:00 |
|---|---|
| Site | HQ – 3F server room |
| Sensor public key | +kbYCoN5jJSykTAr8zDv/VCs2SdBcrwYbkCrzCRgsLM= |
| Audit log | Integrity check: OK (no tampering detected) — 18 entries, head #18 771a265c58fa2f0a8990bc6be79ff5259d96a76a0a3fea472f308df02eaa087f |
Latest audit per endpoint
| Endpoint | Address | Timestamp | Findings | Open ports |
|---|---|---|---|---|
| web-prod-01 | 192.168.20.21 | 2026-09-20T02:00:43.318204577+00:00 | 1 finding(s) | 2 |
| db-prod-01 | 192.168.20.22 | 2026-09-20T02:01:14.774390215+00:00 | 2 finding(s) | 3 |
| dev-laptop-07 | 192.168.20.35 | 2026-09-20T02:02:07.120765432+00:00 | clean | 1 |
Findings
| When | Endpoint | Port | Finding | Recommendation |
|---|---|---|---|---|
| 2026-09-20T02:01:14.774390215+00:00 | db-prod-01 | 22 | SSH Version Banner Disclosed This SSH server discloses its version banner on connect. This is normal SSH behavior, but the banner gives an attacker a starting point to look up known vulnerabilities for that version. | Keep SSH updated to the latest version, and minimize the banner's detail if your SSH implementation allows it. |
| 2026-09-20T02:01:14.774390215+00:00 | db-prod-01 | 6379 | Known Vulnerability: CVE-2021-32626 (Redis) Redis is an open source, in-memory database that persists on disk. In affected versions specially crafted Lua scripts executing in Redis can cause the heap-based Lua stack to be overflowed, due to incomplete checks for this condition. This can result with heap corruption and potentially remote code execution. This problem exists in all versions of Redis with Lua scripting support, starting from 2.6. The problem is fixed in versions 6.2.6, 6.0.16 and 5.0.14. | Upgrade Redis to a version not affected by CVE-2021-32626 as soon as possible, and restrict unauthenticated network access to it in the meantime. |
| 2026-09-20T02:00:43.318204577+00:00 | web-prod-01 | 22 | SSH Version Banner Disclosed This SSH server discloses its version banner on connect. This is normal SSH behavior, but the banner gives an attacker a starting point to look up known vulnerabilities for that version. | Keep SSH updated to the latest version, and minimize the banner's detail if your SSH implementation allows it. |
| 2026-09-19T08:33:18.402118906+00:00 | db-prod-01 | 22 | SSH Version Banner Disclosed This SSH server discloses its version banner on connect. This is normal SSH behavior, but the banner gives an attacker a starting point to look up known vulnerabilities for that version. | Keep SSH updated to the latest version, and minimize the banner's detail if your SSH implementation allows it. |
Device inventory (every device observed on the LAN)
| MAC | IP | Hostname | Vendor | Managed | Note |
|---|---|---|---|---|---|
| 00:1b:8b:3c:9a:07 | 192.168.20.1 | _gateway | NEC Platforms | no | HQ gateway router |
| 7c:8b:ca:61:d2:4e | 192.168.20.2 | TP-Link Technologies | no | 3F Wi-Fi access point | |
| e4:e7:49:2b:70:c1 | 192.168.20.3 | Hewlett Packard | no | 2F multifunction printer | |
| 90:61:ae:17:4d:e2 | 192.168.20.21 | Intel Corporate | yes | Production web server | |
| 90:61:ae:17:4d:f9 | 192.168.20.22 | Intel Corporate | yes | Production database server | |
| 04:20:9a:cc:31:8f | 192.168.20.31 | sensor-hq-01 | Panasonic AVC Networks Company | no | RoamSwitch-Sensor |
| a0:c9:a0:5e:83:2b | 192.168.20.35 | Murata Manufacturing | yes | Development laptop | |
| 8e:0f:95:a2:64:5d | 192.168.20.44 | no | |||
| 5e:e2:59:1d:c8:03 | 192.168.20.45 | no | |||
| a8:3b:76:9c:20:e4 | 192.168.20.52 | Cloud Network Technology Singapore PTE. | no |
Operation & approval log
| # | When | Actor | Action | Target | Detail |
|---|---|---|---|---|---|
| 18 | 2026-09-20T02:02:07.120765432+00:00 | scheduler | audit_completed | dev-laptop-07 (Q9mW3sLp0xVc) | trigger=scheduled host=192.168.20.35 findings=0 open_ports=1 new_findings=0 resolved_findings=0 |
| 17 | 2026-09-20T02:02:05.402816653+00:00 | scheduler | audit_started | dev-laptop-07 (Q9mW3sLp0xVc) | host=192.168.20.35 |
| 16 | 2026-09-20T02:01:14.774390215+00:00 | scheduler | audit_completed | db-prod-01 (Zt4Kb8NwY1eR) | trigger=scheduled host=192.168.20.22 findings=2 open_ports=3 new_findings=1 resolved_findings=0 |
| 15 | 2026-09-20T02:01:12.117409552+00:00 | scheduler | audit_started | db-prod-01 (Zt4Kb8NwY1eR) | host=192.168.20.22 |
| 14 | 2026-09-20T02:00:43.318204577+00:00 | scheduler | audit_completed | web-prod-01 (Xk3F9aLm2QzB) | trigger=scheduled host=192.168.20.21 findings=1 open_ports=2 new_findings=1 resolved_findings=0 |
| 13 | 2026-09-20T02:00:41.029385714+00:00 | scheduler | audit_started | web-prod-01 (Xk3F9aLm2QzB) | host=192.168.20.21 |
| 12 | 2026-09-19T09:11:40.318842077+00:00 | cli:uid=1000 | config_changed | schedule.window_end_hour | value=5 |
| 11 | 2026-09-19T09:11:32.640571920+00:00 | cli:uid=1000 | config_changed | schedule.window_start_hour | value=1 |
| 10 | 2026-09-19T09:10:02.205197346+00:00 | cli:uid=1000 | config_changed | schedule.enabled | value=true |
| 9 | 2026-09-19T08:47:19.771263084+00:00 | control_api: | pair | dev-laptop-07 (Q9mW3sLp0xVc) | endpoint redeemed an operator-issued pairing code and was added to the audit scope |
| 8 | 2026-09-19T08:46:52.093718455+00:00 | cli:uid=1000 | pairing_code_issued | single-use, valid 10 minutes | |
| 7 | 2026-09-19T08:33:18.402118906+00:00 | cli:uid=1000 | audit_completed | db-prod-01 (Zt4Kb8NwY1eR) | trigger=manual host=192.168.20.22 findings=1 open_ports=2 new_findings=1 resolved_findings=0 |
| 6 | 2026-09-19T08:33:15.588240391+00:00 | cli:uid=1000 | audit_started | db-prod-01 (Zt4Kb8NwY1eR) | manual audit; host=192.168.20.22 |
| 5 | 2026-09-19T08:31:07.336914608+00:00 | control_api: | pair | db-prod-01 (Zt4Kb8NwY1eR) | endpoint redeemed an operator-issued pairing code and was added to the audit scope |
| 4 | 2026-09-19T08:30:41.874526103+00:00 | cli:uid=1000 | pairing_code_issued | single-use, valid 10 minutes | |
| 3 | 2026-09-19T08:12:26.152083967+00:00 | control_api: | pair | web-prod-01 (Xk3F9aLm2QzB) | endpoint redeemed an operator-issued pairing code and was added to the audit scope |
| 2 | 2026-09-19T08:11:58.960417225+00:00 | cli:uid=1000 | pairing_code_issued | single-use, valid 10 minutes | |
| 1 | 2026-09-19T08:00:03.415602838+00:00 | daemon | daemon_started | version 0.3.4 |
Tous les noms de machines, adresses MAC, adresses IP et clés affichés sont fictifs. Le corps du rapport est produit en japonais ou en anglais (hors affichage japonais, la version anglaise est présentée).