NodeJS - 安全地连接到外部redis服务器

时间:2016-06-29 00:43:20

标签: node.js amazon-web-services proxy redis server

在我的主服务器上,我从外部/单独的 redis服务器获取数据,该数据通过可用的api https://localhost:7000/api/?token=****访问。但是token和api并不安全。由于我希望将 redis服务器分开,这种技术并不适合我的情况。

在我的情况下,我希望拥有2台独立服务器 A B
  A 应该从 B 加载数据而不使用api或url调用...而应使用端口(例如//server:123) 。这样,服务器 B 只能从 A 访问。

我希望这种方法适用于开发和生产。 AWS拥​​有"服务器组"我相信,但这只是生产......

那么有没有办法与nodejs建立这种连接?我也想知道这是否只有一台正在运行的服务器,因为我还没有。

注意:如果您想知道,我使用redis存储私钥进行加密,因此我需要一个可以独立控制的安全,独立的服务器

2 个答案:

答案 0 :(得分:2)

由于在不使用API​​的情况下从其他服务器访问数据,所以您要尝试做什么并不是很清楚。您访问它的任何操作都是某种类型的API。

如果你想让服务器A只能访问服务器B,那么你有很多选择可以保证服务器安全:

  1. 访问服务器B时需要进行身份验证,并使其只有服务器A具有这些身份验证凭据。

  2. 假设服务器A和服务器B位于同一服务器基础结构中,请将服务器B API放在外部无法使用的端口上,但只能从服务器基础结构中获取(这通常涉及选择您的防火墙阻止访问的端口。)

  3. 在服务器A上,仅接受来自服务器B的特定IP地址的API连接。

  4. 您甚至可以同时实施多个选项。例如,一起使用1)和2)并不罕见。

答案 1 :(得分:1)

Stunnel就是为此而建的!基本上说它是一个vpn!但不适用于端口机器!它有点复杂,您将不得不处理证书和其他一些事情(配置两台服务器......)但是一旦完成它就可以轻松启动和重用(只需启动它)试一试!

并看到此链接:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ssl-tunnel-using-stunnel-on-ubuntu

您还应该考虑在数据库服务器上添加ip表规则,以便只允许访问您的服务器。

编辑:

请记住,redis旨在用于受信任的环境中。这意味着安全层本身不会是redis,而是您需要设置的第三方软件。

对于开发目的,不需要使这个防弹。即使你愿意,也很难做到。因为您应用的安全性主要取决于将托管您应用的公司的基础架构。

话虽如此,如果您想在localhost环境中保护redis实例。 ip表中的规则只允许localhost访问你的端口6379就足够了。

另一件可能危及redis数据库安全性的事情就是应用程序本身。这一点的一个重要方面是验证一切,这应该是一个良好的开端。

最后,如果你想深入了解一下,请看看这个链接

https://www.digitalocean.com/community/tutorials/how-to-secure-your-redis-installation-on-ubuntu-14-04

希望这有帮助!