【问题标题】:Securing Node Redis保护节点 Redis
【发布时间】:2016-11-11 17:38:19
【问题描述】:

我正在尝试保护 Node Redis IPC 服务器以使用私钥/公钥。我关注了this tutorial,它使用stunnel,它将Redis使用的隧道包装在SSL层下。

该示例不适用于 Node,但它确实保护了连接,如果我在配置文件中包含认证,我只能连接到服务器,否则连接会被重置。

但是,我无法使用 NodeJS 复制它。在我的服务器计算机上,我有:

var redis = require('redis'); 
var client = redis.createClient();

client.auth('myPassword');
client.publish('instances', 'start');

我的客户端计算机上有:

var redis = require('redis');
var client = redis.createClient();

client.auth('myPassword');
client.subscribe('instances');
client.on('message', function (channel, message) {
  console.log("Got message " + message + " from channel " + channel);
})

但是,无论我是否在我的 stunnel 配置文件中包含认证,这两个设备都会进行通信。如何确保此连接安全?

干杯

【问题讨论】:

  • 可能您在服务器上暴露了非安全端口并与客户端连接到该端口。您必须禁用与服务器上非安全端口的连接。

标签: node.js security ssl redis stunnel


【解决方案1】:

你可以通过在创建客户端时传入 tls 配置来做到这一点

var redis = require("redis");

var client = redis.createClient(6380,'location.of.server', {auth_pass: 'password', tls: {servername: 'location.of.server'}});

【讨论】:

  • 您可能还需要将port 添加到`tls` 选项中。
【解决方案2】:

我也搜索过这个。但是 redis 不需要任何 ssl,因为 in 仅在经过验证的专用网络上运行。使用 stunnel 提供安全性的唯一方法。因为我们可以使用 AUTH 命令启用密码。在 redis 中,他们提供了一个名为 GPG 密钥的密码生成器。它生成了一个 2048 长度的密钥,它将提供安全性。我认为我的回答是相关的。

【讨论】:

  • 虽然在您的情况下“不需要 ssl”可能对您有用,但这不是一个足够广泛的假设。有一些受监管的行业(例如使用 HIPAA 的医疗行业)需要在传输和静止时对数据进行加密,因此需要 TLS。问题不是“我应该保护 redis”,而是如何保护的问题。
猜你喜欢
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 2023-03-22
  • 2020-02-13
相关资源
最近更新 更多