保護(hù)MQTT消息的安全
2021-11-12新聞

選自AutomationWorld丨戴維·格林菲爾德丨內(nèi)容總監(jiān)丨NOV.9.2021
在MQTT通信中使用消息代理解決了一些工業(yè)網(wǎng)絡(luò)安全問(wèn)題,但不是全部。該技術(shù)的共同發(fā)明者提供了如何確保MQTT通信安全的提示。

MQTT(消息隊(duì)列遙測(cè)傳輸)架構(gòu)的一個(gè)關(guān)鍵方面涉及到使用一個(gè)中介服務(wù)器來(lái)收集數(shù)據(jù),因?yàn)樗淖兓?,從它所連接的設(shè)備。然后,它將這些數(shù)據(jù)點(diǎn)發(fā)布給其他系統(tǒng)或應(yīng)用程序,這些系統(tǒng)或應(yīng)用程序訂閱由服務(wù)器收集的那些特定的數(shù)據(jù)源。因?yàn)橛嗛喌南到y(tǒng)或應(yīng)用程序并不直接連接到他們所監(jiān)控的設(shè)備,所以MQTT的信息傳遞結(jié)構(gòu)本身就提供了一些安全級(jí)別。
然而,像任何安全措施一樣,這種對(duì)設(shè)備和訂閱它們的系統(tǒng)的解耦并不能解決所有潛在的網(wǎng)絡(luò)安全角度。除了服務(wù)器提供的直接斷開(kāi)連接外,MQTT基礎(chǔ)設(shè)施還支持幾個(gè)使用廣泛采用的互聯(lián)網(wǎng)安全方法的選項(xiàng),如網(wǎng)上銀行中使用的和NIST(美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院)推薦的安全方法。

要了解MQTT的各種安全措施,首先有助于了解MQTT的IIoT(工業(yè)物聯(lián)網(wǎng))基礎(chǔ)設(shè)施的構(gòu)建模塊。
MQTT邊緣客戶(hù)端——這些是工廠或現(xiàn)場(chǎng)的遠(yuǎn)程分布設(shè)備和/或網(wǎng)關(guān),連接到你的過(guò)程,以收集數(shù)據(jù)。
MQTT企業(yè)客戶(hù)端——這可以是任何需要訂閱MQTT服務(wù)器以接收或發(fā)送IIoT基礎(chǔ)設(shè)施中信息的集中式或遠(yuǎn)程應(yīng)用程序。
MQTT服務(wù)器——這些是集中式服務(wù)器,邊緣和企業(yè)客戶(hù)端應(yīng)用程序通過(guò)連接來(lái)發(fā)送和接收數(shù)據(jù)。

ArlenNipper,CirrusLink公司總裁兼首席技術(shù)官。
Cirrus Link公司總裁兼首席技術(shù)官、MQTT的共同創(chuàng)造者Arlen Nipper解釋說(shuō),MQTT邊緣和企業(yè)客戶(hù)端都使用相同的安全模型。"他說(shuō):"每個(gè)人都利用傳輸層安全(TLS)和來(lái)自證書(shū)機(jī)構(gòu)(CA)的安全證書(shū)憑證,在TCP/IP網(wǎng)絡(luò)上啟動(dòng)一個(gè)出站連接。

TLS使用一套公共/私人安全證書(shū),MQTT客戶(hù)端必須與MQTT服務(wù)器建立連接,而該連接是由CA認(rèn)證的。這與目前銀行系統(tǒng)使用的安全級(jí)別相同,被NIST認(rèn)為是最佳實(shí)踐。
Nipper解釋說(shuō),MQTT拓?fù)浣Y(jié)構(gòu)的網(wǎng)絡(luò)架構(gòu)要求MQTT邊緣客戶(hù)端禁用網(wǎng)絡(luò)上的所有入站TCP端口。"這通過(guò)防止互聯(lián)網(wǎng)/內(nèi)聯(lián)網(wǎng)上的潛在攻擊者簡(jiǎn)單地與邊緣設(shè)備建立連接,提供了高水平的安全性"。
雖然這種配置提供了堅(jiān)實(shí)的安全保障,但Nipper指出,它可能為訪問(wèn)邊緣客戶(hù)端進(jìn)行遠(yuǎn)程調(diào)試和配置帶來(lái)挑戰(zhàn)。"他說(shuō):"這些挑戰(zhàn)可以用反向VPN連接來(lái)克服。

邊緣設(shè)備使用的TLS的配置也用于MQTT服務(wù)器。"Nipper說(shuō):"MQTT服務(wù)器以MQTT級(jí)別的用戶(hù)名、密碼和訪問(wèn)控制列表(ACL)的形式進(jìn)一步利用安全措施。"ACL限制哪些設(shè)備將被允許連接到MQTT服務(wù)器。ACL還控制一個(gè)給定的用戶(hù)名/密碼對(duì)可以發(fā)布和訂閱哪些主題,提供進(jìn)一步的安全性。
Nipper補(bǔ)充說(shuō),MQTT服務(wù)器應(yīng)該設(shè)置在DMZ和防火墻后面,只允許兩個(gè)入站的連接端口:8883和443。
由于MQTT服務(wù)器在企業(yè)服務(wù)總線中提供消息傳遞機(jī)制,Nipper指出,MQTT服務(wù)器 "必須符合3.1.1 OASIS標(biāo)準(zhǔn)"。Cirrus Link為此提供了一個(gè)MQTT分銷(xiāo)商和Chariot MQTT服務(wù)器。該公司還提供Chariot MQTT服務(wù)器,以實(shí)現(xiàn)多個(gè)MQTT服務(wù)器的冗余,并為企業(yè)內(nèi)部或云連接的應(yīng)用提供更多的連接客戶(hù)端。

為了重申上面提出的安全建議,Nipper 建議
在傳輸和應(yīng)用層面應(yīng)用以下安全措施。
物理網(wǎng)絡(luò)/VPN,實(shí)現(xiàn)最終的安全。
所有連接都使用CA的證書(shū)憑證進(jìn)行TLS。
在MQTT邊緣客戶(hù)端應(yīng)禁用所有的入站端口。
在MQTT服務(wù)器上應(yīng)該只開(kāi)放兩個(gè)TCP/IP端口(8883和443)。
在MQTT服務(wù)器使用MQTT客戶(hù)端用戶(hù)名/密碼;以及
應(yīng)使用ACL來(lái)限制MQTT客戶(hù)端對(duì)他們可以發(fā)布或訂閱的主題級(jí)別的訪問(wèn)。
安全層級(jí)丨Security Layers
Nipper指出,網(wǎng)絡(luò)安全可以分為三層--每一層都能提供不同程度的安全,以抵御網(wǎng)絡(luò)攻擊。
物理層提供了最高級(jí)別的安全,網(wǎng)絡(luò)與任何外部連接隔離,或被完全封裝在虛擬私人網(wǎng)絡(luò)(VPN)中。
傳輸層使用傳輸層安全(TLS)與來(lái)自證書(shū)機(jī)構(gòu)(CA)的安全證書(shū)憑證,以確保使用公共網(wǎng)絡(luò)的基礎(chǔ)設(shè)施的安全,在這種情況下,為每個(gè)終端設(shè)備設(shè)置離散的VPN是不現(xiàn)實(shí)的,也不符合成本效益。防火墻也可以在傳輸層使用,關(guān)閉遠(yuǎn)程設(shè)備上的所有TCP/IP端口,只允許在中心位置操作所需的最小端口。
第三層是應(yīng)用安全,在Cirrus Link MQTT服務(wù)器內(nèi),通過(guò)訪問(wèn)控制列表(ACL)應(yīng)用用戶(hù)名/密碼驗(yàn)證。
"Nipper說(shuō):"這些層的組合確保了一個(gè)強(qiáng)大的安全I(xiàn)IoT網(wǎng)絡(luò)。
END.
