如何保护私有子网后面的Erlang群集

时间:2017-08-13 13:31:38

标签: amazon-web-services security erlang

我正在测试Erlang并且有一些与分发安全性相关的问题。 (那里有很多混合信息)这些类型的问题带有很多与情况相关的意见,并且取决于你正在处理的数据类型的个人舒适程度。为了这个问题,我们假设它是一个简单的聊天服务器,用户可以在这里连接并一起聊天。

示例图:enter image description here

群集将位于私有子网VPC后面,具有弹性负载平衡,指导与这些节点(往返)的所有连接。弹性负载平衡将是这些节点的唯一直接路径(无法通过名称@ privatesubnet连接到节点)。

我的问题如下:

基于这个问题和答案:Distributed erlang security how to?

可以进行两种不同类型的内部沟通。或者,使用内置功能直接连接节点,或使用自定义协议通过TCP连接执行所有操作。第一个是最简单的,但我相信它带来了一些安全问题,我想知道基于上面的图表它是否足够好(呃,好吧,在处理敏感信息时,Good Enough并不总是好的,但总有更好的方法可以做任何事情......)

如何确保私有子网后面的Erlang集群安全?我想隐藏节点,并手动连接它们,当然还要使用cookie。这种方法有什么缺陷吗?由于使用TCP的自定义协议是最佳选择,这对性能有何影响?我想知道潜在的安全漏洞(正如我所说,有很多关于如何做到这一点的混合信息。)

我很想听听以这种方式使用Erlang的人的意见!

2 个答案:

答案 0 :(得分:1)

我认为你在那里有一个非常“经典”的设置。

您不会从Internet连接到群集 - 在ELB“之外”。假设“私有”子网是为其他东西共享的,则只允许某些IP(或范围)通过EPMD连接。

在任何情况下,某些机器必须“信任”才能通过EPMD连接,而其他一些机器只能建立与其他某些端口的连接......否则运行Erlang集群的任何东西都是无用的。

要考虑的事情是:您可能希望(实际上您必须)连接到群集,以便从Internet或其他地方执行某些“管理任务”。我已经看到这是通过SSH完成的; Erlang支持开箱即用。

关于通过自定义协议的TCP连接做所有事情的最后一句话,请不要,你最终会实现自己的东西,几乎没有Erlang提供的东西,它真的很棒的。最后,你将有相同的约束。

答案 1 :(得分:1)

在AWS上,将您的EC2节点置于私有子网中,您可以非常安全地避免与节点建立不必要的连接。您可以通过尝试连接(以任何方式)连接到运行代码的计算机来验证这一点:如果您使用私有子网,则无法执行此操作,因为实例甚至无法在子网外部进行寻址。

您的负载均衡器不应转发Erlang节点流量。

使用某些安全组规则,您可以比上面做得更好。配置节点以使用some range of ports。然后组成一个小组" erlang"允许从" erlang"连接到该端口范围。组否则拒绝连接。最后,将该安全组分配给所有运行Erlang的实例。这可以防止不需要与Erlang交谈的实例能够这样做。