MQTT安全设计详解

发布于:2024-10-24 编辑:匿名 来源:网络

1简介MQTT(MQ Telemetry Transport,MQ遥测传输)。它是一种发布/订阅、极其简单且轻量级的消息传递协议,设计用于受限设备和低带宽、高延迟或不可靠的网络。

设计原则是尽量减少对网络带宽和设备资源的需求,同时也尽量保证可靠性和一定程度的交付保证。这些原则还使该协议成为“M2M”或“物联网”连接设备的新兴世界以及带宽和电池电量非常宝贵的移动应用的理想选择。

物联网的前景越来越被看好,特别是随着5G的到来,在车联网、车载娱乐(AR等)、智能电网、移动和协作机器人、智能家居等各个领域视频监控、智慧城市等。 5G物联网用例图 IOT ANALYTICS预测,到2020年,全球运行的物联网设备数量将达到342亿台。

各大互联网公司,如亚马逊、微软、阿里巴巴、腾讯、IBM等都推出了物联网云平台。各云平台均支持MQTT协议,支持设备通过MQTT协议直接连接至其云平台。

MQTT 是一种开放协议。我们可以搭建自己的云平台,实现定制化开发。

那么在实现MQTT安全时我们应该注意什么呢?本文从实现 MQTT 协议的 mosquitto 代理的具体示例开始。 IOT ANALYTICS 物联网激活设备趋势预测 图2 安全实现方式 MQTT协议本身支持用户名和密码来实现客户端身份验证,并使用SSL(升级版TLS)对网络数据进行加密(这个与MQTT协议无关)本身会增加网络开销)使用授权管理插件通过Broker配置Topic的读写权限,实现批量级别的用户权限以及Topic的读写权限管理 2.1 使用用户名密码限制连接使用用户名和密码来限制连接,客户端连接broker需要设置broker所需的用户名和密码才能成功连接。

mosquitto.conf: Code language: javascript copy # 指定连接brokerallow_anonymous falsepassword_file {你的密码路径}/passwdfile 的用户名和密码 密码文件生成: Code language: javascript copy mosquitto_passwd [ -c | -D ] 密码文件用户名mosquitto_passwd -b 密码文件用户名密码mosquitto_passwd -U 密码文件 -b 以批处理模式运行。这允许在命令行上提供密码,这很方便,但应谨慎使用,因为密码将在命令行和命令历史记录中可见 -c 创建一个新的密码文件,如果该文件已存在则覆盖该文件。

输入命令后,控制台会提示输入新用户的密码。连续输入两次密码后,密码文件创建完成。

-D 从密码文件中删除指定用户。 -U 此选项可用于使用带有纯字符的哈希密码。

将文本密码密码文件升级/转换为密码文件 2.2 使用SSL(升级版TLS)对网络数据进行加密。使用TLS对网络数据进行加密,需要在配置文件中指定认证文件和密钥文件。

mosquitto.conf:代码语言:javascript copy cafile {您的文件路径}/m2mqtt_ca.crtcertfile {您的文件路径}/m2mqtt_srv.crtkeyfile {您的文件路径}/m2mqtt_srv.key 如何颁发证书,请查看另一篇文章《使用 TLS》 Mosquitto Broker 实现安全通信的密钥和证书生成”; 2.3 配置Broker ACL 通过设置Broker ACL,可以限制指定用户对指定Topic的数据读写权限。mosquitto.conf: Code language: javascript copy # 配置acl_file参数指定acl文件 acl_file {你的文件路径}/aclfileaclfile 文件内容示例: Code language: javascript copy # 以下配置会影响无用户名客户端的访问控制# topic [ read|write|readwrite] topic read $SYS/## 以下配置将影响用户名“roger”的访问控制.user rogertopic foo/bar# 以下配置将影响所有客户端#pattern [读|写| readwrite] pattern write $SYS/broker/connection/%c/state2.4 使用授权管理插件实现批量级别的用户权限和Topic读写权限管理。

使用授权管理插件 ACL 授予订阅和/或发布特定主题。权限),通过与数据库绑定,将身份认证和ACL管理录入数据库,轻松实现用户认证管理。

该插件对数据库mysql和mongodb支持友好。有关如何使用它的具体说明,请参阅 README。

这里仅给出mysql配置示例。mosquitto.conf: 代码语言: javascript copy # 指定插件所需的动态库 auth_plugin /usr/mosquitto/bin/auth-plug.so # 指定后端数据库 auth_opt_backends mysql # 指定数据库主机地址 auth_opt_host localhost # 指定数据库访问端口 auth_opt_port # 指定数据库名称 auth_opt_dbname your_database# 指定数据库访问用户名 auth_opt_user your_username# 指定数据库访问密码 auth_opt_pass your_passwd# 配置认证查询语句 auth_opt_userquery select (case passwd_syncstatus when 'sync' then user_passwd else old_password end) as user_passwd from tbl_mqttuser where user_name='%s'# 配置ACL验证查询语句 auth_opt_aclquery SELECT topic FROM tbl_mqttacls WHERE (user_name = '%s') AND (rw >= %d)# 插件配置的用户名匿名 MQTT 连接时 auth_opt_anonusername anonymouSmysql tbl_mqttuser 和 tbl_mqttacls 两张表数据 示例: 代码语言:javascript copy mysql> select * from tbl_mqttacls;+--------+---------------- -+--------+-- --+| acl_id |用户名 |主题 | rw |+--------+--------------+--------+---- +| 1 |用户_1 | #| 6 || 2 |用户_2 | $SYS/# | 4 |+--------+-------------+--- -----+----set 中的行(0.00 秒)mysql> select * from tbl_mqttuser;+---------+--------------+-------- -------------------------------------------------- ----------+---------------------------------------------------- ----------------------------------+------------- ----- ---+--------------------+|用户 ID |用户名 |用户密码 | old_password??注意:对$SYS系统主题设置权限时,需要注意读写权限,一般来说不会开放写入数据的权限,否则系统主题获取到的数据将不会是正确的统计数据,并且可能已被篡改。

在生产环境中,一般系统主题不会打开。 3 小结 物联网的安全尤为重要。

MQTT 是一种广泛使用的轻量级协议。有很多方法可以实现安全。

MQTT协议本身支持用户名和密码来实现客户端身份验证。 SSL(TLS的升级版)可用于验证网络数据。

加密(这个与MQTT协议本身无关,会增加网络开销)。通过Broker可以配置Topic的读写权限,并使用授权管理插件实现对$SYS系统主题的批量级用户权限和主题读写权限管理。

权限设置需要注意读写权限。一般来说,写数据的权限是不会被授予的。

4 扩展MQTT SYS 主题 MQTT v3.1.1 是较旧的ISO 和OASIS 标准,MQTT v5.0 是OASIS 标准。协议定义了静态主题、必须实现的SYS主题和不需要实现的主题。

静态 SYS 主题:关于静态 $SYS 主题的消息不需要在每个 $SYS 主题更新间隔发送,只需在订阅后发送一次。 **所需主题:** 每个声称支持 $SYS 主题的代理(代理,例如 mosquitto)都应该支持这些主题,并且每个代理都需要支持它。

**可选主题:** 代理可以选择实施这些主题。静态主题包含在必需主题和可选主题中。

必需主题: $SYS/broker/load/bytes/received :自代理启动以来接收到的字节总数。 $SYS/broker/load/bytes/sent :自代理启动以来发送的字节总数。

$SYS/broker/clients/connected :当前连接的客户端数量 $SYS/broker/clients/disconnected :在代理上注册但当前已断开连接的持久客户端总数(禁用干净会话)。 $SYS/broker/clients/maximum :连接到代理的活动客户端的最大数量。

该值仅在更新 $SYS 主题树时计算,因此短期客户端连接可能不会被计算在内。 $SYS/broker/clients/total :当前在代理上连接和注册的持久会话的已连接和已断开连接的客户端总数。

$SYS/broker/messages/received :自代理启动以来收到的任何类型的消息总数。 $SYS/broker/messages/sent :自代理启动以来发送的任何类型的消息总数。

$SYS/broker/messages/publish/dropped :由于传输/排队限制而删除的已发布消息总数。 $SYS/broker/messages/publish/received :自代理启动以来收到的 PUBLISH 消息总数。

$SYS/broker/messages/publish/sent :自代理启动以来发送的 PUBLISH 消息总数。 $SYS/broker/messages/retained/count:代理上活动的保留消息总数。

$SYS/broker/subscriptions/count:代理上的活动订阅总数。 $SYS/broker/uptime:代理上线的时间(以秒为单位) $SYS/broker/version:代理的版本。

静态主题 可选主题: $SYS/broker/time:服务器上的当前时间 $SYS/broker/timestamp:生成此特定版本的代理时的时间戳。静态主题。

MQTT安全设计详解

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 首次发布 -理湃光晶完成数千万元A轮融资

    首次发布 -理湃光晶完成数千万元A轮融资

    据投资界1月25日消息,近日,国内领先量产AR光波导模组公司理湃光晶宣布完成数千万元A轮融资A轮融资。 本轮融资由云晖资本领投,凯风创投、上市公司天一股份(04)跟投,多维海拓担任独家财务顾问。 理湃光晶CEO李伟表示:理湃光晶团队自2016年以来一直专注于光波导技术的研

    06-17

  • 醉鹅娘品牌获数千万元A轮融资,投资方为丰途资本

    醉鹅娘品牌获数千万元A轮融资,投资方为丰途资本

    6月11日消息,醉鹅娘品牌年底完成新一轮A轮融资,获数千万元融资丰途资本投资人民币。 同时木棉资本担任专属财务顾问。 醉鹅娘是一个迎合年轻消费者、捕捉时代情绪的酒类渠道和产品品牌。 作为一名女性企业家,创始人王胜寒也敏锐地感知和把握年轻消费者的需求,通过不断输出

    06-17

  • 蓝帆柏盛一举筹集10亿

    蓝帆柏盛一举筹集10亿

    北京催生超级融资。 投资界获悉,蓝帆医疗心脑血管事业部控股平台蓝帆柏盛宣布再次完成1亿元A2轮融资,并引入北京大兴临空经济区发展基金(有限合伙)。 今年1月,蓝帆柏盛成功引入A1轮9亿元融资。 截至目前,蓝帆柏盛今年已融资10亿元人民币,创下近两年来我国医疗器械领域最

    06-17

  • AC加速器徐勇:天使投资生态倡导者要把畸形的“枣坑”磨成“金字塔”

    AC加速器徐勇:天使投资生态倡导者要把畸形的“枣坑”磨成“金字塔”

    “天使成长营”发起人、高管院长徐勇  “美国有超过30万天使投资人”仅在硅谷就已经有7万多名天使投资人,而在中国天使投资人最活跃的中关村,只有1万左右。 ”“天使成长营”执行官、院长徐勇遗憾地说。 “中国的天使投资人数量不会超过15000人。   中美天使投资环境的差

    06-18

  • 因内忧外患正处于转型期的Intel正在经历这些“阵痛”

    因内忧外患正处于转型期的Intel正在经历这些“阵痛”

    今天Intel公布了今年第一财季的财务报告。 与上一财季相比,该公司当季营收下降8%,净利润下降。 43%的公司还宣布了一项裁员计划,将在全球范围内裁员12000人(占员工总数的11%)。 IntelCEOBrian科再奇对此解释道:“这是为了推动公司从一家面向PC的公司转型为一家支持云和数

    06-18

  • 影视行业品牌传播策略,新世纪机器人教你如何投资

    影视行业品牌传播策略,新世纪机器人教你如何投资

    影视行业发展迅速,是各大品牌推广、植入的绝佳平台。 然而,如何正确地投资该行业的公司产品才能使广告效益最大化。 上海新世纪机器人有限公司(以下简称“新世纪机器人”)近年来频繁跨界出现在荧幕上。 其产品深入人心,吸引大量观众购买。 下面,关于品牌如何投资影视行业

    06-18

  • 10亿,福建院士村基金正式成立

    10亿,福建院士村基金正式成立

    投资界(ID:pedaily)7月8日消息,为深入贯彻落实习近平和总书记在两院院士大会上的重要讲话精神和重要在福建考察期间讲话,坚持“战略工程”思想精髓,充分发挥福建院士村的引领作用,推动院士等高端人才来闽开展项目合作,推动转型升级为发挥成果,服务地方发展,促进国有

    06-18

  • 欧洲公司Toqio获得940万美元种子轮投资

    欧洲公司Toqio获得940万美元种子轮投资

    7月7日消息,据外媒TechCrunch报道,欧洲金融科技公司Toqio获得1万美元种子轮投资,由Seaya和Speedinvest领投。 据悉,本轮资金将用于团队扩张、增加欧洲市场份额以及进军美国市场。 Toqio 由连续创业者 Eduardo Martnez 和 Michael Galvin 于 2007 年创立。 作为金融 SaaS 平

    06-18

  • 可耻的道歉!谷歌云怒推出全新AI TPU、接入Meta大模型、工作助手

    可耻的道歉!谷歌云怒推出全新AI TPU、接入Meta大模型、工作助手

    谷歌“落后了”。 新的AI浪潮下,这家硅谷巨头公司从领导者变成了追随者。 搜巨头显然已经开始反击了。 今年5月的I/O大会上,谷歌展示了与AI相连的“谷歌全家桶”。 要真正超越对手,谷歌最大的战场可能是云计算。 当地时间8月29日,谷歌云在旧金山举行的Next '23大会上宣布了

    06-18

  • 「同程人寿」完成Pre-A、A1轮融资

    「同程人寿」完成Pre-A、A1轮融资

    据投资界5月27日消息,同程人寿近日宣布完成数千万元Pre-A轮及数千万美元融资A轮融资。 同程生活是同程内部孵化的社区团购项目。 于2020年8月正式开业,核心业务包括食品、家居用品及周边服务。 以小店老板和妈妈为团长,覆盖苏州多个区域。 数百个社区的业务量正以每月近%的

    06-18

  • 航天科工孙磊:硬科技成果转化的密码和三个突破点

    航天科工孙磊:硬科技成果转化的密码和三个突破点

    作者|沈周众所周知,技术人员带动的硬科技创新创业比较难以复制和模仿,这对行业发展产生负面影响。 提供指导和支持。 但创头条明白,硬技术成果实现转化非常困难,痛点也非常明显:问题包括创业方向错误、解决方案错误、产品设计或生产,或者最终产业化。 产品“卖不出去”或

    06-18

  • 中海油携手阿里云为南海气田装上“大脑”

    中海油携手阿里云为南海气田装上“大脑”

    据4月23日消息,中海油引入阿里云工业大脑AI,优化南海天然气开发生产,打通天然气井、生产平台、运输管网、包括陆上加工在内的全链路毛细血管,为南海气田复杂地质环境下的生产系统配备了智能“大脑”,协调生产每个气田并延长整体开采周期。 南海气田每年稳定向粤港澳大湾

    06-18