网络窃听
明文 MQTT 可能将凭据、主题名称和负载暴露给任何能观察到网络路径的人。
MQTT 安全指南
生产级 MQTT 部署需要分层控制:TLS、客户端认证、明确的 ACL 授权、受保护的密钥、网络边界,以及出现问题时可供追查的证据。
该协议设计上是轻量级的。安全性来自于其周围的部署选择。
要求 TLS 1.2 或更高版本,验证 Broker 主机名和证书链,并从生产网络中移除明文监听器访问。
签发独立的凭据,这样即使一个设备被攻陷,也可以在不轮换整个设备群的情况下撤销其权限。
分别评估发布和订阅,将过滤器绑定到设备角色,并拒绝未明确需要的访问。
最强的方案是设备在其整个生命周期内都能安全存储、轮换、验证和恢复的方案。
| 认证方法 | 最佳适用 | 强度 | 操作要求 |
|---|---|---|---|
| 唯一的用户名和密码 | 受限设备和简单设备群 | 配合严格的 TLS 校验与高强度独立密钥 | 安全存储、速率限制、轮换和吊销 |
| 客户端证书 (mTLS) | 受管硬件与高可信设备身份 | 在 TLS 握手阶段提供强加密身份 | PKI 签发、私钥保护、续期与吊销 |
| 短期令牌 | 具有身份提供者的网关和应用 | 正确验证时,限定范围和有时限 | 可信令牌签发、时钟处理、刷新与受众校验 |
将设备契约表达为狭窄的发布和订阅过滤器,然后在推广前测试允许和拒绝的主题。
# Device sensor-042 may publish its own telemetry
topic write factory/shanghai/line-1/sensor-042/telemetry
topic write factory/shanghai/line-1/sensor-042/state
# It may receive only its own commands
topic read factory/shanghai/line-1/sensor-042/command
# Do not grant broad read/write access
topic deny readwrite #不。MQTT 定义消息行为,而 TLS 保护传输层。在 1883 端口上的明文连接可能会将凭据、主题和负载暴露给网络。
TLS 保护传输中的数据并认证 Broker,但它不决定有效客户端可以使用哪些主题。请将 TLS 与唯一的身份、主题授权、安全的凭据存储和监控结合使用。
是的,当每个设备都接收到唯一的强密钥时,连接会验证 TLS,密钥会安全存储,失败尝试会被限制,并且轮换和撤销在运维上是可行的。
将发布和订阅权限分开,并只授予设备角色所需的狭窄主题过滤器。避免为现场设备使用广泛的 # 访问,并针对预期和拒绝的主题测试每项策略。
先把安全模型应用到真实客户端,再了解 MQTT 如何与其他实时技术协作。