MQTT(消息队列遥测传输)体系结构的一个关键方面涉及到使用中介服务器在数据发生变化时从连接到的设备收集数据。然后,它将这些数据点发布到其他系统或应用程序,这些系统或应用程序订阅服务器收集的特定数据提要。因为订阅系统或应用程序没有直接连接到它们所监视的设备,所以MQTT消息传递结构本身就提供了某些级别的安全性。
然而,与任何安全措施一样,这种设备和订阅设备的系统的解耦并不能解决所有潜在的网络安全问题。除了服务器提供的直接断开连接之外,MQTT基础设施还支持几种使用广泛采用的互联网安全方法的选项,例如在网上银行中使用的那些方法,以及NIST(国家标准与技术研究所)推荐的方法。
MQTT基础设施
要了解MQTT的各种安全措施,首先需要了解MQTT的工业物联网(IIoT)基础设施的构建块:
- MQTT客户边缘-这些是工厂或现场的远程分布式设备和/或网关,连接到您的流程,以收集数据。
- MQTT企业客户—这可以是任何需要订阅MQTT服务器以在IIoT基础设施中接收或发送信息的集中式或远程应用程序。
- MQTT服务器(年代)—这些是边缘和企业客户端应用程序连接以发送和接收数据的集中式服务器。
Arlen Nipper,公司总裁兼首席技术官卷云链接和MQTT的共同创建者,解释了MQTT边缘和企业客户端都使用相同的安全模型。每一个都在TCP/IP网络上利用传输层安全(TLS)发起一个出站连接,并使用来自一个安全证书的凭证证书颁发机构(CA),”他说。
TLS使用一组公共/私有安全证书,其中MQTT客户端必须建立到由CA认证的MQTT服务器的连接。这与今天在银行系统中使用的安全级别相同,被NIST认为是最佳实践。
Nipper解释说,MQTT拓扑的网络体系结构要求MQTT边缘客户机禁用网络上的所有入站TCP端口。“这可提供高度的保安措施,防止互联网/内部网的潜在攻击者仅与边缘设备建立连接。”
虽然该配置提供了可靠的安全性,但Nipper指出,它可能会对访问边缘客户端进行远程调试和配置带来挑战。“这些挑战可以通过反向VPN连接来克服,”他说。
阅读这篇关于什么发布/订阅工业网络通信范式手段. |
服务器安全
边缘设备使用的TLS配置也用于MQTT服务器。“MQTT服务器以MQTT级用户名、密码和访问控制列表(ACL)的形式使用了进一步的安全措施,”Nipper说。ACL限制哪些设备将被允许连接到MQTT服务器。ACL还控制给定的用户名/密码对可以发布和订阅哪些主题,从而提供进一步的安全性。”
Nipper补充说,MQTT服务器应该设置在非军事区并且防火墙只允许两个入站端口进行连接:8883和443。
由于MQTT服务器在企业服务总线中提供消息传递机制,Nipper注意到MQTT服务器“必须如此”3.1.1 OASIS-compliantCirrus Link为此提供了一个MQTT分发器和战车MQTT服务器。该公司还为多个MQTT服务器冗余提供战车MQTT服务器,并为内部或云连接的应用程序提供更多数量的连接客户端。
保护概述
为了重申上述安全建议,Nipper建议在传输和应用级别应用以下安全措施:
- 物理网络/VPN的终极安全;
- 所有连接都使用来自CA的证书凭证TLS;
- 在MQTT边缘客户机上应该禁用所有入站端口;
- 只有两个TCP/IP端口(8883和443)应该在MQTT服务器上打开;
- 在MQTT服务器上使用MQTT客户端用户名/密码;和
- 应该使用acl将MQTT客户机访问限制到它们可以发布或订阅的主题级别。
安全层
Nipper指出,网络安全可以分为三层,每一层都提供不同级别的安全防范网络攻击:
- 物理层提供最高级别的安全,网络与任何外部连接隔离,或完全封装在VPN (virtual private network)中。
- 传输层使用传输层安全性(transport layer security, TLS)和来自证书颁发机构(CA)的安全证书凭证来保护使用公共网络的基础设施,在这些基础设施中,为每个终端设备建立离散的vpn既不实际也不经济。还可以在传输层使用防火墙来关闭远程设备上的所有TCP/IP端口,并且只允许在中心位置操作所需的最小端口。
- 第三层是应用程序安全,在Cirrus Link MQTT Servers中,用户名/密码认证与访问控制列表(ACL)一起应用。
Nipper说:“这些层的组合确保了一个强大的安全的工业物联网网络。”