ROAMSWITCH SENSOR ・ Ultimo aggiornamento: 2026-09-20

Manuale Operativo di RoamSwitch Sensor

La guida all'installazione e alla gestione di RoamSwitch Sensor, un sensore di rete che, una volta collocato nella LAN, rileva nuovi dispositivi e spoofing nello stesso segmento, ed esegue controlli attivi delle vulnerabilità su qualsiasi endpoint già dotato di RoamSwitch (Mac / Linux Client / Server Edition). Distribuito tramite pacchetti apt/dnf.

1. Panoramica e posizionamento

RoamSwitch (Mac / Linux Client / Server Edition) è, in ogni caso, un agente residente sull'host. Questa forma presenta due punti ciechi strutturali.

RoamSwitch Sensor è un nodo dedicato collocato nella LAN, con l'obiettivo di colmare entrambe le lacune. Ciò che è realmente implementato e verificato oggi si limita a due cose: controlli attivi delle vulnerabilità sugli endpoint dotati di RoamSwitch nella stessa LAN, e rilevamento passivo della comparsa di nuovi dispositivi e dello spoofing, guidato dalla tabella ARP dello stesso Sensor (come indicato al §6, non si tratta di una funzione che scansiona attivamente e rende visibile ogni dispositivo della LAN). Non è progettato come un EDR, ma come un NDR leggero (Network Detection & Response) combinato con uno scanner di vulnerabilità a prova di sfruttamento sviluppato internamente.

Principio Zero Telemetry (completamente locale)
RoamSwitch Sensor non invia mai informazioni sui dispositivi rilevati, risultati dei controlli o eventi ARP al di fuori della LAN. Anche l'associazione avviene interamente in locale tramite un codice di abbinamento monouso rilasciato dall'operatore del Sensor: non è richiesta alcuna registrazione cloud né creazione di un account.

L'autodifesa non è implementata intenzionalmente (una scelta progettuale deliberata). Se è necessario proteggere l'host del Sensor stesso dagli attacchi, si consiglia di installare separatamente RoamSwitch for Linux Server Edition sulla stessa macchina. I due funzionano come processi completamente indipendenti e coesistono senza conflitti.

2. Ambiente di verifica attuale

3. Installazione e avvio

Installare il pacchetto roamswitch-sensor dal repository ufficiale firmato. Dopo l'installazione, roamswitch-sensor.service (systemd) viene abilitato e avviato automaticamente.

3.1 APT (Ubuntu / Debian)

# 1. Registrare la chiave di firma del repository
curl -fsSL https://lafine.net/apt/roamswitch-archive-keyring.asc \
  | sudo gpg --dearmor -o /usr/share/keyrings/roamswitch-archive-keyring.gpg

# 2. Aggiungere il repository
echo "deb [signed-by=/usr/share/keyrings/roamswitch-archive-keyring.gpg] https://lafine.net/apt stable main" \
  | sudo tee /etc/apt/sources.list.d/roamswitch.list

# 3. Installare
sudo apt update && sudo apt install roamswitch-sensor

3.2 DNF / RPM (Fedora / RHEL)

# 1. Importare la chiave GPG
sudo rpm --import https://lafine.net/rpm/RPM-GPG-KEY-roamswitch

# 2. Aggiungere il file di configurazione del repository
sudo curl -fsSL -o /etc/yum.repos.d/roamswitch.repo https://lafine.net/rpm/fedora/roamswitch.repo

# 3. Installare
sudo dnf install roamswitch-sensor

3.3 Verifica dell'avvio

systemctl status roamswitch-sensor.service
sudo roamswitch-sensor status

3.4 Esecuzione di CLI / TUI

La CLI (roamswitch-sensor) e la TUI interattiva (roamswitch-sensor-tui) possono essere eseguite direttamente dopo l'installazione.

sudo roamswitch-sensor status
sudo roamswitch-sensor-tui
Opt-in: estensione della visibilità passiva della LAN
Per l'uso con una porta mirror dello switch (SPAN) o un bridge trasparente inline, specificare il nome dell'interfaccia di destinazione nella variabile d'ambiente ROAMSWITCH_SENSOR_PASSIVE_CAPTURE_IFACE (impostata tramite systemctl edit roamswitch-sensor.service) per osservare le intestazioni Ethernet/IPv4 su tale interfaccia e rilevare nuovi dispositivi o contatti con IP dannosi noti (vedere il §6.1). Disattivato per impostazione predefinita.

4. Abbinamento (metodo a codice)

Di fabbrica, Sensor non si fida di nulla. L'abbinamento avviene tramite un codice di abbinamento monouso rilasciato dall'operatore del Sensor. Il rapporto di fiducia — «Sensor può eseguire controlli attivi delle vulnerabilità su questo endpoint» — si stabilisce simultaneamente in entrambe le direzioni con un unico passaggio di abbinamento (non esiste uno stato di fiducia in una sola direzione).

Prerequisito: eseguire Sensor con un indirizzo IP fisso (assegnazione statica, o riserva lato server DHCP). Dopo l'abbinamento, l'endpoint si connette sempre direttamente all'indirizzo IP di Sensor confermato al momento dell'abbinamento (non esiste più alcuna scoperta automatica, né tramite mDNS né altrimenti); se l'IP di Sensor cambia in seguito, sarà necessario un nuovo abbinamento. Il lato endpoint può continuare a usare un IP dinamico.

4.1 Rilasciare un codice di abbinamento (lato Sensor)

# Eseguire sul lato Sensor (oppure premere c nella TUI)
sudo roamswitch-sensor issue-code

Viene rilasciato un codice monouso di 8 caratteri (lettere maiuscole e cifre, esclusi i caratteri facilmente confondibili 0/O/1/I/L). Scade 10 minuti dopo il rilascio e può essere usato una sola volta: comunicarlo quindi tempestivamente all’operatore dell’endpoint tramite un qualsiasi canale fuori banda (a voce, in chat, ecc.).

4.2 Abbinamento tramite codice (lato endpoint)

# Lato endpoint (roamswitch-linux)
sudo roamswitch sensor pair --addr <IP fisso del Sensor> --code <codice di abbinamento>

Nell'edizione Mac, la stessa operazione è disponibile tramite l'interfaccia grafica da «🔍 Associazione RoamSwitch Sensor…» nella barra dei menu, dove si inseriscono l'indirizzo IP e il codice di abbinamento del Sensor.

Una volta completato l'abbinamento, ogni successivo controllo attivo delle vulnerabilità e ogni recupero dei risultati vengono autenticati con una firma Ed25519. Sia l'endpoint che conosceva il codice, sia il Sensor che lo ha rilasciato, si fidano reciprocamente da quel momento in poi.

Quando un codice di abbinamento è scaduto
Un codice di abbinamento scade automaticamente 10 minuti dopo il rilascio e non può mai essere utilizzato due volte. Un tentativo di abbinamento dopo la scadenza viene rifiutato. In tal caso, chiedere all'operatore del Sensor di rilasciarne uno nuovo con issue-code.

4.3 Associazione manuale (registrazione diretta di una chiave pubblica già nota)

Se l'operatore del Sensor conosce già, tramite un altro canale, la chiave pubblica e l'indirizzo di un endpoint, può anche registrarlo direttamente sul lato Sensor senza scambiare un codice di abbinamento (normalmente è preferibile usare il metodo a codice del §4.2 e lasciare che l'endpoint si abbini da solo). È possibile consultare la propria chiave pubblica e il proprio indirizzo con i seguenti comandi.

# Verificare la propria chiave pubblica/indirizzo sul lato endpoint
sudo roamswitch sensor key

# Verificare la propria chiave pubblica/indirizzo/indirizzo MAC sul lato Sensor
sudo roamswitch-sensor status
# Lato Sensor
sudo roamswitch-sensor pair <chiave pubblica completa> --addr <indirizzo IP> --confirm

5. Controllo attivo delle vulnerabilità

Sensor esegue diagnosi delle vulnerabilità non distruttive e basate su prove sugli endpoint associati. Non esegue mai operazioni distruttive (scrittura o cancellazione di dati, arresto di servizi).

sudo roamswitch-sensor scan <chiave pubblica o il suo inizio>

Il controllo si compone di quattro fasi.

  1. Scansione completa delle porte: rileva in modo esaustivo tutte le porte TCP aperte sull'host di destinazione.
  2. Diagnosi delle firme note: verifiche non distruttive e basate su prove contro pattern di vulnerabilità noti — esposizione non autenticata di Redis / dockerd / Memcached / MongoDB / Elasticsearch / CouchDB / Jenkins / VNC, diagnosi di open relay SMTP (un metodo sicuro che invia solo MAIL FROM/RCPT TO, mai DATA) e diagnosi di configurazione CORS errata, path traversal e open redirect su server di sviluppo, tra le altre.
  3. Acquisizione generica del banner: per le porte aperte non coperte dalle firme sopra indicate, recupera la stringa del banner semplicemente connettendosi (non viene inviato alcun dato).
  4. Diagnosi supplementare nmap NSE: diagnosi supplementare ad ampia copertura di protocolli tramite nmap --script safe. Viene eseguita automaticamente non appena nmap è installato sull'host (altrimenti non fa nulla).

Ogni esecuzione di controllo viene registrata in /var/lib/roamswitch-sensor/scan_history.json — indipendentemente dal fatto che sia stato rilevato qualcosa, poiché anche un risultato pulito in quel momento ha valore documentale — e può essere consultata da CLI o TUI.

roamswitch-sensor history
sudo roamswitch-sensor report <chiave pubblica o il suo inizio> --out /tmp/report.md

5.1 Richiesta di un controllo dal lato client (modello pull)

Un endpoint abbinato può anche richiedere attivamente un controllo a Sensor. Nell’edizione Mac, usare «Richiedi controllo al Sensor» nella barra dei menu; su Linux, usare il comando seguente.

sudo roamswitch sensor request-audit

Dopo che Sensor ha eseguito il controllo, l’endpoint interroga il risultato a partire da 5 minuti dopo la richiesta, poi ogni 5 minuti per un massimo di 5 tentativi (quindi fino a 25 minuti in totale). Il risultato ottenuto viene salvato anche localmente sull’endpoint.

roamswitch sensor results

Nell’edizione Mac, i risultati compaiono anche nell’elenco «Risultati dei controlli» della finestra delle impostazioni, oppure possono essere letti tramite lo strumento MCP get_sensor_audit_results, come input per un agente IA che pianifica una remediation. Il recupero di un risultato può anche essere esplicitamente rifiutato, ad esempio se l’abbinamento è stato revocato sul lato Sensor (vedere §10 D6).

6. Monitoraggio ARP passivo e visibilità della LAN

Sensor esegue periodicamente uno snapshot della propria tabella ARP (equivalente a /proc/net/arp) e, confrontandolo con lo snapshot precedente, rileva due tipi di eventi: un nuovo IP/MAC mai visto prima, e una modifica dell'indirizzo MAC per un IP già noto (un segnale, ad esempio, di spoofing del gateway). Non invia mai pacchetti in modo attivo e copre solo i dispositivi con cui Sensor ha già in qualche modo comunicato (non è una funzione che scopre ed elenca attivamente ogni dispositivo della LAN). Non ha alcuna capacità di classificare il tipo di dispositivo (ad esempio, se si tratta di un dispositivo IoT) — rileva solo una modifica di IP/MAC.

roamswitch-sensor arp-events

Gli eventi rilevati possono essere elencati anche dalla scheda «ARP Events» della TUI, che distingue due tipi: «nuovo dispositivo comparso» e «indirizzo MAC di un IP noto modificato (sospetto spoofing)».

6.1 Estensione della visibilità passiva della LAN (opt-in)

Mentre il monitoraggio ARP sopra descritto copre solo i dispositivi con cui Sensor ha comunicato, impostando la variabile d'ambiente ROAMSWITCH_SENSOR_PASSIVE_CAPTURE_IFACE su un'interfaccia di destinazione si osservano le intestazioni Ethernet/IPv4 su di essa (senza ispezione del payload) per rilevare quanto segue.

sudo systemctl edit roamswitch-sensor.service
# [Service]
# Environment=ROAMSWITCH_SENSOR_PASSIVE_CAPTURE_IFACE=eth0

sudo systemctl restart roamswitch-sensor.service
roamswitch-sensor passive-events
Una NIC normale rispetto a una porta mirror
Anche una singola NIC ordinaria funziona per rilevare nuovi dispositivi nell'ambito del traffico ARP/broadcast/multicast (verificato su hardware reale su una LAN fisica). Tuttavia, per osservare il traffico unicast generale tra altri due host sulla LAN è necessaria una porta mirror dello switch (SPAN), oppure configurare Sensor come bridge trasparente inline.

7. Guida rapida ai comandi CLI

Comando Descrizione
roamswitch-sensor status Mostra la chiave pubblica, l'indirizzo IP e l'indirizzo MAC di Sensor, oltre ai conteggi di dispositivi associati/eventi ARP/richieste di controllo in sospeso
roamswitch-sensor issue-code Rilascia un codice di abbinamento monouso (valido 10 minuti)
roamswitch-sensor list Elenca gli endpoint associati
roamswitch-sensor pair <public-key> [--addr <IP>] [--name <name>] --confirm Associa manualmente un endpoint indicando direttamente la sua chiave pubblica e il suo indirizzo (normalmente è più semplice usare issue-code e lasciare che l'endpoint si abbini da solo)
roamswitch-sensor unpair <public-key> Rimuove un'associazione
roamswitch-sensor scan <public-key> Esegue un controllo attivo delle vulnerabilità su un endpoint associato
roamswitch-sensor history [public-key] Mostra la cronologia dei controlli (omettere la chiave pubblica per tutti gli endpoint)
roamswitch-sensor report <public-key> [--out <file>] Esporta il risultato del controllo più recente come report Markdown
roamswitch-sensor arp-events Mostra gli eventi ARP rilevati (nuovi dispositivi, sospetto spoofing)
roamswitch-sensor config [show | set <chiave> <valore>] Mostra o modifica le impostazioni (audit pianificati, notifiche, conservazione, collector; senza riavviare il demone)
roamswitch-sensor diff [chiave pubblica] Mostra cosa è cambiato rispetto all'audit precedente (nuovi rilevamenti, risolti, porte appena aperte, probabilmente irraggiungibile)
roamswitch-sensor export <scans|inventory|audit-log|all> … Scrive le evidenze di audit in CSV / JSON / HTML stampabile
roamswitch-sensor audit-log [verify] Mostra il registro di operazioni e approvazioni; verify rileva la manomissione della catena di hash
roamswitch-sensor notify-test Invia una notifica di prova alle destinazioni configurate (webhook / syslog) per verificarne la connessione

La CLI supporta solo giapponese e inglese (segue la variabile d'ambiente LANG).

8. Guida operativa della TUI

La TUI interattiva (roamswitch-sensor-tui) supporta 10 lingue. Con il tasto Tab (Shift+Tab per tornare indietro) si passa tra sei schede: Attendibile (ultimo stato di audit di ogni endpoint) / Dispositivi (tutti i dispositivi della LAN, con note) / Eventi ARP / Cronologia / Variazioni (cosa è cambiato dall'audit precedente: nuovi rilevamenti in rosso, risolti in verde, probabilmente irraggiungibile in giallo) / Registro (chi ha approvato o eseguito cosa e quando; in alto è mostrato l'esito della verifica della catena di hash).

Tasto Azione
TabCambia scheda
↑↓ / j kSeleziona una voce
cGenerare un codice di abbinamento (valido 10 minuti). La schermata mostra anche il comando da eseguire sull'endpoint, sudo roamswitch sensor pair --addr <IP di questo Sensor> --code <codice>, già compilato con i valori reali
uRimuove un'associazione
sEsegue un controllo attivo delle vulnerabilità sull'endpoint selezionato
n(Scheda Dispositivi) Aggiungere una nota — nome, uso, posizione — al dispositivo selezionato; un dispositivo con nota è considerato identificato
rRipetere subito la scansione della LAN (sweep ARP; altrimenti automatica ogni ora)
eEsportare le evidenze di audit (CSV di risultati, inventario o registro; report HTML; JSON). Scritto come nuovo file leggibile solo dal proprietario in /tmp; l'esportazione stessa viene registrata nel registro
EnterMostrare i dettagli della riga selezionata (cronologia, variazioni, eventi ARP, dispositivi, registro)
w(durante la visualizzazione dettagliata) esporta il contenuto in un file
LSeleziona la lingua di visualizzazione
qEsce

9. Modello di fiducia e progettazione della sicurezza

10. Risoluzione dei problemi e FAQ

D1. L'inserimento di un codice di abbinamento viene rifiutato.

Tre cause probabili: (1) sono trascorsi più di 10 minuti dal rilascio e il codice è scaduto (chiedere all'operatore del Sensor di rilasciarne uno nuovo con issue-code); (2) un errore di digitazione nel codice (i caratteri facilmente confondibili 0/O/1/I/L sono esclusi già al momento del rilascio, quindi un codice non li contiene mai); (3) l'indirizzo IP indicato con --addr non corrisponde all'attuale indirizzo IP fisso di Sensor.

D2. Il risultato della diagnosi supplementare NSE è vuoto.

Una di queste due cause: (1) nmap non è installato nel container; (2) è stato eseguito, ma gli script sicuri applicabili alle porte di destinazione non hanno effettivamente prodotto alcun output. La diagnosi supplementare nmap NSE viene eseguita automaticamente non appena nmap è installato sull'host.

D3. Quanto tempo richiede il completamento di un controllo?

Una semplice scansione completa delle porte richiede circa qualche decina di secondi, ma non appena nmap è installato sull'host, si aggiunge automaticamente la diagnosi supplementare NSE, che può richiedere fino a circa 2 minuti a seconda del numero di porte aperte del bersaglio. La TUI continua a mostrare i secondi trascorsi durante l'esecuzione, così è possibile seguire l'avanzamento mentre si attende.

D4. Ho associato, ma non riesco ancora a eseguire un controllo.

Cause probabili: (1) sensor_pairing_enabled: true non è impostato sul lato endpoint (disattivato per impostazione predefinita); (2) l'indirizzo IP fisso di Sensor è cambiato dopo l'abbinamento, per cui l'endpoint tenta di raggiungere un indirizzo obsoleto (un nuovo abbinamento risolve il problema); (3) l'abbinamento è stato rimosso sul lato Sensor con unpair. Verificare con roamswitch sensor list (lato endpoint) e roamswitch-sensor list (lato Sensor) che ciascuno riconosca l'altro.

D5. Sensor può essere utilizzato insieme a RoamSwitch stesso (Client/Server Edition)?

Sì. Poiché Sensor è progettato senza funzioni di autodifesa, si consiglia di eseguire anche RoamSwitch for Linux Server Edition sulla stessa macchina. I due funzionano con processi e archivi dati completamente indipendenti, senza conflitti.

D6. roamswitch sensor results segnala che l’abbinamento è stato revocato.

L’abbinamento di questo endpoint è stato rimosso sul lato Sensor con unpair. Chiedere all’operatore del Sensor di rilasciare un nuovo codice di abbinamento, quindi riabbinare con roamswitch sensor pair --addr <ip> --code <code>.

11. Funzioni di audit per le organizzazioni (opzionali)

Un insieme di funzioni per i team di sicurezza delle grandi organizzazioni che hanno bisogno di evidenze di audit e di un quadro chiaro di ciò che è cambiato. Tutte sono disattivate per impostazione predefinita e non viene mai inviato nulla a Lafine né a terzi: ogni destinazione di notifica o aggregazione è scelta dalla vostra organizzazione. Le impostazioni si modificano con sudo roamswitch-sensor config set <chiave> <valore> (senza riavviare il demone; ogni modifica viene registrata nel registro delle operazioni); config show mostra i valori correnti.

11.1 Audit pianificati e rilevamento delle variazioni

Impostando schedule.enabled su true, tutti gli endpoint abbinati vengono sottoposti ad audit automaticamente (ogni 24 ore per impostazione predefinita: schedule.interval_hours; fascia oraria locale in cui un audit può iniziare: schedule.window_start_hour / window_end_hour, anche a cavallo della mezzanotte; parallelismo: schedule.max_parallel). Ogni audit viene confrontato con il precedente e roamswitch-sensor diff mostra i nuovi rilevamenti (regressioni), quelli risolti e le porte appena aperte. Se tutte le porte prima aperte diventano improvvisamente invisibili, il caso è segnalato come probabilmente irraggiungibile, non come «risolto»: un host spento non si distingue dall'esterno da uno che ha chiuso tutte le porte.

Gli audit non presidiati non intaccano la garanzia che vengano sottoposti ad audit solo gli endpoint consenzienti. L'IP di un endpoint può essere assegnato a un altro dispositivo dal DHCP; il Sensor memorizza quindi il MAC che l'endpoint aveva all'ultima autenticazione (abbinamento o richiesta di audit firmata) e verifica, prima e dopo ogni audit pianificato, con una vera richiesta ARP di nmap che a quell'IP risponda ancora lo stesso MAC. In caso contrario l'audit viene saltato (o il suo risultato scartato) e viene inviata una notifica. Anche uno scan manuale viene rifiutato se vi sono indizi che l'indirizzo appartenga ormai a un altro dispositivo. Il controllo richiede nmap; gli endpoint abbinati prima di questa funzione non vengono pianificati finché non si riabbinano o inviano una richiesta di audit firmata; sono coperti solo gli endpoint dello stesso segmento L2.

11.2 Notifiche (webhook e syslog)

Regressioni, nuovi dispositivi, ARP spoofing, traffico sospetto e altro vengono inviati a notify.webhook_urls (webhook in ingresso di Slack, Discord o Teams, oppure qualsiasi endpoint JSON generico) e a notify.syslog.host / port / protocol (RFC 5424 su UDP o TCP). Si possono restringere con notify.min_severity (info / medium / high / critical) e notify.cooldown_minutes (intervallo minimo prima di reinviare lo stesso evento). roamswitch-sensor notify-test verifica ogni destinazione.

11.3 Esportazione delle evidenze di audit

roamswitch-sensor export <scans|inventory|audit-log|all> --format csv|json|html [--out file] [--endpoint prefisso-chiave] [--since data]. L'output html è un unico file autonomo: aprilo in un browser e scegli «Salva come PDF» per ottenere un PDF da consegnare ai revisori. Il CSV è protetto dall'iniezione di formule nei fogli di calcolo. L'esportazione dell'inventario dei dispositivi include una colonna che indica se ciascun dispositivo è gestito da RoamSwitch (abbinato). I file prodotti sono leggibili solo dal proprietario (0600) e l'esportazione stessa viene registrata nel registro delle operazioni.

11.4 Registro di operazioni e approvazioni (a prova di manomissione)

Abbinamento, rimozione dell'abbinamento, avvio e completamento degli audit, modifiche di configurazione e accessi rifiutati vengono registrati insieme a chi li ha eseguiti (UID / chiave pubblica dell'endpoint / IP di origine). Ogni riga contiene lo SHA-256 della precedente, quindi qualsiasi modifica o cancellazione viene rilevata da roamswitch-sensor audit-log verify (codice di uscita 2 in caso di problemi). L'elenco si ottiene con roamswitch-sensor audit-log [--limit N]. Gli URL dei webhook contengono spesso un token, perciò il registro delle modifiche di configurazione non ne conserva mai i valori. Una catena di hash da sola non rivela che le voci più recenti siano state troncate; per questo la testa della catena (numero di sequenza e hash) viene inviata anche al collector (§11.6).

11.5 Conservazione

Impostate retention.scan_history_days, retention.audit_log_days e retention.inventory_stale_days per eliminare automaticamente la cronologia degli audit, le voci del registro e i dispositivi non visti da tempo (0 = nessuna eliminazione per età, valore predefinito). I dispositivi con una nota non vengono mai rimossi dall'inventario.

11.6 Aggregare più Sensor (collector centrale, opzionale)

Quando più Sensor operano in più sedi, eseguite roamswitch-sensor-collector (incluso nel pacchetto, disattivato per impostazione predefinita) su un host separato per raccogliere i riepiloghi firmati di ciascuno.

# On the collector host (a separate host from the Sensor is recommended)
sudo systemctl enable --now roamswitch-sensor-collector   # listens on 127.0.0.1:8443 by default
sudo roamswitch-sensor-collector token                     # read token for the dashboard
sudo roamswitch-sensor-collector enroll <Sensor public key> --name Tokyo --site Tokyo

# On each Sensor
sudo roamswitch-sensor config set collector.url https://collector.example.org:8443
sudo roamswitch-sensor config set collector.enabled true
← Manuale Operativo di Server Edition Alla pagina di installazione dell'edizione Linux →