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".
- De nuevo: Android MQTT no puede crear cliente
- MQTT Eclipse Paho cliente en Android, desconectar se bloquea y nunca termina
- MQTT se puede utilizar para implementar comportamiento de solicitud / respuesta
- Android y (millones de) notificaciones push
- ¿Dónde puedo encontrar los archivos JAR de Elcipse Paho Android Service / Client listos para usar?
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?
- Biblioteca cliente C # para suscribir / publicar MQTT (Realmente Small Message Broker)
- Protocolo de respuesta de solicitud de IoT
- ¿Cómo enviar ping usando el cliente Eclipse Paho MQTT?
- ¿Para qué se necesita el ID de cliente?
- Protocolo de comunicación fiable y ligero para móviles
- Android MQTT Client no puede volver a conectarse a ActiveMQ
- Pasos básicos para usar MQTT en android
- AsyncTask e IllegalArgumentException
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