Mosquitto 安全加固指南:从匿名访问到多用户 ACL 细粒度权限控制

在 Mosquitto 实例上配置身份验证非常重要,这样未经授权的客户端就无法连接。 在 Mosquitto 2.0 及更高版本中,你必须明确选择身份验证选项,然后客户端才能连接。早期版本中,默认设置是允许客户端无需身份验证即可连接。 身份验证有三种选择:密码文件、身份验证插件和匿名访问。可以使用三个选项的组合。 在 Mosquitto2.0 及更高版本中,可以通过配置文件中将 per_listener_settings 设置为 true,让不同的侦听器使用不同的身份验证方法。 除了身份验证,您还应该考虑访问权限控制,以确定哪些客户端可以访问哪些主题。 密码文件设置 密码文件是一种将用户名和密码存储在单个文件中的简单机制。适合于有相对较少的静态用户。请注意,修改了密码文件后,需要重新加载 mosquitto。 创建密码文件,可以使用mosquitto_passwd工具,命令如下: mosquitto_passwd -c <password file> <username> 请注意,使用-c 标志将覆盖已存在的文件,如果向已存在文件添加,请去掉-c 标志。 要开始使用密码文件,需要配置 broker,在配置文件中,添加如下项: password_file <path to the configuration file> 密码文件必须能够被运行 mosquitto 的用户读取。 身份验证插件设置 如果你需要更多的控制来认证用户,你需要使用认证插件。具体的特性依赖于你使用的认证插件。 可使用的插件: mosquitto-go-auth ,它提供了各种后端来存储用户数据,例如 mysql,postgresql,jwt 或 redis 等。 Dynamic security,动态安全插件,仅适用于 2.0 及更高版本,可提供原创管理的灵活的代理客户端、组和角色。 配置身份验证插件依赖你的 Mosquitto 的版本。 版本 1.6.x 和以前的版本,使用auth_plugin选项。这个选项在版本 2.0 也被支持。 listener 1883 auth_plugin <path to plugin> 版本 2.0 及更高,使用plugin选项。 listener 1883 plugin <path to plugin> 匿名访问设置 配置匿名访问,请使用allow_anonymous选项。 ...

2025-11-01 · 1 min · Eagle