[S.Li.P] Server IOT, come renderlo sicuro

Lucio Crusca lucio a sulweb.org
Mer 5 Maggio 2021 11:07:51 CEST


Il 04/05/21 16:59, carlo b via SLiP ha scritto:
> Noi del gruppo arduino utilizziamo telegram per i nostri progetti verso 
> internet. 

Qui ho bisogno di qualche dettaglio in più per capire. Come si realizza 
la comunicazione remota fra l'hardware e l'utente? Io mi immagino, ma 
magari mi sbaglio, che l'hardware di turno abbia un software in 
esecuzione che parla periodicamente (per esempio ogni tot secondi) ad un 
bot di Telegram, giusto?

Immagino poi che questo bot di Telegram sia l'interfaccia con cui 
l'utente visualizza lo stato dei sensori ed invia comandi attraverso 
pulsanti o caselle di testo, giusto?

Ed immagino infine che tale bot di Telegram richieda un'autenticazione 
tipo utente/password o sia in qualche altro modo strettamente legato 
all'utente, in modo che solo il proprietario dell'hardware possa vedere 
ed interagire da remoto, giusto?

Se fin qui è tutto giusto e se la strada di Telegram (versione 
ufficiale) è quella che continuerete a seguire, temo che ci sia poco che 
si possa fare per migliorare la sicurezza, in quanto il server ufficiale 
di Telegram non è software libero e non è possibile installarsi un 
proprio server ufficiale di Telegram (in gergo, Telegram non è un 
sistema federato).

Detto questo, a seconda dei casi, potrebbe non essere neppure così 
necessario aumentare la sicurezza della soluzione.

> Lettura sensori e controlli vari.
> Tutto questo funziona bene ma siamo limitati all'uso di pulsanti per i 
> comandi e per immissione dati necessita
> utilizzare la riga immissione testo, poco pratica.

Che tipo di interfaccia ti piacerebbe avere in alternativa 
all'immissione del testo per inviare dati?

> Pensavamo di 
> acquistare uno spazio in rete ma non abbiamo
> abbastanza conoscenze per quanto riguarda la sicurezza.

Qualsiasi VPS è sufficientemente sicuro per questo tipo di utlizzo, 
nella misura in cui non ci si metta a controllare da remoto 
l'attivazione dell'antifurto di casa o cose del genere.

La parte eventualmente poco sicura non è tanto il server che si va ad 
acquistare, quanto le applicazioni che poi ci si installano.



Il 02/05/21 19:14, giorgio boiero via SLiP ha scritto:
 > Per il momento abbiamo attivato alcuni server nelle nostre reti locali
 > Ci piacerebbe approfondire con chi è più esperto di noi di cybersecurity
 > (Davide, Lucio, Alessandro, Luca) se e come fosse possibile poter
 > accedere in sicurezza a questi server e servizi dall'esterno della
 > propria rete domestica
 > Come configurare il port forwarding dei nostri router, installare un VPN
 > ed utilizzarla (tipo lo script di Lucio per Wireguard)

Sì, in questo caso (cioè senza usare Telegram ufficiale) una VPN con 
Wireguard è sicuramente una soluzione che offre tutta la sicurezza di 
cui avete bisogno, almeno dal punto di vista della connettività.

Certo che se poi si installa Wireguard sul cellulare, ma si lascia il 
cellulare sbloccato ed incustodito sul tavolino del bar, non c'è VPN che 
tenga. Come sempre il fattore umano è l'anello più debole della catena.



 > etc.. o se
 > sarebbe meglio far girare il server e i containers in un VPS remota,

Dal punto di vista della sicurezza assolutamente no: un VPS, una volta 
che ci installi istanze docker con tutta quella roba che hai citato, è 
sicuro quanto una prostituta a spasso nel Bronx.

La soluzione più sicura è avere un server in rete locale (cioè a casa) 
ed accedervi via VPN, senza aprire alcuna porta sul router, tranne 
quella per far funzionare la VPN (di default la 12345/udp nello script 
che ho fatto). A questo va aggiunto un servizio di DNS dinamico, in modo 
che il riavvio del router e relativo cambio di indirizzo IP pubblico non 
creino problemi. Essendo la sicurezza l'argomento di questo thread, 
direi che anche il router sarebbe da tenere aggiornato e suggerisco di 
avere un router su cui si possa installare un firmware libero, in modo 
da essere più tranquillo della disponibilità di tempestivi aggiornamenti 
di sicurezza (io per esempio uso un Asus RT-AC51U).


Maggiori informazioni sulla lista SLiP