MQTT Security – ¿Cómo evitar que los usuarios abusivos se suscriban a los temas?

Ahora tengo todo preparado y trabajando para MQTT. Estoy utilizando el IBM wmqtt.jar y el corredor Mosquitto ..

Mi Java Servlet crea una MQTTConnection para el intermediario y publica bajo el tema "AndroidDeviceID / myAppName".

El cliente de Android se suscribe a ese mismo tema …

Me parece que si alguien sabía el nombre del dispositivo de mi usuario, que podría crear una aplicación sencilla para Android y suscribirse a ese tema en mi agente de MQTT. Luego reciben todas las notificaciones (en este caso mensajes de mensajería instantánea) de mis usuarios ..

¿Cómo se evita esto adecuadamente?

Mosquitto proporciona seguridad mediante la autenticación de nombre de usuario y contraseña, así como la limitación del acceso a temas con listas de control de acceso. Hay detalles en la página de manual mosquitto.conf: http://mosquitto.org/man/mosquitto-conf-5.html

ACL es lo que restringe los clientes que suscriben a los temas, estoy utilizando un auth-plugin para hacerlo, aquí está el enlace plugin de autenticación mosquitto

En general, MQTT mantiene la seguridad muy "ligera", ya que fue originalmente diseñado para su uso con redes de sensores cerrados. Es hasta la implementación de intermediario para proporcionar por ejemplo SSL y decidir cómo manejar el backend de nombre de usuario / contraseña.

Es poco probable que el protocolo en sí proporcione cifrado de datos de mensajes y es algo que normalmente se hace en la capa de aplicación si esto es crítico.

Si necesita una forma más personalizada de gestionar el control de acceso y el permiso de los temas, pruebe a utilizar el agente MQTT de HiveMQ. Como se explica en la documentación, puedes implementar tu propio comportamiento con un complemento. Este enfoque le permite decidir completamente cómo se maneja la autenticación y autorización de clientes, publica y suscribe [1]. Si usted está interesado la mejor manera de comenzar con su propio plugin se describe aquí [2].

Por cierto, también es muy fácil de configurar TLS para HiveMQ [3].

Christian (equipo de HiveMQ)

[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

  • Android: el cliente Paho Mqtt no recibe mensajes una vez que cambia la conectividad de red (los datos móviles se deshabilitan y se vuelven a habilitar)
  • Paho MQTT Actividad de activación del servicio de Android
  • Mqtt mosquitto linux límite de conexión
  • GCM XMPP CCS vs MQTT
  • Cómo almacenar datos mqtt cuando está fuera de línea y enviarlos cuando esté en línea
  • Mqtt aplicación de ejemplo no es mantener la conexión en Android 5.1.1
  • MQTT vs. XMPP ¿Qué debo elegir?
  • ¿Cómo implementar Moquette broker en Android?
  • Error de socket para el identificador de cliente en RSMB MQTT broker cuando se usa android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.