2012-04-07 9 views
20

Mam wszystko gotowe do pracy i pracuję teraz dla MQTT. Używam wmqtt.jar IBM i brokera Mosquitto ..Bezpieczeństwo MQTT - jak zapobiegać subskrybentom tematów przez osoby nadużywające?

My Java Servlet tworzy MQTTConnection do brokera i publikuje w ramach tematu „AndroidDeviceID/myAppName” ..

Klient Android subskrybuje ten sam temat ...

Wydaje mi się, że gdyby ktoś znał nazwę mojego urządzenia, mógłby stworzyć prostą aplikację na Androida i zasubskrybować ten temat w moim brokerze MQTT. Następnie otrzymają wszystkie powiadomienia (w tym przypadku wiadomości błyskawiczne) od moich użytkowników.

Jak można tego uniknąć?

+1

To połączenie może być korzystne dla MQTT i bezpieczeństwa koncepcji http: //www.hivemq.com/mqtt-security-fundamentals/ –

Odpowiedz

13

Mosquitto zapewnia bezpieczeństwo poprzez uwierzytelnianie nazwy użytkownika i hasła, a także ogranicza dostęp do tematów dzięki listom kontroli dostępu. Na stronie komendy mosquitto.conf znajdują się szczegóły: http://mosquitto.org/man/mosquitto-conf-5.html

+2

Wielkie dzięki, właśnie zacząłem migrację do najnowszej wersji Java MQTT - Eclipse Paho - http://git.eclipse.org/c/p aho/org.eclipse.paho.mqtt.java.git/wygląda na to, że będzie obsługiwać nazwę użytkownika/hasła podczas połączenia. Jednym problemem, który wciąż mam, jest encrpytion. Wszystkie moje inne dane są wysyłane przez ssl ... Wiadomości MQTT będą podglądem wiadomości błyskawicznych, więc uważam to za poufne. Wszelkie przemyślenia na temat tego, jak zapobiegać szpiegowaniu ruchu sieciowego? –

+0

Cóż, myślę, że mogę zrobić własną prostą metodę zaciemniania na tekście, który idzie w tę iz powrotem, hmm ... Nie do końca to, co otrzymuję z szyfrowaniem SSL i uwierzytelnianiem certyfikatu. Ale może bez pośrednictwa komercyjnego brokera MMQT, który jest najlepszy, jaki mogę zrobić? –

+0

Mosquitto otrzyma wsparcie SSL w przyszłości. W międzyczasie możesz zrobić proste szyfrowanie wiadomości ... Nie najlepsza odpowiedź, którą sobie uświadamiam. – ralight

3

Ogólnie rzecz biorąc, MQTT utrzymuje bezpieczeństwo w bardzo "lekkim" stanie, jakie pierwotnie zaprojektowano do użytku z zamkniętymi sieciami czujników. Wdrożenie brokera polega na dostarczeniu np. SSL i zdecyduj, jak obsługiwać backend użytkownika/hasła.

Szyfrowanie danych wiadomości prawdopodobnie nigdy nie zostanie dostarczone przez sam protokół i jest zwykle wykonywane w warstwie aplikacji, jeśli jest to krytyczne.

5

ACL, co ogranicza klientom subskrypcji tematów używam auth-plugin to zrobić, tu jest link mosquitto auth plugin

+2

Czy użyłeś wtyczki auth z Redis? Walczę z wartościami: auth_opt_redis_userquery ?? I auth_opt_redis_aclquery ?? – TheAshwaniK

+2

Używam wtyczki auth z mysql. zajrzyj do [wykonanie] (https://github.com/jpmens/mosquitto-auth-plug/blob/master/be-redis.c) może ci pomóc. – achuth

2

Jeśli potrzebujesz więcej niestandardowy sposób obsługi kontroli dostępu i uprawnienia tematów, spróbuj przy użyciu brokera HiveMQ MQTT. Jak wyjaśniono w dokumentacji, możesz zaimplementować własne zachowanie za pomocą wtyczki. Takie podejście pozwala w pełni zdecydować, w jaki sposób obsługiwane jest uwierzytelnianie i autoryzacja klientów, publikowanie i subskrybowanie [1]. Jeśli jesteś zainteresowany, najlepiej jest zacząć od własnej wtyczki [2].

Nawiasem mówiąc, bardzo łatwo jest skonfigurować TLS dla HiveMQ [3].

Christian (HiveMQ Zespół)

[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

Powiązane problemy