我正在开发一个项目,将有不受信任的客户端(可能是1000个)全部与中央服务器联系。 消息stream量低,每个客户端彼此不可见(换句话说,他们应该无法彼此交谈或窥探彼此的渠道)。
RabbitMQ在这里似乎是一个很好的select。 它将作为我的应用程序和客户之间的中介。 客户端将直接连接到RMQ,每个都有自己的独立队列,RMQ将代理客户端和服务器之间的消息。
所以我的问题 :假设我设置了所有的东西(大部分)是正确的(身份validation,每个客户端是一个单独的用户,对队列的权限等),RabbitMQ安全这种面向公众的应用程序? 有没有人有任何类似的设置在野外的例子?
作为一个说明性的例子,nginx和sshd被devise成面向公众,而像MongoDB这样的东西实际上不是。 即使我在Mongo上设置了个人用户名和密码,并在个人collections上设置了权限,但是让不信任的客户端直接连接到它,我感到不自在。
即使您正确设置了所有权限,stream氓客户端仍然可以中断RabbitMQ群集(服务器)。 当客户打开很多连接时,可能会发生这种情况。
build议使用某种负载均衡器(例如Haproxy)来保护集群免受此类攻击。