2012-04-07 18 views
20

Ora ho tutto configurato e funzionante per MQTT. Sto usando il wmqtt.jar IBM e il broker mosquitto ..MQTT Security - come prevenire gli utenti che si abbonano agli argomenti?

mio Java Servlet crea un MQTTConnection al broker e pubblica sotto il tema "AndroidDeviceID/myAppName" ..

Il cliente sottoscrive Android alla stessa argomento ...

Mi sembra che se qualcuno conoscesse il nome del dispositivo del mio utente, potrebbe creare una semplice app Android e iscriversi a tale argomento sul mio broker MQTT. Poi si ottengono tutte le notifiche (in questo caso i messaggi di instant messaging) da miei utenti ..

Come è correttamente evitato?

+1

Questo collegamento può essere utile per MQTT e sicurezza concetti: http: //www.hivemq.com/mqtt-security-fundamentals/ –

risposta

13

mosquitto offre sicurezza attraverso username e password di autenticazione, nonché limitare l'accesso ad argomenti con gli elenchi di controllo di accesso. Nella pagina man di mosquitto.conf sono disponibili dettagli: http://mosquitto.org/man/mosquitto-conf-5.html

+2

grandi grazie, mi hanno appena iniziato a migrare verso l'ultima versione di Java MQTT - Eclipse Paho - http://git.eclipse.org/c/p aho/org.eclipse.paho.mqtt.java.git/sembra che questo supporti username/password per la connessione. Un problema che ho ancora è l'encrpy .. Tutti i miei altri dati vengono inviati su ssl ... I messaggi MQTT saranno le anteprime dei messaggi di messaggistica istantanea, quindi lo considero confidenziale. Qualche idea su come evitare di spiare il traffico? –

+0

Beh, immagino di poter creare il mio semplice metodo di offuscamento sul testo che va avanti e indietro, hmm .. Non proprio quello che sto ottenendo con la crittografia SSL e l'autenticazione dei certificati. Ma forse senza andare al broker MMQT commerciale di IBM è il meglio che posso fare? –

+0

Mosquitto riceverà il supporto SSL in futuro. Nel frattempo potresti fare una semplice crittografia dei messaggi ... Non è la risposta migliore che realizzo. – ralight

3

In generale, MQTT mantiene la sicurezza molto "leggera" in quanto originariamente progettata per l'utilizzo con reti di sensori chiuse. Spetta all'implementazione del broker fornire ad es. SSL e decidere come gestire il back-end nome utente/password.

crittografia dei dati del messaggio è improbabile che venga mai fornito dal protocollo stesso ed è qualcosa che è in genere fatto a livello di applicazione, se questo è fondamentale.

5

ACL è quello che limita i clienti la sottoscrizione di argomenti, io sto usando un autor-plugin per farlo, ecco il link mosquitto auth plugin

+2

Hai usato il plugin auth con Redis? Sono alle prese con i valori per: auth_opt_redis_userquery ?? E auth_opt_redis_aclquery ?? – TheAshwaniK

+2

sto usando il plugin auth con mysql. esaminare la [implementazione] (https://github.com/jpmens/mosquitto-auth-plug/blob/master/be-redis.c) potrebbe aiutarti. – achuth

2

Se avete bisogno di un modo più personalizzato di gestire il controllo degli accessi e il permesso di argomenti, provare utilizzando il broker MQTT HiveMQ. Come spiegato nella documentazione, puoi implementare il tuo comportamento con un plugin. Questo approccio consente di decidere completamente come viene gestita l'autenticazione e l'autorizzazione dei clienti, pubblica e sottoscrive [1]. Se sei interessato, il modo migliore per iniziare con il tuo plugin è descritto qui [2].

Tra l'altro, è anche molto facile da configurare TLS per HiveMQ [3].

Christian (HiveMQ Team)

[1] http://www.hivemq.com/docs/plugins/1.5.0/#auth-permission-chapter

[2] http://www.hivemq.com/documentations/getting-started-plugins/

[3] http://www.hivemq.com/docs/hivemq/1.5.0/#hivemqdocs_ssl_tls

Problemi correlati