Quels tests de sécurité simples puis-je effectuer sur mon réseau MQTT?

13

Je suis sur le point de mettre en place un réseau MQTT à la maison. Je veux développer des connaissances par des exercices pratiques. Ce serait un petit réseau avec le courtier hébergé sur mon ordinateur portable (Windows 7) et un client alimenté par Raspberry Pi. Je pense aussi à créer un client sur mon téléphone (Android).

Mon objectif est d'avoir un réseau simple sur lequel je peux expérimenter et je veux effectuer des tests de sécurité, en expérimentant d'abord.

J'ai trouvé une suite de tests de serveur MQTT conçue pour agir comme un client MQTT malveillant. C'est assez prometteur pour commencer.

Caractéristiques générales de l'outil de test

  • Test négatif de boîte noire entièrement automatisé
  • Cas de test prêts à l'emploi
  • Écrit en Java (tm)
  • GUI, ligne de commande, modes d'interface à distance
  • Capacité d'instrumentation (bilan de santé)
  • Support et maintenance
  • Documentation utilisateur complète
  • Rapports et analyse des résultats

Mais je suis également intéressé par quelques pratiques plus simples que je peux utiliser pour vérifier les fonctionnalités de sécurité MQTT. Quels sont les moyens les plus simples pour un débutant d'effectuer des vérifications de sécurité de base sur un réseau MQTT?

Bence Kaulics
la source

Réponses:

12

Quelques idées - je n'ai pas couvert toutes les combinaisons de avec / sans nom d'utilisateur / TLS, j'espère que vous pourrez voir où ils manquent.

Un client peut-il se connecter de manière anonyme, sans TLS?

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

Un client peut-il se connecter s'il fournit un nom d'utilisateur mais pas de mot de passe, pas de TLS?

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

Un client peut-il se connecter s'il fournit un nom d'utilisateur et un mot de passe (correct ou non), pas de TLS?

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

Un client peut-il s'abonner au $SYSsujet et voir des informations sur le courtier?

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

Un client peut-il se connecter à l'aide de TLS?

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

Un client peut-il s'abonner à tous les sujets? Que voit-il?

mosquitto_sub -t '#' -v

Répétez également tout ce qui précède lors de la publication.

ralight
la source
5

Peut-être en énonçant l'évidence, mais je pense qu'il est important de souligner qu'un débutant ne peut pas s'attendre à construire un réseau sécurisé. Cependant, rien de mal à apprendre.

Il semble que la sécurité principale de MQTT soit implémentée au niveau de la couche transport, ce qui devrait être votre objectif pour une sécurité réelle.

Je serais surpris si une suite de tests automatisée serait en mesure de reproduire la capacité d'un expert à trouver des trous dans l'implémentation de votre protocole.

Sean Houlihane
la source
4
Je ne m'attends pas à un réseau complètement sécurisé. Je veux seulement exécuter des vérifications de santé mentale, donc des tests très basiques pour voir que j'ai quelque chose pour commencer.
Bence Kaulics