限制通过 IP 访问 RabbitMQ

Restrict access to RabbitMQ via IP

我通过 docker 图像在一台机器上安装了 rabbit mq,包括管理和 rabbitmq_auth_backend_ip_range 插件。我想限制对端口 5671/2 和 15672 的访问,只允许某些 IP 访问它们。

由于 15672 是网络界面,我目前没有解决方案。有什么想法吗?

对于 5671/2(哪个是安全的?)我想使用插件 rabbitmq_auth_backend_ip_range 因为据我所知,这就是它的目的。

我现在的 rabbitmq.config 是这样的:

[
    {rabbit, [
        {auth_backends, [{rabbit_auth_backend_ip_range}]}
    ]},
    {rabbitmq_auth_backend_ip_range, [
        {tag_masks,
            [{'administrator', [<<"::FFFF:192.168.0.0/112">>]}]
        }
    ]}
].

根据 documentation,仅允许标记为 administrator 的帐户访问。但是如果我做一个 telnet 没有任何改变:

telnet ip-address 5672

我可以访问它。您如何通过 telnet 传递凭据? rabbit mq是如何限制ip的?

rabbitmq-auth-backend-ip-range 仅向 login/talk rabbitmq 服务器提供身份验证机制。这并不意味着您的 5672 端口未打开。 您仍然可以在 5672 上远程登录,但如果某些管理员用户尝试连接到 RabbitMQ 服务器,而不是它应该与给定的 IP 地址匹配,否则身份验证失败将 return

对于 RabbitMQ 管理,您可以像这样定义 IP 地址:

{rabbitmq_management, [
        {listener, [{port, 15672}, {ip, "127.0.0.1"}]}
    ]}

Rabbitmq-auth-backend-ip-range link 是基于源 IP 地址的客户端授权的社区插件。使用此社区插件,我们可以根据 IP 地址限制对客户端的访问

在 rabbitmq 版本 3 中配置插件的步骤6.X

[
{rabbit, [
    {tcp_listeners, [5672]},
    {auth_backends, [
        {rabbit_auth_backend_internal,
        [rabbit_auth_backend_internal, rabbit_auth_backend_ip_range]
        }
    ]
    }
]},
{rabbitmq_auth_backend_ip_range, [
    {tag_masks,
        [{'customtag', [<<"::FFFF:172.xx.xx.xxx">>]}]},
    {default_masks, [<<"::0/0">>]}
]}
].
  • 此配置将以这样的方式生效,即具有标签 customtag 的用户将能够连接到具有 IP 地址 172.xx.xx.xxx 的 rabbitmq 服务器,并且所有其他标签可以从任何 IP 地址访问
  • sudo 服务 rabbitmq 服务器重启

PS: 由于网上没有有效的link配置rabbitmq_auth_backend_ip_range插件,所以我用配置步骤回答了这个问题