裸连 MQTT 的风险
很多人上手 MQTT 时,Broker 一开、匿名可连、明文端口对外,跑通就上线了。这在演示项目里没问题,但生产环境里等于把门敞开:任何人都能连上来、订阅别人的主题、伪造数据。MQTT 安全就是把这扇门按设备、按主题、按权限重新关上。
生产环境三条底线:禁匿名、必加密、按主题限权。
三类典型漏洞
- 匿名接入随便谁都能连。
- 明文传输报文可被窃听篡改。
- 越权订阅一台设备能读所有主题。
认证:一机一密
先关掉匿名登录。每台设备用一个独立的 ClientId 和用户名密码(或证书)接入。Broker 端对接设备台账:只有登记过的设备才放行。这样即使某台设备密钥泄露,影响面也只在它自己,不是整网。
TLS 加密传输
认证解决「你是谁」,TLS 解决「别人偷看不到」。把 1883 明文端口关掉,统一走 8883 的 TLS。设备端内置 Broker 根证书,握手时校验服务端身份,防止连到伪造的 Broker。
// 连接伪代码(paho)
connect = {
host: "mqtt.example.com", port: 8883,
tls: true,
username: deviceId, password: secret
};
ACL 主题权限
认证之后还要限「能读什么、能写什么」。用主题做命名空间,比如 device/{设备ID}/up 只能由这台设备发布,device/{设备ID}/down 只能由它订阅。ACL 规则按 ClientId 匹配,一台设备绝不能订别人的上行主题。
设备生命周期管理
设备从注册、激活、在线到吊销,都要在台账里有状态。新设备首次接入时做「激活」动作绑定归属用户;设备换机、丢失时,平台要能远程吊销它的密钥,让它立刻连不上。
管理四步
- 注册产线烧入身份并入台账。
- 激活首次接入绑定用户。
- 在线心跳保活与监控。
- 吊销异常设备立即拉黑。
异常设备处置
当发现某台设备报文频率异常、主题越权、或同一身份多处同时在线,平台要能自动踢下线并告警。MQTT Broker 支持按 ClientId 强制断开,配合规则引擎就能实现自动处置。
小结与延伸阅读
MQTT 安全的四件套:一机一密认证、TLS 加密、ACL 限权、全生命周期管理。把它们接上 Broker,设备网络就从「演示级」升级到「生产级」。
- MQTT 基础读《MQTT 协议详解与实战》。
- 设备身份读《物联网安全与设备身份认证实战》。
- 边缘网关读《物联网网关架构与边缘智能实战》。