保護(hù)MQTT消息的安全
2021-11-12新聞
選自AutomationWorld丨戴維·格林菲爾德丨內(nèi)容總監(jiān)丨NOV.9.2021
在MQTT通信中使用消息代理解決了一些工業(yè)網(wǎng)絡(luò)安全問題,但不是全部。該技術(shù)的共同發(fā)明者提供了如何確保MQTT通信安全的提示。
MQTT(消息隊列遙測傳輸)架構(gòu)的一個關(guān)鍵方面涉及到使用一個中介服務(wù)器來收集數(shù)據(jù),因為它的變化,從它所連接的設(shè)備。然后,它將這些數(shù)據(jù)點(diǎn)發(fā)布給其他系統(tǒng)或應(yīng)用程序,這些系統(tǒng)或應(yīng)用程序訂閱由服務(wù)器收集的那些特定的數(shù)據(jù)源。因為訂閱的系統(tǒng)或應(yīng)用程序并不直接連接到他們所監(jiān)控的設(shè)備,所以MQTT的信息傳遞結(jié)構(gòu)本身就提供了一些安全級別。
然而,像任何安全措施一樣,這種對設(shè)備和訂閱它們的系統(tǒng)的解耦并不能解決所有潛在的網(wǎng)絡(luò)安全角度。除了服務(wù)器提供的直接斷開連接外,MQTT基礎(chǔ)設(shè)施還支持幾個使用廣泛采用的互聯(lián)網(wǎng)安全方法的選項,如網(wǎng)上銀行中使用的和NIST(美國國家標(biāo)準(zhǔn)與技術(shù)研究院)推薦的安全方法。
要了解MQTT的各種安全措施,首先有助于了解MQTT的IIoT(工業(yè)物聯(lián)網(wǎng))基礎(chǔ)設(shè)施的構(gòu)建模塊。
MQTT邊緣客戶端——這些是工廠或現(xiàn)場的遠(yuǎn)程分布設(shè)備和/或網(wǎng)關(guān),連接到你的過程,以收集數(shù)據(jù)。
MQTT企業(yè)客戶端——這可以是任何需要訂閱MQTT服務(wù)器以接收或發(fā)送IIoT基礎(chǔ)設(shè)施中信息的集中式或遠(yuǎn)程應(yīng)用程序。
MQTT服務(wù)器——這些是集中式服務(wù)器,邊緣和企業(yè)客戶端應(yīng)用程序通過連接來發(fā)送和接收數(shù)據(jù)。
ArlenNipper,CirrusLink公司總裁兼首席技術(shù)官。
Cirrus Link公司總裁兼首席技術(shù)官、MQTT的共同創(chuàng)造者Arlen Nipper解釋說,MQTT邊緣和企業(yè)客戶端都使用相同的安全模型。"他說:"每個人都利用傳輸層安全(TLS)和來自證書機(jī)構(gòu)(CA)的安全證書憑證,在TCP/IP網(wǎng)絡(luò)上啟動一個出站連接。
TLS使用一套公共/私人安全證書,MQTT客戶端必須與MQTT服務(wù)器建立連接,而該連接是由CA認(rèn)證的。這與目前銀行系統(tǒng)使用的安全級別相同,被NIST認(rèn)為是最佳實踐。
Nipper解釋說,MQTT拓?fù)浣Y(jié)構(gòu)的網(wǎng)絡(luò)架構(gòu)要求MQTT邊緣客戶端禁用網(wǎng)絡(luò)上的所有入站TCP端口。"這通過防止互聯(lián)網(wǎng)/內(nèi)聯(lián)網(wǎng)上的潛在攻擊者簡單地與邊緣設(shè)備建立連接,提供了高水平的安全性"。
雖然這種配置提供了堅實的安全保障,但Nipper指出,它可能為訪問邊緣客戶端進(jìn)行遠(yuǎn)程調(diào)試和配置帶來挑戰(zhàn)。"他說:"這些挑戰(zhàn)可以用反向VPN連接來克服。
邊緣設(shè)備使用的TLS的配置也用于MQTT服務(wù)器。"Nipper說:"MQTT服務(wù)器以MQTT級別的用戶名、密碼和訪問控制列表(ACL)的形式進(jìn)一步利用安全措施。"ACL限制哪些設(shè)備將被允許連接到MQTT服務(wù)器。ACL還控制一個給定的用戶名/密碼對可以發(fā)布和訂閱哪些主題,提供進(jìn)一步的安全性。
Nipper補(bǔ)充說,MQTT服務(wù)器應(yīng)該設(shè)置在DMZ和防火墻后面,只允許兩個入站的連接端口:8883和443。
由于MQTT服務(wù)器在企業(yè)服務(wù)總線中提供消息傳遞機(jī)制,Nipper指出,MQTT服務(wù)器 "必須符合3.1.1 OASIS標(biāo)準(zhǔn)"。Cirrus Link為此提供了一個MQTT分銷商和Chariot MQTT服務(wù)器。該公司還提供Chariot MQTT服務(wù)器,以實現(xiàn)多個MQTT服務(wù)器的冗余,并為企業(yè)內(nèi)部或云連接的應(yīng)用提供更多的連接客戶端。
為了重申上面提出的安全建議,Nipper 建議
在傳輸和應(yīng)用層面應(yīng)用以下安全措施。
物理網(wǎng)絡(luò)/VPN,實現(xiàn)最終的安全。
所有連接都使用CA的證書憑證進(jìn)行TLS。
在MQTT邊緣客戶端應(yīng)禁用所有的入站端口。
在MQTT服務(wù)器上應(yīng)該只開放兩個TCP/IP端口(8883和443)。
在MQTT服務(wù)器使用MQTT客戶端用戶名/密碼;以及
應(yīng)使用ACL來限制MQTT客戶端對他們可以發(fā)布或訂閱的主題級別的訪問。
安全層級丨Security Layers
Nipper指出,網(wǎng)絡(luò)安全可以分為三層--每一層都能提供不同程度的安全,以抵御網(wǎng)絡(luò)攻擊。
物理層提供了最高級別的安全,網(wǎng)絡(luò)與任何外部連接隔離,或被完全封裝在虛擬私人網(wǎng)絡(luò)(VPN)中。
傳輸層使用傳輸層安全(TLS)與來自證書機(jī)構(gòu)(CA)的安全證書憑證,以確保使用公共網(wǎng)絡(luò)的基礎(chǔ)設(shè)施的安全,在這種情況下,為每個終端設(shè)備設(shè)置離散的VPN是不現(xiàn)實的,也不符合成本效益。防火墻也可以在傳輸層使用,關(guān)閉遠(yuǎn)程設(shè)備上的所有TCP/IP端口,只允許在中心位置操作所需的最小端口。
第三層是應(yīng)用安全,在Cirrus Link MQTT服務(wù)器內(nèi),通過訪問控制列表(ACL)應(yīng)用用戶名/密碼驗證。
"Nipper說:"這些層的組合確保了一個強(qiáng)大的安全I(xiàn)IoT網(wǎng)絡(luò)。
END.