就运行 Erlang 系统时必须注意的事项而言,这是一个更普遍的问题。例如,我知道原子耗尽攻击。还有哪些其他可能的攻击以及如何使您的系统更安全?
3 回答
运行集群意味着它们共享一个 cookie,如果知道 cookie,它们就可以附加到您的任何节点(假设它们连接到您的网络)并执行任意 Erlang 命令或程序。
所以我的想法是集群意味着至少有两个文件(和一些人)知道 cookie 是什么(或在哪里找到它)。
首先,您希望您的集群处于封闭的 VPN 中(如果它们相距很远并且可能通过 WAN 进行通信)。然后,您想在硬化UNIX
或LINUX
. 另一个重要的想法是关闭所有与集群的 epmd 连接,即使通过使用net_kernel:allow(Nodes).
Erlang Vms 的主要弱点之一(我已经意识到)获得了 cookie 是内存消耗。我认为,如果一个 Erlang 平台为许多用户提供服务并且它没有受到 DOS 攻击的保护,那么它真的很容易受到攻击。您需要限制 Web 服务器允许的并发连接数,以便您可以轻松阻止一些script boys in the neighbourhood
. 另一种情况是分布式/复制Mnesia
整个集群的数据库。Mnesia 复制数据,但我不确定该数据是否已加密。最后,确保您是集群中所有机器的唯一管理员。
我会害怕部署在您系统中的应用程序中的错误。otp 的一个很好的例子是 SSL 应用程序,它在 3 年前被完全重写。接下来是 http 客户端 - 内存泄漏。Xmerl 从来都不是系统的重要组成部分。
此外,小心使用 3rd 方 Erlang 应用程序:新的 Web 服务器(可能比 inets 更好,但如果您不需要所有性能,请考虑稳定的 Yaws),ejabberd - 直接命中操作系统的技术数量,Riak - 与文件系统的交互,ulimit, iostats等