首页 - 关于我们 - 新闻活动 - 保护MQTT消息的安全

保护MQTT消息的安全

2021-11-12新闻

选自AutomationWorld丨戴维·格林菲尔德丨内容总监丨NOV.9.2021


在MQTT通信中使用消息代理解决了一些工业网络安全问题,但不是全部。该技术的共同发明者提供了如何确保MQTT通信安全的提示。


  • MQTT(消息队列遥测传输)架构的一个关键方面涉及到使用一个中介服务器来收集数据,因为它的变化,从它所连接的设备。然后,它将这些数据点发布给其他系统或应用程序,这些系统或应用程序订阅由服务器收集的那些特定的数据源。因为订阅的系统或应用程序并不直接连接到他们所监控的设备,所以MQTT的信息传递结构本身就提供了一些安全级别。



  • 然而,像任何安全措施一样,这种对设备和订阅它们的系统的解耦并不能解决所有潜在的网络安全角度。除了服务器提供的直接断开连接外,MQTT基础设施还支持几个使用广泛采用的互联网安全方法的选项,如网上银行中使用的和NIST(美国国家标准与技术研究院)推荐的安全方法。




要了解MQTT的各种安全措施,首先有助于了解MQTT的IIoT(工业物联网)基础设施的构建模块。




  • MQTT边缘客户端——这些是工厂或现场的远程分布设备和/或网关,连接到你的过程,以收集数据。  


  • MQTT企业客户端——这可以是任何需要订阅MQTT服务器以接收或发送IIoT基础设施中信息的集中式或远程应用程序。


  • MQTT服务器——这些是集中式服务器,边缘和企业客户端应用程序通过连接来发送和接收数据。



ArlenNipper,CirrusLink公司总裁兼首席技术官。


Cirrus Link公司总裁兼首席技术官、MQTT的共同创造者Arlen Nipper解释说,MQTT边缘和企业客户端都使用相同的安全模型。"他说:"每个人都利用传输层安全(TLS)和来自证书机构(CA)的安全证书凭证,在TCP/IP网络上启动一个出站连接。


TLS使用一套公共/私人安全证书,MQTT客户端必须与MQTT服务器建立连接,而该连接是由CA认证的。这与目前银行系统使用的安全级别相同,被NIST认为是最佳实践。


Nipper解释说,MQTT拓扑结构的网络架构要求MQTT边缘客户端禁用网络上的所有入站TCP端口。"这通过防止互联网/内联网上的潜在攻击者简单地与边缘设备建立连接,提供了高水平的安全性"。


虽然这种配置提供了坚实的安全保障,但Nipper指出,它可能为访问边缘客户端进行远程调试和配置带来挑战。"他说:"这些挑战可以用反向VPN连接来克服。



边缘设备使用的TLS的配置也用于MQTT服务器。"Nipper说:"MQTT服务器以MQTT级别的用户名、密码和访问控制列表(ACL)的形式进一步利用安全措施。"ACL限制哪些设备将被允许连接到MQTT服务器。ACL还控制一个给定的用户名/密码对可以发布和订阅哪些主题,提供进一步的安全性。


Nipper补充说,MQTT服务器应该设置在DMZ和防火墙后面,只允许两个入站的连接端口:8883和443。


由于MQTT服务器在企业服务总线中提供消息传递机制,Nipper指出,MQTT服务器 "必须符合3.1.1 OASIS标准"。Cirrus Link为此提供了一个MQTT分销商和Chariot MQTT服务器。该公司还提供Chariot MQTT服务器,以实现多个MQTT服务器的冗余,并为企业内部或云连接的应用提供更多的连接客户端。




为了重申上面提出的安全建议,Nipper 建议

在传输和应用层面应用以下安全措施。


  • 物理网络/VPN,实现最终的安全。

  • 所有连接都使用CA的证书凭证进行TLS。

  • 在MQTT边缘客户端应禁用所有的入站端口。

  • 在MQTT服务器上应该只开放两个TCP/IP端口(8883和443)。

  • MQTT服务器使用MQTT客户端用户名/密码;以及

  • 应使用ACL来限制MQTT客户端对他们可以发布或订阅的主题级别的访问。



安全层级丨Security Layers


Nipper指出,网络安全可以分为三层--每一层都能提供不同程度的安全,以抵御网络攻击。


  • 物理层提供了最高级别的安全,网络与任何外部连接隔离,或被完全封装在虚拟私人网络(VPN)中。



  • 传输层使用传输层安全(TLS)与来自证书机构(CA)的安全证书凭证,以确保使用公共网络的基础设施的安全,在这种情况下,为每个终端设备设置离散的VPN是不现实的,也不符合成本效益。防火墙也可以在传输层使用,关闭远程设备上的所有TCP/IP端口,只允许在中心位置操作所需的最小端口。



  • 第三层是应用安全,在Cirrus Link MQTT服务器内,通过访问控制列表(ACL)应用用户名/密码验证。



"Nipper说:"这些层的组合确保了一个强大的安全IIoT网络。



END.