以下是我的服务器(在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,那么“敌对”用户也可以进行处理,我不希望这样。我该如何保护这部分?
答案 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>