如何在恶意云环境中保护memcached / beanstalkd?

时间:2010-10-18 04:35:26

标签: security memcached amazon-ec2 cloud beanstalkd

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

        Server 1                    Server 2                  Server 3
__________________________     _____________________      _______________
|  Cloud Monitor Daemon  |    |  Memcached daemon  |      |  beanstalkd  |
|                        |    |  Memcached daemon  |      ________________
| "Hostile" user process | /  |  Memcached daemon  |
| "Hostile" user process | /  |  Memcached daemon  |
| "Hostile" user process | /  |  Memcached daemon  |
| "Hostile" user process | /   ______________________
| "Hostile" user process | /
__________________________

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

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

4 个答案:

答案 0 :(得分:2)

我最近提到了一些关于在blog post中保护memcached的提示。对于您的情况,SASL可能会提供很多帮助。

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

效果很好!认真地推荐它;我们不得不自己处理一个开销。

答案 3 :(得分:0)

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