新闻中心

PRESS CENTER 纵横智控
你的位置: 首页 新闻 技术应用
纵横智控

Node-RED防护-安全管理员密码-限制IP-启用HTTPS

2024-07-02 11:00:06 阅读: 发布人:纵横智控科技

边缘计算网关/物联网平台/网关模块/纵横智控

Node-RED 默认是不需要输入用户名和密码的,其实有一个很简单的管理员登录页面,稍微挡在外面就可以了,默认的方法就是将 settings.js 注释掉,直接打开就可以看到最简单的登录页面了,本文就来介绍一下这个使用特性。

为什么要设置管理员密码

Node-RED 是一个基于浏览器的流编辑工具,默认情况下,任何人只要知道你的 Node-RED 服务器地址就可以访问和修改你的数据流。这种默认的开放设置在开发阶段可能方便,但在生产环境中却带来了巨大的安全隐患。通过设置管理员密码,可以有效防止未经授权的访问和操作


1.使用官方镜像启动Node-RED服务,执行命令如下:

docker run -it -p 1880:1880 -v $PWD/data:/data -e TZ=Asia/Shanghai --name nodered -d nodered/node-red:1.0.4


2.启动服务

liumiaocn:nodered liumiao$ docker run -it -p 1880:1880 -v $PWD/data:/data -e TZ=Asia/Shanghai --name nodered  -d nodered/node-red:1.0.4

6bbf3dad2778b5e631e0ff118a85c1195a3282c2df8cf5ce923d6a5eb38d4760

liumiaocn:nodered liumiao$

 

3.启动后确认服务已经正常启动

liumiaocn:nodered liumiao$ docker ps |grep nodered

6bbf3dad2778        nodered/node-red:1.0.4                         "npm start -- --user…"   11 seconds ago      Up 10 seconds (health: starting)   0.0.0.0:1880->1880/tcp                                                     nodered

liumiaocn:nodered liumiao$


4.启动后在挂载的卷中可以看到以下文件

liumiaocn:nodered liumiao$ ls

data

liumiaocn:nodered liumiao$ cd data

liumiaocn:data liumiao$ ls

lib        package.json   settings.js

liumiaocn:data liumiao$

 

5.无需登录即可通过1880端口直接看到如下页面信息

保护您的Node-RED应用 - 轻松设置安全管理员密码

修改设置

1.打开settings.js文件,找到以下部分注释的内容:

// Securing Node-RED

 // -----------------

 // To password protect the Node-RED editor and admin API, the following

// property can be used. See http://nodered.org/docs/security.html for details.

 //adminAuth: {

 //    type: "credentials",

//    users: [{

//        username: "admin",

//        password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",

//        permissions: "*"

//    }]


2.可以看到这部分内容主要提供了登录Node-RED的用户名和加密密码,由于密码需要硬编码存储,所以这里使用了bcryptj加密,可以使用以下命令生成加密字符串:

执行命令:node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" 密码字符串内容


3.例如这里使用zongheng作为登录密码进行加密:

liumiaocn:data liumiao$ docker exec -it nodered sh

~ $ node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" zongheng

$2a$08$hQ61LJqdzAkjoENzAZyBf.HctKQtjUn0bRMPFbnhhLC2KcwTFLOmy

~ $


4.修改settings.js,修改的内容如下:

119     // Securing Node-RED

120     // -----------------

121     // To password protect the Node-RED editor and admin API, the following

122     // property can be used. See http://nodered.org/docs/security.html for details.

123     adminAuth: {

124         type: "credentials",

125         users: [{

126             username: "admin",

127             password: "$2a$08$hQ61LJqdzAkjoENzAZyBf.HctKQtjUn0bRMPFbnhhLC2KcwTFLOmy",

128             permissions: "*"

129         }]

130     },

重新启动 Node-RED 服务

node-red-stop

node-red-start

访问确认

再次登录页面,可以看到需要输入用户名和密码才能登录

保护您的Node-RED应用 - 轻松设置安全管理员密码

额外的安全设置

启用 HTTPS

为进一步提高安全性,可以为 Node-RED 启用 HTTPS。找到 settings.js 文件中有关 HTTPS 的部分,并进行配置:

https: {

    key: require("fs").readFileSync('/path/to/privatekey.pem'),

    cert: require("fs").readFileSync('/path/to/certificate.pem')

},

限制 IP 访问

你还可以通过配置防火墙或在 Node-RED 中设置访问控制列表(ACL),限制哪些 IP 地址可以访问你的 Node-RED 实例。

结论

作为物联网领域的领先企业,成都纵横智控深知安全对于Node-RED应用的重要性,通过产品和Node-RED的融合创新,为用户打造全方位安全解决方案。设置管理员密码并启用其他安全措施,可有效防止未经授权访问,确保数据和应用程序免受威胁。立即联系纵横智控,让专业团队为您量身定制安全方案,助力Node-RED应用安全稳定运行,成为您应用安全的坚实后盾。

热门产品