繁体   English   中英

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

[英]How To Secure Erlang Cluster Behind Private Subnet

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

示例图: 在此输入图像描述

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

我的问题如下:

基于这个问题和答案: 分布式erlang安全性如何?

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

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

我有兴趣听听那些以这种方式使用Erlang的人的意见!

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

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

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

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

关于使用自定义协议在TCP连接做所有事情的最后一句话,请不要,你最终将自己实现一些几乎没有Erlang提供的东西,而且真的非常棒。 最后,你将拥有相同的约束。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM