2

这是我的服务器(在 Amazon EC2 中)的样子:

        服务器 1 服务器 2 服务器 3
__________________________ _____________________ _______________
| 云监控守护进程 | | Memcached 守护进程 | | 豆茎 |
| | | Memcached 守护进程 | ________________
| “敌对”用户进程 | / | Memcached 守护进程 |
| “敌对”用户进程 | / | Memcached 守护进程 |
| “敌对”用户进程 | / | Memcached 守护进程 |
| “敌对”用户进程 | / ______________________
| “敌对”用户进程 | /
__________________________

一台服务器上有多个用户进程。然后,每个用户都有自己的 memcached 实例在(单独的)服务器上运行(与许多其他 memcached 实例)。如果没有任何类型的安全性(默认情况下),用户进程 B 可以猜测用户 A 的 memcached 实例的端口并访问它。如何保护这个系统,以便用户 C 只能访问 memcached 实例 C 而不能访问其他(即使 memcached 实例都在同一台服务器上)?我的用户不需要做任何事情来使用安全性(只需像往常一样继续连接到 memcached 端口),这一切都应该由系统自动发生。

此外,服务器上的 Cloud Monitor Daemon 以及“敌对”用户进程需要能够访问远程 beanstalkd 服务器。Beanstalkd 也没有身份验证,所以如果我的 Monitor Daemon 可以访问 beanstalkd,那么“敌对”用户进程也可以,我不希望这样。我怎样才能保护这部分?

4

4 回答 4

2

我最近在一篇文中提到了一些关于保护 memcached 的技巧。对于您的情况,SASL 可能会有很大帮助。

我不知道 beanstalk 是否曾经获得 SASL 支持,但那是一种不同的应用程序。

当然,您可以构建 VPN 或启用 IPSEC 来控制对节点级别所有机器上所有服务的访问。

于 2010-10-18T05:06:40.670 回答
1

您可以在 Server3 本地 IP (127.0.0.1) 上启动 beanstalkd,然后使用从服务器 1 到服务器 3 的 SSH 隧道。将其与 inetd 和 ssh-keys 结合使用以确保故障安全。

于 2010-12-24T01:58:09.610 回答
1

我最终选择了普通的旧 iptables。允许我执行 per-uid 规则,并且非常容易以编程方式配置。最重要的是,用户不需要参与这个过程,他们可以继续使用标准协议而不必处理身份验证,并且 iptables 会丢弃任何不应该去的“顽皮”数据包。

于 2010-12-24T04:12:36.127 回答
1

几周前,亚马逊宣布了我们用来保护 memcached 和 beanstalkd的Amazon VPC (虚拟私有云)。

效果很好!认真推荐它;少了一笔开销来处理我们自己。

于 2011-03-30T21:33:47.273 回答