我可以在MQTT网络上执行哪些简单的安全测试?


13

我将在家里建立一个MQTT网络。我想通过实践练习来积累一些知识。这将是一个小型网络,其中的代理托管在我的笔记本电脑(Windows 7)和一些Raspberry Pi支持的客户端上。我也在考虑在我的手机(Android)上建立客户端。

我的目标是拥有一个可以在其上进行实验的简单网络,并且我想先进行一些安全性测试。

我发现了一个旨在充当恶意MQTT客户端的MQTT服务器测试套件。首先是很有希望的。

测试工具的一般功能

  • 全自动黑盒阴性测试
  • 现成的测试用例
  • 用Java(tm)编写
  • GUI,命令行,远程接口模式
  • 仪表(健康检查)功能
  • 支持与维护
  • 全面的用户文档
  • 结果报告与分析

但是我也对一些我可以用来验证MQTT安全性功能的简单实践感兴趣。初学者在MQTT网络上执行一些基本安全验证的最简单方法是什么?

Answers:


12

一些想法-我没有涵盖使用/不使用用户名/ TLS的所有组合,希望您能看到它们的缺失。

客户端可以匿名连接,没有TLS吗?

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

如果客户端提供用户名但不提供密码,没有TLS,可以连接吗?

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

如果客户端提供用户名和密码(正确与否),并且没有TLS,客户端可以连接吗?

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

客户可以订阅该$SYS主题并查看有关代理的信息吗?

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

客户端可以使用TLS连接吗?

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

客户可以订阅所有主题吗?看到了什么?

mosquitto_sub -t '#' -v

发布时也请重复上述所有操作。


5

也许说明了显而易见的内容,但我认为必须强调一点,即初学者不能指望建立安全的网络。学习没错。

看起来MQTT中的主要安全性是在传输层实现的,因此应该成为真正安全性的重点。

如果有任何自动化测试套件能够复制专家在您的协议实现中发现漏洞的能力,我会感到惊讶。


4
我不希望有一个完全安全的网络。我只想运行健全性检查,因此非常基本的测试可以确保我有一些起点。
Bence Kaulics,2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.