Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在专用子网后面保护Erlang群集_Amazon Web Services_Security_Erlang - Fatal编程技术网

Amazon web services 如何在专用子网后面保护Erlang群集

Amazon web services 如何在专用子网后面保护Erlang群集,amazon-web-services,security,erlang,Amazon Web Services,Security,Erlang,我正在测试Erlang,有一些关于发行版安全性的问题。(有很多混杂的信息)这些类型的问题有很多与情况相关的观点,取决于你处理的数据类型的个人舒适度。为了解决这个问题,我们假设它是一个简单的聊天服务器,用户可以在其中连接并一起聊天 示例图: 集群将位于私有子网VPC后面,具有弹性负载平衡,将所有连接定向到这些节点(往返)。弹性负载平衡将是这些节点的唯一直接路径(无法通过name@privatesubnet) 我的问题如下: 基于此问题和答案: 有两种不同类型的内部沟通可以发生。或者,使用内置功能直

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

示例图:

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

我的问题如下:

基于此问题和答案:

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

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

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

我想你那边的设置非常“经典”

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

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

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


最后一句话,请不要使用自定义协议在TCP连接上执行任何操作,您将自己实现一些几乎没有Erlang提供的功能,而且在这方面非常棒。最后,您将有相同的限制。

在AWS上,您的EC2节点位于一个私有子网中,您可以非常安全地避免不必要的节点连接。您可以通过尝试(以任何方式)连接到运行代码的计算机来验证这一点:如果您使用的是私有子网,您将无法这样做,因为这些实例甚至无法在子网之外寻址

负载平衡器不应转发Erlang节点流量


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

当您说“您只能允许某些IP(或范围)通过EPMD连接”时,您的意思是添加网关并限制通过防火墙的访问吗?(白名单)我的另一个想法也是您提到的,管理任务,以及连接到集群并执行正常ELB连接无法执行的操作(如检索/删除/验证敏感信息)的外部应用程序。因此,还需要一些需要信任的IP。Erlang的主要问题似乎是不允许用户直接连接到节点。当您说:“使用一些安全组规则,您可以做得比上述更好一些。”您的意思是将集群保持在面向公众的子网中吗?使用ELB(或者可能是路由53专用区)是为了将实例保持在专用子网中,有更好的方法吗?另外,在不使用ELB的情况下,如何将流量路由回已连接的客户端?使用NAT网关?谢谢否,保留专用子网,但添加SGs。这样,如果子网中的非erlang实例受到破坏,它将无法访问群集。这是一个极端的情况,但对我来说是很好的。如果您需要连接到集群进行调试,请进入专用子网(VPN或SSH到跳转框),并允许该专用IP访问“erlang”SG。是的,好的!您的意思是:“您的负载平衡器不应该转发Erlang节点流量。”谢谢!这很有帮助。配置ELB时,您可以打开ELB上的端口,并将它们连接到后端服务器池。例如,您可以在端口9000上运行一些web服务器,并将ELB端口443配置为终止SSL并转发到端口9000。如果您告诉EPMD在端口8000-8500上侦听,则不应让ELB与该端口范围通信。所有外部通信都通过ELB进行,因此,如果ELB无法与用于群集的任何端口通信,则外部通信无法与您群集。