Iot_red
adv

L’MQTT è un protocollo standard del mondo IoT, per sensori e piccoli dispositivi. Esso si basa su protocolli sicuri ma la sicurezza non è mai abbastanza. Vediamo alcune pratiche per rafforzarla

Abbiamo visto che MQTT si avvale di protocolli come TLS, certificati digitali e VPN per rendere sicura la comunicazione. Un sistema, però, si compone anche di altro ed è necessario proteggere il tutto. Nell’analisi seguente schematizzeremo 3 livelli su cui lavorare.

Infrastruttura

Essa è, tipicamente, un network, di cui è importante conoscere la topologia. Il primo sistema di prevenzione è, di norma, un firewall che può essere installato sul broker (la macchina con più risorse). Le regole variano di caso in caso, a seconda dell’uso necessario, ma in generale si potrebbe considerare:

  • di bloccare i pacchetti UDP: MQTT usa solo TCP

  • di limitare i pacchetti ICMP: comandi come ping, traceroute, etc. potrebbero essere superflui per l’uso cui il network è destinato ed utili per un’eventuale intruso.

  • di aprire la “porta” 8883: assegnata dallo IANA (authority che assegna gli IP pubblici e le porte standard) per i pacchetti TLS di MQTT

  • di aprire la “porta” 1883: assegnata dallo IANA per i pacchetti TCP su MQTT

  • se si conoscono tutti i dispositivi, di chiudere il traffico ad IP sconosciuti.

L’aggiunta di una DMZ (zona demilitarizzata) aumenta la sicurezza perché prevede un sistema a 2 firewall: dietro il primo c’è un broker che non accede a database o servizi sensibili dell’applicazione, protetti da un secondo firewall.

Per grosse infrastrutture è auspicabile l’uso di più broker in load balancing (smistamento del carico di lavoro per non saturare i nodi). Questo espediente non introduce molta sicurezza in più ma consente al sistema di strozzare il traffico (throttling), se molto elevato, per dar tempo al broker di smaltire le richieste. La mole insolita potrebbe essere dovuta a client MQTT malevoli che cercano di saturare la banda (attacco DoS).

Sistema operativo

L’applicazione che funge da broker gira su un sistema operativo, naturalmente soggetto a bug, per cui vanno sempre installati gli aggiornamenti. Buona pratica è abilitare la connessione SSH solo da rete locale e consentirne l’autenticazione solo via “chiave” invece che via password, laddove possibile. Esistono tool che consentono di identificare automaticamente gli attacchi di brute force ed aggiungerli al firewall per escluderli. L’uso di questi software è consigliabile soprattutto in caso non si possa disabilitare SSH via password e tale connessione sia accessibile da internet.

Broker

Come visto in precedenza, l’opportuna configurazione di un broker, garantisce un buon livello di sicurezza. In aggiunta all’autenticazione ed autorizzazione via certificato, all’uso di TLS, del payload encryption ed al throttling, si raccomanda di bilanciare la dimensione del messaggio. MQTT supporta un messaggio di grandezza massima pari a 256MB. La media degli scambi è, tuttavia, di pochi kilobyte. Se si ha familiarità con lo scenario implementato ed i messaggi scambiati, potrebbe aver senso ridurre la dimensione massima accettata. In tal modo, oltre a risparmiare banda, si limiterebbero le azioni di client MQTT malevoli e gli si impedirebbe di mandare messaggi grandi, consumando risorse.