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

物联网 安全 MQTT 蚊子 测试
2021-06-05 23:30:26

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

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

我发现了一个MQTT 服务器测试套件,它旨在充当恶意 MQTT 客户端。一开始就很有希望。

测试工具一般特性

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

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

2个回答

一些想法 - 我没有涵盖有/没有用户名/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

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

也许陈述显而易见,但我认为重要的是要强调初学者不能指望建立一个安全的网络。不过学习也没什么不好。

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

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