Mosquitto (MQTT) su Raspberry Pi – configurazione del broker con autenticazione
Uno degli aspetti spesso trascurati nell’IoT è la sicurezza delle comunicazioni. La prova è che molti degli ultimi attacchi DDOS (Distributed Denial of Service) sono stati portati utilizzando smart devices connessi ad Internet.
In un precedente articolo abbiamo visto come configurare mosquitto per ricevere messaggi pubblicati dai client e per inoltrare questi a tutti i sottoscrittori. Quest’oggi andreamo a vedere come configurare la sicurezza applicativa del nostro broker MQTT.
In questo articolo tratterò la modalità standard che mosquitto offre.
Su Internet sono disponibili molti plugins per estendere le sue funzionalità e implementare meccanismi avanzati di sicurezza, come la gestione delle utenze in diversi backend oppure l’autenticazione via json web tokens.
Il primo passo per rendere sicuro il nostro broker è quello di implementare l’autenticazione per i client che si connettono, in modo che soltanto i client autorizzati possano inviare/ricevere messaggi.
Prima di iniziare a modificare le impostazioni di MQTT fermiamo il servizio con il seguente comando:
sudo systemctl stop mosquitto
Ora modifichiamo il file mosquitto.conf
attraverso l’editor di testo nano.
sudo nano /etc/mosquitto/mosquitto.conf
A questo punto, disabilitiamo l’accesso anonimo mettendo il relativo parametro a false e aggiungiamo il riferimento al file contenete le password di accesso (se non sono presenti, aggiungiamo le seguenti righe).
allow_anonymous false
password_file /etc/mosquitto/passwords
A questo punto chiudiamo il file e salviamo (control/command+x, yes, invio).
Arrivati a questo punto sarà necessario creare un file che contenga la password relativa all’utenza d’accesso al servizio.
Come nome utente utilizzeremo “mqtt_user“, ovviamente scegliete un nome utente che faccia più al caso vostro.
Eseguire dunque i seguenti comandi:
cd /etc/mosquitto
sudo mosquitto_passwd -c passwords mqtt_user
Una volta premuto il tasto INVIO ci verrà chiesto di inserire la password che verrà attribuita all’utente “mqtt_user“ e premere invio.
Infine, se non dobbiamo creare ulteriori utenti possiamo far ripartire il servizio mosquitto con il seguente comando:
sudo systemctl start mosquitto
Buon divertimento!