¿Qué pruebas de seguridad simples puedo realizar en mi red MQTT?

13

Estoy a punto de configurar una red MQTT en casa. Quiero acumular algunos conocimientos mediante ejercicios prácticos. Sería una red pequeña con el corredor alojado en mi computadora portátil (Windows 7) y algún cliente con Raspberry Pi. También estoy pensando en hacer un cliente en mi teléfono (Android).

Mi objetivo es tener una red simple en la que pueda experimentar y quiero realizar algunas pruebas de seguridad, experimentando primero.

He encontrado un MQTT Server Test Suite que está diseñado para actuar como un cliente MQTT malicioso. Es bastante prometedor para empezar.

Herramienta de prueba características generales

  • Pruebas negativas de caja negra totalmente automatizadas
  • Casos de prueba confeccionados
  • Escrito en Java (tm)
  • GUI, línea de comando, modos de interfaz remota
  • Capacidad de instrumentación (comprobación de estado)
  • Soporte y mantenimiento
  • Documentación completa del usuario
  • Informe y análisis de resultados.

Pero también estoy interesado en algunas prácticas más simples que puedo usar para verificar las características de seguridad de MQTT. ¿Cuáles son las formas más simples para que un principiante realice algunas verificaciones de seguridad básicas en una red MQTT?

Bence Kaulics
fuente

Respuestas:

12

Algunas ideas: no he cubierto todas las combinaciones de con / sin nombre de usuario / TLS, espero que pueda ver dónde faltan.

¿Puede un cliente conectarse de forma anónima, sin TLS?

mosquitto_sub -t test/topic -h <broker address>

¿Se puede conectar un cliente si proporciona un nombre de usuario pero sin contraseña, sin TLS?

mosquitto_sub -t test/topic -u <username> -h <broker address>

¿Se puede conectar un cliente si proporciona un nombre de usuario y una contraseña (correcta o no), sin TLS?

mosquitto_sub -t test/topic -u <username> -P <password> -h <broker address>

¿Puede un cliente suscribirse al $SYStema y ver información sobre el corredor?

mosquitto_sub -t '$SYS/#' -v -h <broker address>

¿Puede un cliente conectarse usando TLS?

mosquitto_sub -t test/topic -h <broker address> -p 8883 --capath /etc/ssl/certs

¿Puede un cliente suscribirse a todos los temas? Que es lo que ve

mosquitto_sub -t '#' -v

Repita todo lo anterior al publicar también.

ralight
fuente
5

Tal vez afirme lo obvio, pero creo que es importante enfatizar que un principiante no puede esperar construir una red segura. Sin embargo, no hay nada de malo en aprender.

Parece que la seguridad principal en MQTT se implementa en la capa de transporte, por lo que ese debería ser su enfoque para la seguridad real.

Me sorprendería que cualquier conjunto de pruebas automatizadas pudiera replicar la capacidad de un experto para encontrar agujeros en la implementación de su protocolo.

Sean Houlihane
fuente
44
No espero una red completamente segura. Solo quiero ejecutar comprobaciones de cordura, así que pruebas muy básicas para ver que tengo algo para comenzar.
Bence Kaulics