新闻中心
PRESS CENTERNode-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端口直接看到如下页面信息
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-stop
node-red-start
再次登录页面,可以看到需要输入用户名和密码才能登录
启用 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应用安全稳定运行,成为您应用安全的坚实后盾。